Spark入门(五):键值对RDD
来源:互联网 发布:c二维数组赋值为0 编辑:程序博客网 时间:2024/06/06 23:55
1.创建PairRDD
普通RDD转Pair RDD
val rdd = sc.parallelize(Array("java","scala"))rdd.foreach(println)//java//scalaval pairRdd = rdd.map(w => (w,"编程语言"))pairRdd.foreach(print)//(java,编程语言)//(scala,编程语言)
2.Pair RDD转化操作
2.1 单个Pair RDD转化操作
2.2 编码实例
# 创建测试RDDval pairRdd = sc.parallelize(List((1,2),(1,3),(2,4),(3,5)))# 1.reduceByKey()# 合并相同键的值val reduceByKeyRdd = pairRdd.reduceByKey((x,y) => x+y)reduceByKeyRdd.foreach(println)# (1,5)# (3,5)# (2,4)# 2.groupByKey()val groupByKeyRdd = pairRdd.groupByKey()groupByKeyRdd.foreach(println)# (1,CompactBuffer(2, 3))# (3,CompactBuffer(5))# (2,CompactBuffer(4))# 3.combineByKey(createCombiner,mergeValue,mergeCombiners,partitioner)# createCombiner:如果是一个新的元素,此时使用createCombiner()来创建那个键对应的累加器的初始值。# 如果这是一个在处理当前分区中之前已经存在键,此时combineByKey()使用mergeValue()将该键的累加# 器对应的当前值与这个新值进行合并。# mergeValue: 合并重复的键(这个操作在每个分区内进行)# mergeCombiners: 合并各个分区数据# 计算相同键元素的平均值val combineByKeyRdd = pairRdd.combineByKey((v) => (v, 1),(acc: (Int, Int), v) => (acc._1 + v, acc._2 + 1),(part1: (Int, Int), part2: (Int, Int)) => (part1._1 + part2._1, part1._2 + part2._2)).map{ case (key, value) => (key, value._1 / value._2.toFloat) }combineByKeyRdd.foreach(println)# (1,2.5)# (3,5.0)# (2,4.0)# 4.mapValues(func)# 对每个键的值进行+1操作val mapValuesRdd = pairRdd.mapValues(x => x+1)mapValuesRdd.foreach(println)# (1,3)# (1,4)# (2,5)# (3,6)# 5.flatMapValues(func)# 对每个value值进行迭代到6的操作val flatMapValuesRdd = pairRdd.flatMapValues(x => (x to 6))flatMapValuesRdd.foreach(println)# (1,2)# (1,3)# (1,4)# (1,5)# (1,6)# (1,3)# (1,4)# (1,5)# (1,6)# (2,4)# (2,5)# (2,6)# (3,5)# (3,6)# 6.keys()pairRdd.keys() # 1123# 7.values()pairRdd.values() # 2345# 8.sortByKey()
2.2 两个Pair RDD转化操作
3.Pair RDD行动操作
# countByKey()print(pairRdd.countByKey())# Map(2 -> 1, 1 -> 2, 3 -> 1)# collectAsMap()print(pairRdd.collectAsMap())# Map(2 -> 4, 1 -> 3, 3 -> 5)# lookup()print(pairRdd.lookup(1))WrappedArray(2, 3)
阅读全文
1 0
- Spark入门(五):键值对RDD
- Spark-键值对RDD
- Spark 键值对RDD操作
- spark RDD算子(五)之键值对聚合操作 combineByKey
- Spark 的键值对(pair RDD)操作,Scala实现
- Spark学习之键值对(pair RDD)操作
- spark RDD算子(四)之创建键值对RDD mapToPair flatMapToPair
- Spark学习之键值对(pair RDD)操作(3)
- spark RDD算子(六)之键值对聚合操作reduceByKey,foldByKey,排序操作sortByKey
- spark RDD算子(七)之键值对分组操作 groupByKey,cogroup
- spark RDD算子(八)之键值对关联操作 subtractByKey, join, rightOuterJoin, leftOuterJoin
- 键值对RDD
- Spark之键值RDD转换
- Spark RDD API 参考示例(五)
- Spark RDD/Core 编程 API入门系列之简单移动互联网数据(五)
- Spark基础入门(一)--------RDD基础
- Spark入门(三):RDD概述
- Spark入门(四):RDD基本操作
- [算法与数据结构]
- 写点东西
- Socket operation on non-socket 错误出现有两种情况:
- 牛顿迭代法
- JVM 内存设置大小(Xms Xmx PermSize MaxPermSize 区别)
- Spark入门(五):键值对RDD
- Game of the Rows
- Tensorflow 常用库
- 技术类小tip
- 操作系统常用调度算法
- K
- 【亲测】centos7下添加NuxDextop仓库
- HTML5-旋转木马-遮罩层-电子相册-无缝
- iOS开发之最近的小知识点总结一