Spark RDD操作记录(总结一)
创建List
intRDD = sc.parallelize(List(1,2,3,4,5))
过滤包含
stringRDD.filter(_.contains("a")).collect()
去重
stringRDD.distinct.collect()
RDD拆分
val sRDD = intRDD.randomSplit(Array(0.4,0.6))
显示拆分后的RDD
sRDD(0).collect()
奇偶区分
intRDD.groupBy(x => {if (x % 2 == 0) "even" else "old"}).collect()
并集运算
intRDD1.union(intRDD2).union(intRDD3).collect()
++ 运算
(intRDD1 ++ intRDD2 ++ intRDD3).collect()
交集运算
intRDD1.intersection(intRDD2).collect()
差集运算
intRDD1.subtract(intRDD2).collect()
笛卡尔乘积
intRDD1.cartesian(intRDD2).collect()
取第一条数据
intRDD.first
取前两条数据
intRDD.take(2)
从小到大读前三条
intRDD.takeOrdered(3)
从大到小读前三条
intRDD.takeOrdered(3)(Ordering[Int].reverse)
统计 intRDD.stats
最小 min
最大 max
stdev 标准偏差
count 计数
sum 求和
mean 平均
创建范例
val kvRDD1 = sc.parallelize(List((3,4),(3,6),(5,6),(1,2)))
列出所有key值
kvRDD1.keys.collect()
列出所有的value
kvRDD1.values.collect()
列出所有key小于5
kvRDD1.filter{case (key,value) => key < 5}.collect()
value值平方运算
kvRDD1.mapValues(x => x * x ).collect()
按照key小到大排序
kvRDD1.sortByKey(true).collect() //可以不传参数
reduceByKey
kvRDD1.reduceByKey((x,y) => x+y).collect() kvRDD1.reduceByKey(_+_).collect()
join运算
kvRDD1.join(kvRDD2).collect()
读取第一条数据的第一个元素
kvRDD1.first._1
计算每一个key值的条数
kvRDD1.countByKey()
输入key来查找value值
kvRDD1.lookup(3)
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· 对象命名为何需要避免'-er'和'-or'后缀
· JDK 24 发布,新特性解读!
· C# 中比较实用的关键字,基础高频面试题!
· .NET 10 Preview 2 增强了 Blazor 和.NET MAUI
· SQL Server如何跟踪自动统计信息更新?