在spark算子实战中介绍了Value型Transformation算子,这里将继续介绍Key-Value型Transformation算子,Actions算子将在spark算子实战(三)中介绍。
Key-Value型的Transformation算子
算子 | 说明 |
---|---|
mapValues | 针对[K,V]型的V值进行map操作。 |
combineByKey | 使用用户设置好的聚合函数对每个Key中的Value进行组合(combine),可以将输入类型RDD[(K,V)]转成RDD[(K,C)]。 |
reduceByKey | 对元素为KV对的RDD中Key相同的元素的Value进行binary_function的reduce操作,因此,Key相同的多个元素的值被reduce为一个值,然后与原RDD中的Key组成一个新的KV对。 |
cogroup | 将元素为KV对的两个RDD中Key相同的元素聚合成一个集合。 |
join | 对两个RDD进行内连接操作。 |
leftOuterJoin | 对两个RDD进行连接操作,左外连接。 |
rightOuterJoin | 对两个RDD进行连接操作,右外连接。 |
1.mapValues
实例1
scala代码
val a = sc.parallelize(List(("a", List("apple", "banana", "lemon")), ("b", List("grapes"))))
a.mapValues(x => x.length).collect
结果:
python代码
a = sc.parallelize([("a", ["apple", "banana", "lemon"]), ("b", ["grapes"])])
a.mapValues(lambda x:len(x)).collect()
结果:
实例2
scala代码
val a = sc.parallelize(List((1,"tom"), (2,"lucy"), (3,"alex"), (4,"july"), (5,"alina"), (6,"andy")), 2)
a.mapValues("hello,"+_).collect
结果:
<