自学内容网 自学内容网

RDD转换算子:分组聚合算子:【groupByKey、 reduceByKey】

1、groupByKey:

功能:

对KV类型的RDD按照Key进行分组,相同K的Value放入一 个集合列表中,返回一个新的RDD

语法:

RDD【K,V】.groupByKey => RDD【K, List[V]

举例:

如何构造sc对象并创建RDD 参考文章:
【Spark中创建RDD的两种方式】Spark中如何获取sc对象、以及创建RDD的两种方式

rdd1 = sc.parallelize([("word", 10), ("word", 5), ("hello", 100), ("hello", 20), ("spark", 1)], numSlices=3)
rdd2 = rdd1.groupByKey()
# 输出结果:("word",List[10,5])  ("hellos",[100,20])  ("spark",[1])
rdd2.foreach(lambda x: print(x[0], *x[1]))
# 其中 * 是打印 list 列表中的所有元素

2、reduceByKey:

功能:

对KV类型的RDD按照Key进行分组,并对相同Key的所有Value使用参数中的reduce函数进行聚合

语法:

def reduceByKey(self,f: (T,T) ->T,numPartitions,partitionFunction) ->RDD[Tuple[K,V]]

举例:

rdd1 = sc.parallelize([("word", 10), ("word", 5), ("hello", 100), ("hello", 20), ("spark", 1)], numSlices=3)
# 其中total是临时变量,记录的是value相加的值,num是每个value的值
rdd2 = rdd1.reduceByKey(lambda total,num: total + num)
# ("word",15)  ("hellos",120)  ("spark",1)
rdd2.foreach(lambda x: print(x[0], x[1]))

原文地址:https://blog.csdn.net/lzhlizihang/article/details/143492042

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!