2023_Spark_实验十:RDD基础算子操作

Ø练习 1:

Scala 复制代码
//通过并行化生成 rdd

val rdd1 = sc.parallelize(List(5, 6, 4, 7, 3, 8, 2, 9, 1, 10))

//对 rdd1 里的每一个元素乘 2 然后排序

val rdd2 = rdd1.map(_ * 2).sortBy(x => x, true)

//过滤出大于等于十的元素

val rdd3 = rdd2.filter(_ >= 10)

//将元素以数组的方式在客户端显示

rdd3.collect

Ø 练习 2:

Scala 复制代码
val rdd1 = sc.parallelize(Array("a b c", "d e f", "h i j"))

//将 rdd1 里面的每一个元素先切分在压平

val rdd2 = rdd1.flatMap(_.split(' '))

rdd2.collect

Ø 练习 3:

Scala 复制代码
val rdd1 = sc.parallelize(List(5, 6, 4, 3))

val rdd2 = sc.parallelize(List(1, 2, 3, 4))

//求并集

val rdd3 = rdd1.union(rdd2)

//求交集

val rdd4 = rdd1.intersection(rdd2)

//去重

rdd3.distinct.collect

rdd4.collect

Ø 练习 4:

Scala 复制代码
val rdd1 = sc.parallelize(List(("tom", 1), ("jerry", 3), ("kitty", 2)))

val rdd2 = sc.parallelize(List(("jerry", 2), ("tom", 1), ("shuke", 2)))

//求 jion

val rdd3 = rdd1.join(rdd2)

rdd3.collect

//求并集

val rdd4 = rdd1 union rdd2

//按 key 进行分组

val rdd5=rdd4.groupByKey

rdd5.collect

Ø 练习 5:

Scala 复制代码
val rdd1 = sc.parallelize(List(("tom", 1), ("tom", 2), ("jerry", 3), ("kitty", 2)))

val rdd2 = sc.parallelize(List(("jerry", 2), ("tom", 1), ("shuke", 2)))

//cogroup

val rdd3 = rdd1.cogroup(rdd2)

//注意 cogroup 与 groupByKey 的区别

groupByKey

groupByKey会将RDD[key,value]按照相同的key进行分组,形成RDD[key,iterable[value]]的形式,有点类似于sql中的groupby,例如类似于mysql中的group_contact

cogroup

groupByKey是对单个RDD的数据进行分组,还可以使用一个叫作cogroup()的函数对多个共享同一个键的RDD进行分组

例:RDD1.cogroup(RDD2)会将RDD1和RDD2按照相同的key进行分组,得到(key,RDD[key,Iterable[value1],Iterable[value2]])的形式

cogroup也可以多个进行分组

例:RDD1.cogroup(RDD2,RDD3,...RDDN),可以得到

(key,Iterable[value1],Iterable[value2],Iterable[value3],...,Iterable[valueN])

rdd3.collect

Ø 练习 6:

Scala 复制代码
val rdd1 = sc.parallelize(List(1, 2, 3, 4, 5,6,7,8,9,10))

//reduce 聚合

val rdd2 = rdd1.reduce(_ + _)

//rdd2.collect

Ø 练习 7:

Scala 复制代码
val rdd1 = sc.parallelize(List(("tom", 1), ("jerry", 3), ("kitty", 2), ("shuke", 1)))

val rdd2 = sc.parallelize(List(("jerry", 2), ("tom", 3), ("shuke", 2), ("kitty", 5)))

val rdd3 = rdd1.union(rdd2)

//按 key 进行聚合

val rdd4 = rdd3.reduceByKey(_ + _)

rdd4.collect

//按 value 的降序排序

val rdd5 = rdd4.map(t => (t._2, t._1)).sortByKey(false).map(t => (t._2, t._1))

rdd5.collect
相关推荐
B站计算机毕业设计超人1 分钟前
计算机毕业设计hadoop+spark+hive在线教育可视化 课程推荐系统 大数据毕业设计(源码+LW文档+PPT+讲解)
大数据·人工智能·hive·hadoop·scrapy·spark·课程设计
B站计算机毕业设计超人2 分钟前
计算机毕业设计PySpark+Hive+Django小红书评论情感分析 小红书笔记可视化 小红书舆情分析预测系统 大数据毕业设计(源码+LW+PPT+讲解)
大数据·人工智能·hive·爬虫·python·spark·课程设计
2601_949809593 分钟前
flutter_for_openharmony家庭相册app实战+隐私设置实现
android·javascript·flutter
我命由我123455 分钟前
Android 开发 Room 数据库升级问题:A migration from 6 to 7 was required but not found.
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
Lethehong11 分钟前
探索高效工作流的秘密:GLM-4.7 与 Dify 平台深度集成实践
大数据·人工智能·算法
大鳥14 分钟前
第一章 - 数据仓库是什么
大数据·数据库·hive
uesowys19 分钟前
Apache Spark算法开发指导-Random forest classifier
算法·随机森林·spark
2601_9495430122 分钟前
Flutter for OpenHarmony垃圾分类指南App实战:资讯详情实现
android·java·flutter
TM1Club10 小时前
AI驱动的预测:新的竞争优势
大数据·人工智能·经验分享·金融·数据分析·自动化
zhang1338308907510 小时前
CG-09H 超声波风速风向传感器 加热型 ABS材质 重量轻 没有机械部件
大数据·运维·网络·人工智能·自动化