Spark基础练习题(RDD)

题目如下👇

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将每个分区的数据放到一个数组

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文件中
数据结构:时间戳,省份,城市,用户,广告 字段使用空格分割。
样本如下:
1516609143867 6 7 64 16
1516609143869 9 4 75 18
1516609143869 1 7 87 12

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广播变量
用户表:
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,男

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;

数据依次是:姓名 生日 性别 省份
请使用spark将以上数据写入mysql中,并读取出来

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

create 'student', 'message'
scan 'student', {
   COLUMNS => 'message'}

给出以下数据,请使用spark将数据写入到hbase中的student表中,并进行查询出来
数据如下:
依次是:姓名 班级 性别 省份,对应表中的字段依次是:name,class,sex,province

数据如下👇

因为有几个文件数据较多,所以不方便在这里贴出来,所以把它上传到了百度云上,对应的资源在这里
链接: https://pan.baidu.com/s/1XMdS2BHOdCHaaC8y-OiEOw 提取码: 1234 复制这段内容后打开百度网盘手机App,操作更方便哦

参考答案如下👇

val sc: SparkContext = new SparkContext(new SparkConf().setMaster("local").setAppName("HomeWork20200407"))

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

 val data1 = sc.makeRDD(1 to 10)
 val data1Result = data1.map(_ * 2)

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

 val data2 = sc.makeRDD(10 to 20)
 val data2Result = data2.mapPartitions(_.map(_ * 2))

// 3、创建一个元素为 1-5 的RDD,运用 flatMap创建一个新的 RDD,新的 RDD 为原 RDD 每个元素的 平方和三次方 来组成 1,1,4,8,9,27…

 val data3 = sc.makeRDD(1 to 5)
 val data3Result = data3.flatMap(x => Array(math.pow(x, 2), math.pow(x, 3)))

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

 val data4 = sc.makeRDD(Array(10, 20, 30, 40, 50, 60))
 val data4Result = data4.glom()

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

 val data5 = sc.makeRDD(Array(1, 3, 4, 20, 4, 5, 8))
 val data5Result = data5.groupBy(x => if (x % 2 == 0) "偶数" else "奇数")

// 6、创建一个 RDD(由字符串组成)Array(“xiaoli”, “laoli”, “laowang”, “xiaocang”, “xiaojin

  • 11
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值