转化操作

示例数据{{1,2},{3,4},{3,6}}

函数名 目的 示例 结果
reduceByKey(func) 合并具有相同键的值 rdd.reduceByKey((x,y)=>x+y) {{1,2},{3,10}}
groupByKey() 对具有相同键的值进行分组 rdd.groupByKey() {(1,[2]),(3,[4,6])}
combineByKey(createCombiner,mergeValue,mergeCombiners,partitioner) 使用不同的返回类型合并具有相同键的值
mapValues(func) 对pairRDD中的每个值应用一个函数而不改变键 rdd.mapValues(x=>x+1) {(1,3),(3,5),(3,7)}
flatMapValues(func) 对pairRDD中的每个值应用一个返回迭代器的函数,然后对返回的每个元素都生成一个对应原键的键值对记录。通常用于符号化 rdd.flatMapValues(x=>(xto5)) {(1,2),(1,3),(1,4),(1,5),(3,4),(3,5)}
keys() 返回一个仅包含键的RDD rdd.keys(){1,3,3}
values() 返回一个仅包含值的RDD rdd.values(){2,4,6}
sortByKey() 返回一个根据键排序的RDD rdd.sortByKey() {(1,2),(3,4),(3,6)}

针对两个pairRDD的转化操作(rdd={(1,2),(3,4),(3,6)}other={(3,9)})

函数名 目的 示例 结果
subtractByKey 删掉RDD中键与otherRDD中的键相同的元素 rdd.subtractByKey(other) {(1,2)}
join 对两个RDD进行内连接 rdd.join(other) {(3,(4,9)),(3,(6,9))}
rightOuterJoin 对两个RDD进行连接操作,确保第一个RDD的键必须存在(右外连接) rdd.rightOuterJoin(other){(3,(Some(4),9)),(3,(Some(6),9))}
leftOuterJoin 对两个RDD进行连接操作,确保第二个RDD的键必须存在(左外连接) rdd.leftOuterJoin(other){(1,(2,None)),(3,(4,Some(9))),(3,(6,Some(9)))}
cogroup 将两个RDD中拥有相同键的数据分组到一起 rdd.cogroup(other) {(1,([2],[])),(3,([4,6],[9]))}

行为操作

示例数据{(1,2),(3,4),(3,6)}

函数名 目的 示例 结果
countByKey() 对每个键对应的元素分别计数 rdd.countByKey() {(1,1),(3,2)}
collectAsMap() 将结果以映射表的形式返回,以便查询 rdd.collectAsMap() Map{(1,2),(3,4),(3,6)}
lookup(key) 返回给定键对应的所有值 rdd.lookup(3) [4,6]