Spark课后练习来了

想要筑建高楼,必先打好地基。学好基础才是走向大牛的关键。废话不多说,各位,请接题。

不好意思,拿错了。下边的才是 ↓ ↓ ↓

文章目录

  • Spark课后练习来了
    • 1、创建一个1-10数组的RDD,将所有元素*2形成新的RDD
    • 2、创建一个10-20数组的RDD,使用mapPartitions将所有元素*2形成新的RDD
    • 3、创建一个元素为 1-5 的RDD,运用 flatMap创建一个新的 RDD,新的 RDD 为原 RDD 每个元素的 平方和三次方 来组成 1,1,4,8,9,27.. 4、创建一个 4 个分区的 RDD数据为Array(10,20,30,40,50,60),使用glom将每个分区的数据放到一个数组
    • 4、创建一个 4 个分区的 RDD数据为Array(10,20,30,40,50,60),使用glom将每个分区的数据放到一个数组
    • 5、创建一个 RDD数据为Array(1, 3, 4, 20, 4, 5, 8),按照元素的奇偶性进行分组
    • 6、创建一个 RDD(由字符串组成)Array("xiaoli", "laoli", "laowang", "xiaocang", "xiaojing", "xiaokong"),过滤出一个新 RDD(包含“xiao”子串)
    • 7、创建一个 RDD数据为1 to 10,请使用sample不放回抽样
    • 8、创建一个 RDD数据为1 to 10,请使用sample放回抽样
    • 9、创建一个 RDD数据为Array(10,10,2,5,3,5,3,6,9,1),对 RDD 中元素执行去重操作
    • 10、创建一个分区数为5的 RDD,数据为0 to 100,之后使用coalesce再重新减少分区的数量至 2
    • 11、创建一个分区数为5的 RDD,数据为0 to 100,之后使用repartition再重新减少分区的数量至 3
    • 12、创建一个 RDD数据为1,3,4,10,4,6,9,20,30,16,请给RDD进行分别进行升序和降序排列
    • 13、创建两个RDD,分别为rdd1和rdd2数据分别为1 to 6和4 to 10,求并集
    • 14、创建两个RDD,分别为rdd1和rdd2数据分别为1 to 6和4 to 10,计算差集,两个都算
    • 15、创建两个RDD,分别为rdd1和rdd2数据分别为1 to 6和4 to 10,计算交集
    • 16、创建两个RDD,分别为rdd1和rdd2数据分别为1 to 6和4 to 10,计算 2 个 RDD 的笛卡尔积
    • 17、创建两个RDD,分别为rdd1和rdd2数据分别为1 to 5和11 to 15,对两个RDD拉链操作
    • 18、创建一个RDD数据为List(("female",1),("male",5),("female",5),("male",2)),请计算出female和male的总数分别为多少
    • 19、创建一个有两个分区的 RDD数据为List(("a",3),("a",2),("c",4),("b",3),("c",6),("c",8)),取出每个分区相同key对应值的最大值,然后相加
    • 20、 创建一个有两个分区的 pairRDD数据为Array(("a", 88), ("b", 95), ("a", 91), ("b", 93), ("a", 95), ("b", 98)),根据 key 计算每种 key 的value的平均值
    • 21、统计出每一个省份广告被点击次数的 TOP3,数据在access.log文件中
    • 22、读取本地文件words.txt,统计出每个单词的个数,保存数据到 hdfs 上
    • 23、读取 people.json 数据的文件, 每行是一个 json 对象,进行解析输出
    • 24、保存一个 SequenceFile 文件,使用spark创建一个RDD数据为Array(("a", 1),("b", 2),("c", 3)),保存为SequenceFile格式的文件到hdfs上
    • 25、读取24题的SequenceFile 文件并输出
    • 26、读写 objectFile 文件,把 RDD 保存为objectFile,RDD数据为Array(("a", 1),("b", 2),("c", 3)),并进行读取出来
    • 27、使用内置累加器计算Accumulator.txt文件中空行的数量
    • 28、使用Spark广播变量
    • 29、mysql创建一个数据库bigdata0407,在此数据库中创建一张表
    • 30、在hbase中创建一个表student,有一个 message列族

1、创建一个1-10数组的RDD,将所有元素*2形成新的RDD

val rdd: RDD[Int] = sc.makeRDD(1 to 10)
val resultOne: RDD[Int] = rdd.map(_ * 2)
println(resultOne.collect().toList)

2、创建一个10-20数组的RDD,使用mapPartitions将所有元素*2形成新的RDD

    val rdd2: RDD[Int] = sc.makeRDD(Array(10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20))val resultTwo: RDD[Int] = rdd2.mapPartitions(x => x.map(_ * 2))println(resultTwo.collect().toList)

3、创建一个元素为 1-5 的RDD,运用 flatMap创建一个新的 RDD,新的 RDD 为原 RDD 每个元素的 平方和三次方 来组成 1,1,4,8,9,27… 4、创建一个 4 个分区的 RDD数据为Array(10,20,30,40,50,60),使用glom将每个分区的数据放到一个数组

 val rdd3: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4, 5))val resultThree: RDD[Int] = rdd3.flatMap(x => Array(x * x, x * x * x))println(resultThree.collect().toList)

4、创建一个 4 个分区的 RDD数据为Array(10,20,30,40,50,60),使用glom将每个分区的数据放到一个数组

    val rdd4: RDD[Int] = sc.makeRDD(Array(10, 20, 30, 40, 50, 60),4)val resultFour: RDD[Array[Int]] = rdd4.glom()resultFour.foreach(x => println(x.toList))

5、创建一个 RDD数据为Array(1, 3, 4, 20, 4, 5, 8),按照元素的奇偶性进行分组

 val rdd5: RDD[Int] = sc.makeRDD(Array(1, 3, 4, 20, 4, 5, 8))val tuples: Array[(String, Iterable[Int])] = rdd5.groupBy(x => if (x % 2 == 0) "even" else "odd").collect()println(tuples.toList)

6、创建一个 RDD(由字符串组成)Array(“xiaoli”, “laoli”, “laowang”, “xiaocang”, “xiaojing”, “xiaokong”),过滤出一个新 RDD(包含“xiao”子串)

 val rdd6: RDD[String] = sc.makeRDD(Array("xiaoli", "laoli", "laowang", "xiaocang", "xiaojing", "xiaokong"))val resultSix: List[String] = rdd6.filter(_.contains("xiao")).collect().toListprintln(resultSix)

7、创建一个 RDD数据为1 to 10,请使用sample不放回抽样

    val rdd7: RDD[Int] = sc.makeRDD(1 to 10)val resultSeven: Array[Int] = rdd7.sample(false, 0.5).collect()println(resultSeven.toList)

8、创建一个 RDD数据为1 to 10,请使用sample放回抽样

   val resultEight: Array[Int] = rdd7.sample(true, 0.5).collect()println(resultEight.toList)

9、创建一个 RDD数据为Array(10,10,2,5,3,5,3,6,9,1),对 RDD 中元素执行去重操作

   val rdd9: RDD[Int] = sc.makeRDD(Array(10, 10, 2, 5, 3, 5, 3, 6, 9, 1))val resultnine: List[Int] = rdd9.distinct().collect().toList
//    println(resultnine)

10、创建一个分区数为5的 RDD,数据为0 to 100,之后使用coalesce再重新减少分区的数量至 2

   val rdd10: RDD[Int] = sc.makeRDD(0 to 100, 5)val resultTen: RDD[Int] = rdd10.coalesce(2)

11、创建一个分区数为5的 RDD,数据为0 to 100,之后使用repartition再重新减少分区的数量至 3

  val rdd11: RDD[Int] = sc.makeRDD(0 to 100, 5)rdd11.repartition(3)

12、创建一个 RDD数据为1,3,4,10,4,6,9,20,30,16,请给RDD进行分别进行升序和降序排列

    val rdd12: RDD[Int] = sc.makeRDD(List(1, 3, 4, 10, 4, 6, 9, 20, 30, 16))val resultTwelve: List[Int] = rdd12.sortBy(x => x).collect().toList
//    println(resultTwelve)

13、创建两个RDD,分别为rdd1和rdd2数据分别为1 to 6和4 to 10,求并集

    val rdd13: RDD[Int] = sc.makeRDD(1 to 6)val rdd1301: RDD[Int] = sc makeRDD (1 to 10)val resultThirteen: List[Int] = rdd13.union(rdd1301).collect().toList
//    println(resultThirteen)

14、创建两个RDD,分别为rdd1和rdd2数据分别为1 to 6和4 to 10,计算差集,两个都算

    val rdd14: RDD[Int] = sc.makeRDD(1 to 6)val rdd1401: RDD[Int] = sc makeRDD (4 to 10)val resultFourteen: List[Int] = rdd14.subtract(rdd1401).collect().toList
//    println(resultFourteen)

15、创建两个RDD,分别为rdd1和rdd2数据分别为1 to 6和4 to 10,计算交集

   val rdd15: RDD[Int] = sc.makeRDD(1 to 6)val rdd1501: RDD[Int] = sc makeRDD (4 to 10)val resultfifteen: List[Int] = rdd14.intersection(rdd1501).collect().toList
//    println(resultfifteen)

16、创建两个RDD,分别为rdd1和rdd2数据分别为1 to 6和4 to 10,计算 2 个 RDD 的笛卡尔积

    val rdd16: RDD[Int] = sc.makeRDD(1 to 6)val rdd1601: RDD[Int] = sc makeRDD (4 to 10)val resultSixteen: List[(Int, Int)] = rdd16.cartesian(rdd1601).collect().toList
//    println(resultSixteen)

17、创建两个RDD,分别为rdd1和rdd2数据分别为1 to 5和11 to 15,对两个RDD拉链操作

    val rdd17: RDD[Int] = sc.makeRDD(1 to 5)val rdd1701: RDD[Int] = sc.makeRDD(11 to 15)val resultSevenTeen: List[(Int, Int)] = rdd17.zip(rdd1701).collect().toListprintln(resultSevenTeen)

18、创建一个RDD数据为List((“female”,1),(“male”,5),(“female”,5),(“male”,2)),请计算出female和male的总数分别为多少

    val rdd18: RDD[(String, Int)] = sc.makeRDD(List(("female", 1), ("male", 5), ("female", 5), ("male", 2)))val eighteen: List[(String, Int)] = rdd18.groupByKey().map(x => (x._1, x._2.size)).collect().toListprintln(eighteen)

19、创建一个有两个分区的 RDD数据为List((“a”,3),(“a”,2),(“c”,4),(“b”,3),(“c”,6),(“c”,8)),取出每个分区相同key对应值的最大值,然后相加

    val rdd19: RDD[(String, Int)] = sc.makeRDD(List(("a", 3), ("a", 2), ("c", 4), ("b", 3), ("c", 6), ("c", 8)),2)val nineteen: RDD[(String, Int)] = rdd19.aggregateByKey(0)(math.max(_, _), _ + _)

20、 创建一个有两个分区的 pairRDD数据为Array((“a”, 88), (“b”, 95), (“a”, 91), (“b”, 93), (“a”, 95), (“b”, 98)),根据 key 计算每种 key 的value的平均值

    val rdd20: RDD[(String, Int)] = sc.makeRDD(Array(("a", 88), ("b", 95), ("a", 91), ("b", 93), ("a", 95), ("b", 98)), 2)val value: RDD[(String, Double)] = rdd20.groupByKey().map(x => (x._1, (x._2.sum / x._2.size).toDouble))
//    println(value.collect().toList)

21、统计出每一个省份广告被点击次数的 TOP3,数据在access.log文件中

*数据结构:时间戳,省份,城市,用户,广告 字段使用空格分割。
样本如下:
1516609143867 6 7 64 16
1516609143869 9 4 75 18
1516609143869 1 7 87 12

val rdd21: RDD[String] = sc.textFile("input/access.log")//先统计每个省份广告的被点击次数   (省份 -> 广告) 1,val provinceAdToOne = rdd21.map { x =>val fields: Array[String] = x.split(" ")((fields(1), fields(4)), 1)}//计算每个省中每个广告被点击的总数:((省份,广告),总和)val provinceAdToSum = provinceAdToOne.reduceByKey(_ + _)//将省份作为key,广告加点击数为value:(省份,(广告,总和))val provinceToAdSum = provinceAdToSum.map(x => (x._1._1, (x._1._2, x._2)))//将同一个省份的所有广告进行聚合(省份,List((广告,总和),(广告,总和)...))val provinceGroup = provinceToAdSum.groupByKey()//对同一个省份所有广告的集合进行排序并取前3条,排序规则为广告点击总数,如果需要按照省份ID排序,代码结尾可以添加".sortByKey()"val provinceAdTop3 = provinceGroup.mapValues { x =>x.toList.sortWith((x, y) => x._2 > y._2).take(3)}//将数据拉取到Driver端并打印provinceAdTop3.collect().foreach(println)

22、读取本地文件words.txt,统计出每个单词的个数,保存数据到 hdfs 上

val resultTwentyOne: RDD[(String, Int)] = sc.textFile("word").flatMap(_.split(" ")).map(x => (x, 1)).reduceByKey(_ + _)
//    resultTwentyOne.saveAsTextFile("hdfs://192.168.100.201:8020/wordCount")
//    println(resultTwentyOne.collect().toList)

23、读取 people.json 数据的文件, 每行是一个 json 对象,进行解析输出

  val file3 = sc.textFile("json/people.json")val result: RDD[Option[Any]] = file3.map(JSON.parseFull)
//    println(result.collect().toList)

24、保存一个 SequenceFile 文件,使用spark创建一个RDD数据为Array((“a”, 1),(“b”, 2),(“c”, 3)),保存为SequenceFile格式的文件到hdfs上

    val rdd24 = sc.makeRDD(Array(("a", 1), ("b", 2), ("c", 3)))
//    rdd24.saveAsSequenceFile("hdfs://192.168.100.201:8020/sequenceFile")

25、读取24题的SequenceFile 文件并输出

    val rdd25 = sc.sequenceFile[String,Int]("hdfs://192.168.100.201:8020/sequenceFile/part-00001")val resultTwentyFive: List[(String, Int)] = rdd25.collect().toList
//        println(resultTwentyFive)

26、读写 objectFile 文件,把 RDD 保存为objectFile,RDD数据为Array((“a”, 1),(“b”, 2),(“c”, 3)),并进行读取出来

    val rdd26 = sc.makeRDD(Array(("a", 1), ("b", 2), ("c", 3)))
//    rdd26.saveAsObjectFile("outputObject")val rdd2601 = sc.textFile("outputObject")
//    println(rdd2601.collect().toList)

27、使用内置累加器计算Accumulator.txt文件中空行的数量

    val rdd27: RDD[String] = sc.textFile("Accumulator")var count = sc.longAccumulator("count")rdd27.foreach { x => if (x == "") count.add(1) }println(count.value)

28、使用Spark广播变量

用户表:
id name age gender(0|1)
001,刘向前,18,0
002,冯 剑,28,1
003,李志杰,38,0
004,郭 鹏,48,2
要求,输出用户信息,gender必须为男或者女,不能为0,1
使用广播变量把Map(“0” -> “女”, “1” -> “男”)设置为广播变量,最终输出格式为
001,刘向前,18,女
003,李志杰,38,女
002,冯 剑,28,男
004,郭 鹏,48,男

   val rdd28: RDD[String] = sc.textFile("user")val broadcastMap: Broadcast[Map[String, String]] = sc.broadcast(Map(("0" -> "女"), ("1" -> "男")))def broadcastDef(sex:String): String ={if (sex =="0" || sex=="1")broadcastMap.value(sex)else"未知性别"}

29、mysql创建一个数据库bigdata0407,在此数据库中创建一张表

CREATE TABLE user (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(32) NOT NULL COMMENT ‘用户名称’,
birthday date DEFAULT NULL COMMENT ‘生日’,
sex char(1) DEFAULT NULL COMMENT ‘性别’,
address varchar(256) DEFAULT NULL COMMENT ‘地址’,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
数据如下:
依次是:姓名 生日 性别 省份
安荷 1998/2/7 女 江苏省
白秋 2000/3/7 女 天津市
雪莲 1998/6/7 女 湖北省
宾白 1999/7/3 男 河北省
宾实 2000/8/7 男 河北省
斌斌 1998/3/7 男 江苏省
请使用spark将以上数据写入mysql中,并读取出来。

package com.czxy.homeworkOneimport java.sql.{Connection, DriverManager, PreparedStatement}import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.{JdbcRDD, RDD}object demo29 {def main(args: Array[String]): Unit = {//1.设置Spark的运行环境val config = new SparkConf().setMaster("local[*]")setAppName("sparkConf")//2.创建spark的上下文对象, 与clusterManager进行通信。分配管理任务val sc: SparkContext = new SparkContext(config)//准备一些数据,插入mysqlval data: RDD[(String, String, String, String)] = sc.makeRDD(List(("安荷", "1998/2/7", "女", "河北省"), ("白秋", "2000/3/7", "女", "天津市"), ("雪莲", "1998/6/7", "女", "湖北省"), ("宾白", "1998/6/7", "女", "河北省"), ("宾实", "2000/8/7", "男", "河北省"), ("斌斌", "1998/3/7", "男", "江苏省")))data.foreachPartition(insertToMysql)//    checkData(sc)}def checkData(sc:SparkContext)={//设置与mysql的连接//第一个参数:指定需要连接的数据库//第二个参数:用户名//第三个参数:密码def getConn(): Connection = {DriverManager.getConnection("jdbc:mysql://localhost:3306/bigdata?characterEncoding=UTF-8", "root", "root")}//通过连接获取数据//第一个参数:获取与spark上下文的连接//第二个参数:建立到给定数据库URL的连接//第三个参数:需要执行的sql语句//第四个参数:第一个占位符的最小值//第五个参数:第二个占位符的最大值//第六个参数:分区数量//第七个参数:获取到从ResultSet到所需结果类型的单行的函数。var sql = "select * from user where id >= ? and id <= ?;"val infoRDD: JdbcRDD[(Int, String, String,String,String)] =  new JdbcRDD(sc,getConn,sql,4,6,2,rs =>{val id: Int = rs.getInt("id")val name: String = rs.getString("name")val birthday: String = rs.getString("birthday")val sex: String = rs.getString("sex")val address: String = rs.getString("address")(id,name,birthday,sex,address)})println(infoRDD.collect().toList)}/*** 插入数据到mysql中* @param partitionData*/def insertToMysql(partitionData:Iterator[(String,String,String,String)]) ={//将数据存入到Mysql//获取连接val conn: Connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/bigdata?characterEncoding=UTF-8", "root", "root")//遍历每个分区内的数据,把数据插入到mysql中partitionData.foreach(data => {val sql ="INSERT INTO `user` VALUES (NULL, ?, ?, ?, ?);"//执行sqlval ps: PreparedStatement = conn.prepareStatement(sql)ps.setString(1,data._1)ps.setString(2,data._2)ps.setString(3,data._3)ps.setString(4,data._4)//提交并执行ps.execute()})//关闭连接conn.close()}}

30、在hbase中创建一个表student,有一个 message列族

create ‘student’, ‘message’
scan ‘student’, {COLUMNS => ‘message’}
给出以下数据,请使用spark将数据写入到hbase中的student表中,并进行查询出来
数据如下:
依次是:姓名 班级 性别 省份,对应表中的字段依次是:name,class,sex,province
飞松 3 女 山东省
刚洁 1 男 深圳市
格格 4 女 四川省
谷菱 5 女 河北省
国立 2 男 四川省
海涛 3 男 广东省
含芙 3 女 四川省
华敏 4 女 上海市
乐和 2 男 上海市
乐家 3 男 黑龙江
乐康 4 男 湖北省
乐人 5 男 四川省
乐水 3 男 北京市
乐天 4 男 河北省
乐童 5 男 江苏省
乐贤 1 男 陕西省
乐音 2 男 广东省
李仁 3 男 湖北省
立涛 3 女 陕西省
凌青 4 女 湖北省
陆涛 4 男 山东省
媚媚 5 女 河南省
梦亿 4 男 江苏省
铭忠 5 男 四川省
慕梅 3 女 北京市
鹏吉 1 男 上海市
娉婷 4 女 河南省
淇峰 2 男 广东省
庆元 3 男 上海市
庆滋 4 男 北京市
丘东 5 男 江苏省
荣郑 1 男 黑龙江
蕊蕊 5 女 四川省
尚凯 2 男 北京市
诗涵 1 女 河南省
淑凤 2 女 天津市
淑娇 3 女 上海市
淑燕 4 女 河北省
淑怡 4 女 广东省
思璇 2 女 湖北省
苏华 3 女 山东省
苏梅 4 女 四川省
听荷 5 女 深圳市
文怡 1 女 天津市
文怡 2 女 河北省
香凝 3 女 山东省
翔云 4 女 河南省
小芸 5 女 深圳市

package com.czxy.homeworkOneimport org.apache.hadoop.hbase.{HBaseConfiguration, HColumnDescriptor, HTableDescriptor, TableName}
import org.apache.hadoop.hbase.client.{HBaseAdmin, Put, Result}
import org.apache.hadoop.hbase.io.ImmutableBytesWritable
import org.apache.hadoop.hbase.mapred.TableOutputFormat
import org.apache.hadoop.hbase.mapreduce.TableInputFormat
import org.apache.hadoop.hbase.util.Bytes
import org.apache.hadoop.mapred.JobConf
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDDobject demo30 {def main(args: Array[String]): Unit = {//1.设置Spark的运行环境val config = new SparkConf().setAppName("DataSourceTest").setMaster("local[*]")//2.创建spark的上下文对象, 与clusterManager进行通信。分配管理任务val sc = new SparkContext(config)//设置日志级别sc.setLogLevel("WARN")////创建  HBase所需的环境配置val conf = HBaseConfiguration.create()//设置连接conf.set("hbase.zookeeper.quorum", "node01:2181,node02:2181,node03:2181")//设置需要操作的表val studentTable = TableName.valueOf("student")//获取表的描述val tableDescr = new HTableDescriptor(studentTable)//添加列族tableDescr.addFamily(new HColumnDescriptor("message".getBytes))//创建Hbase的管理对象val admin = new HBaseAdmin(conf)//如果表已存在就先禁用表,然后删除表if (admin.tableExists(studentTable)) {admin.disableTable(studentTable)admin.deleteTable(studentTable)}//创建表admin.createTable(tableDescr)//给列族添加列def convert(triple: (String, String, String,String)) = {val put = new Put(Bytes.toBytes(triple._1))put.addImmutable(Bytes.toBytes("message"), Bytes.toBytes("classes"), Bytes.toBytes(triple._2))put.addImmutable(Bytes.toBytes("message"), Bytes.toBytes("sex"), Bytes.toBytes(triple._3))put.addImmutable(Bytes.toBytes("message"), Bytes.toBytes("address"), Bytes.toBytes(triple._4))(new ImmutableBytesWritable, put)}//准备一批数据添加到表中//    val dataRDD: RDD[(String, String, String)] = sc.parallelize(List(("1","apple","11"), ("2","banana","12"), ("3","pear","13")))val rdd30: RDD[Array[String]] = sc.textFile("info").map(_.split("\t"))val list: List[List[(String, String, String, String)]] = rdd30.map(x => List((x(0), x(1), x(2), x(3)))).collect().toListval flatten: List[(String, String, String, String)] = list.flattenval dataRDD: RDD[(String, String, String, String)] = sc.parallelize(flatten)val targetRDD: RDD[(ImmutableBytesWritable, Put)] = dataRDD.map(convert)//构造一个map/reduce得作业配置val jobConf = new JobConf(conf)//设置mapreduce 的输出位置jobConf.setOutputFormat(classOf[TableOutputFormat])jobConf.set(TableOutputFormat.OUTPUT_TABLE, "student")//使用Hadoop JobConf对象将RDD输出到任何Hadoop支持的存储系统targetRDD.saveAsHadoopDataset(jobConf)println("写入数据成功")//读取数据conf.set(TableInputFormat.INPUT_TABLE, "student")//使用InputFormat获取给定Hadoop文件的RDD//和传递到输入格式的额外配置选项。val hbaseRDD: RDD[(ImmutableBytesWritable, Result)] = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat],classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],classOf[org.apache.hadoop.hbase.client.Result])//返回rdd的数量val count: Long = hbaseRDD.count()println("hBaseRDD RDD Count:"+ count)//遍历查询表中的数据hbaseRDD.foreach {case (_, result) =>val key = Bytes.toString(result.getRow)val classes = Bytes.toString(result.getValue("message".getBytes, "classes".getBytes))val sex = Bytes.toString(result.getValue("message".getBytes, "sex".getBytes))val address = Bytes.toString(result.getValue("message".getBytes, "address".getBytes))println("Row key:" + key + ", Name:" + key + ", class:" + classes+", address:"+address)}sc.stop()}}

好了,以上内容到这里就结束了。各位的点赞、关注 就是小编坚持下去的动力。我们下期见哦~~~

我是小哪吒。一个互联网行业的业余选手 …

贪图省力的船夫,目标永远下游

Spark课后练习来了相关推荐

  1. 《大数据基础——基于Hadoop与Spark》课后习题——第一章部分答案

    仅用于我个人的学习.书籍为人民邮电出版社的<大数据技术基础--基于Hadoop与Spark>.课后习题选择是我个人认为有用的.记录下来是为了督促我学习:) 共好 1.请指出以下术语的基本含 ...

  2. 《Spark大数据技术与应用》肖芳 张良均著——课后习题

    目录 教材 知识汇总+课后习题 第一章 Spark概述 Spark的特点 Spark生态圈 Spark应用场景 `第二章 Scala基础` `匿名函数` Set Map `map` `flatMap` ...

  3. 曹洁 Spark编程Scala版本课后习题答案

    第二章课后习题 2-1 选D D项错在元组可以定义多个元素,通过(x,x,x,-) 2-2 选A A错在 元组的访问方式是 x._1来访问元组中的第一个元素.注意是从下标1开始的,数组是从下标0开始的 ...

  4. 大数据技术原理与应用—第10讲 Spark(林子雨老师)课后习题

    以下是慕课上林子雨老师,大数据原理及应用的第十讲习题答案.仅供大家学习参考. 10.RDD,中文全称是 (==弹性分布式数据 ==),是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型. 多 ...

  5. Flink 还是 Spark?阿里技术专家一语道破真相!

    身为大数据工程师,你还在苦学Spark.Hadoop.Storm,却还没搞过Flink?醒醒吧!刚过去的2020双11,阿里在Flink实时计算技术的驱动下全程保持了"如丝般顺滑" ...

  6. 再见,Spark!Flink已成气候!

    身为大数据工程师,你还在苦学Spark.Hadoop.Storm,却还没搞过Flink?醒醒吧!刚过去的2020双11,阿里在Flink实时计算技术的驱动下全程保持了"如丝般顺滑" ...

  7. Spark基础学习笔记10:Scala集成开发环境

    文章目录 零.本讲学习目标 一.搭建Scala的Eclipse开发环境 (一)安装Scala插件 (二)创建Scala项目 二.搭建Scala的IntelliJ IDEA开发环境 (一)启动IDEA ...

  8. Spark基础学习笔记08:Scala简介与安装

    文章目录 零.本讲学习目标 一.Scala简介 (一)Scala概述 (二)函数式编程 (三)Scala特性 1.一切都是对象 2.一切都是函数 3.一切都是表达式 (四)在线运行Scala 二.选择 ...

  9. Spark基础学习笔记01:初步了解Spark

    文章目录 零.本讲学习目标 一.大数据开发总体架构 二.Spark简介 三.Spark发展史 四.Spark特点 (一)快速 (二)易用 (三)通用 (四)随处运行 (五)代码简洁 1.采用MR实现词 ...

最新文章

  1. 利用ssh+rsync+inotify实现数据的异地实时同步
  2. 组件通信 eventtBus
  3. Python爬取某旅游网站中的中国城市信息
  4. Puppeteer设置浏览器代理的三种思路
  5. 代码流星雨是什么形式_为什么要在2020年与流星合作
  6. Freezer - 备份云硬盘实现
  7. LRU的两种实现方案
  8. Navicat Premium 15 连接Oracle数据库解决方案
  9. 上海大学计算机学院师资力量,计算机学院张瑞老师荣获第二届上海高校青年教师教学竞赛决赛二等奖...
  10. Servlet打印HTML页面乱码问题
  11. 二维图像(数组)的fftshift
  12. 后疫情时代,引发户外烧烤的热潮,星淘惠建议卖家可针对布局
  13. linux公社_如何在Linux上搭建个人流媒体服务器
  14. 行业顶级NoSQL成员坐阵,NoSQL数据库专场重点解析!
  15. 全面了解ADSL,让你上网更轻松
  16. java 8中Comparator.comparing和reversed
  17. 纯jquery 前端导入 Excel数据 减少服务端压力
  18. 【报告分享】中国消费者洞察报告-领航前所未有(附下载)
  19. Volume Compute In SIMT Hardware Architecture
  20. 解决myeclipse中 保存代码时resetting selection耗时操作

热门文章

  1. 修改el-table表格单元格边框颜色
  2. yolov5转换成rknn模型----预编译方法
  3. Autoware速腾16线激光雷达定位若干问题
  4. oracle 112040,Oracle 11.2.0.4 For Linux 64bit+32bit 11Gu4数据库介质百度云
  5. CDH修改静态资源池配置,NodeManager重启失败问题
  6. Fluent 熔化固化模型学习(melting and solidification)
  7. 百度MIP组件使用方法:mip-list mip-infinitescroll等
  8. 2018年湖北纪检监察机关查处厅局级干部案件101件
  9. 说说我在工作中如何开展接口测试?
  10. 美国的工薪族阶层只承担全国个税”总量的5%