spark-RDD-练习

Spark RDD应用综合练习1

针对该news文件(参见附件news):
(1) 计算并显示每个单词出现的次数(以空格隔开的字符串均被视作“单词”),并查看统计结果中单词“Xiongan”(即中文的“雄安”)出现的次数;
在这里插入图片描述
(2) 显示该文件中包含单词“Xiongan”的行,且输出行数;
在这里插入图片描述
(3) 该文件中包含单词“Xiongan”的行占总行数的比例;
在这里插入图片描述
(4)统计文中空白行出现的次数;
在这里插入图片描述
(4) 统计文章的总单词数。
在这里插入图片描述

Spark RDD应用综合练习2

在这里插入图片描述
(1) 把附件Data01.txt放在~目录下。执行hadoop命令,将该文件拷贝至集群HDFS /目录之下
在这里插入图片描述
(2)执行并解释如下语句的功能
在这里插入图片描述
//从hdfs文件系统中读取Data01.txt文件,未分片,默认分区为2,文件的每一行作为一条记录
在这里插入图片描述
//对每一行进行“,”切分,取第一个单词
在这里插入图片描述
//学生姓名去重
在这里插入图片描述
//计数

(3) 编写语句,统计该系共开设了多少门课程。
在这里插入图片描述
(4)执行并逐条解释下列方框中语句的功能
//读取文件,每行为一个元素

val lines = sc.textFile(“hdfs://localhost:9000/user/hadoop/Data01.txt”)

//过滤找出姓名为Tom的元素,打印输出

val pare = lines.filter(row=>row.split(",")(0)==“Tom”)
pare.foreach(println)

//对每一个元素,保留姓名和转换后的分数,打印输出

val xx1 = pare.map(row=>(row.split(",")(0),row.split(",")(2).toInt))
xx1.foreach(println)

//将value映射成(value,1)元组,打印输出

val xx2 = xx1.mapValues(x=>(x,1))
xx2.foreach(println)

//合并成绩和课程数,打印输出

val xx3 = xx2.reduceByKey((x,y) => (x._1+y._1, x._2+y._2))
xx3.foreach(println)

//求平均分,打印输出后,并打包成数组返回

val xx4 = xx3.mapValues(x => (x._1 / x._2)) xx4.foreach(println)
xx4.collect()

运行结果:
在这里插入图片描述
在这里插入图片描述

Scala程序编写、打包与提交运行

初始化

在这里插入图片描述
在这里插入图片描述

建立目录,编写文件

在这里插入图片描述

Jar包

在这里插入图片描述
在这里插入图片描述

运行

在这里插入图片描述

总结

1,Spark的惰性机制,转换操作只在于构建GAD,未实施运算,只有动作操作才进行计算

2,通过持久化(缓存)机制避免重复计算的开销,将必要中间结果持久化到内存,
persist()或cache()方法将RDD标记为要保留
清除缓存那么可以使用unpersist()方法

3,sbt 是一个项目构建工具,和maven类似,适合scala项目构建,

参考

(1) http://spark.apache.org/docs/latest/rdd-programming-guide.html#transformations ;
(2) http://dblab.xmu.edu.cn/blog/1312-2/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Ma.01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值