pyspark.RDD.combineByKey

抽样。 combineByKey ( createCombiner:可调用的[[V], U], mergeValue:调用(U, V), U, mergeCombiners:调用(U, U), U, numPartitions:可选(int) = None, partitionFunc:可调用的[[K], int] = <函数portable_hash > )→pyspark.rdd.RDD(元组(K,U] ]

泛型函数结合的元素为每个聚合函数的主要使用一个自定义组。

把一个抽样[(K、V)]的结果类型抽样(K、C),“组合式”C。

用户提供三个函数:

  • createCombinerV变成一个C(例如,创建一个元素的列表)

  • mergeValue,合并V C(例如,将其添加到列表)

  • mergeCombiners,结合两个C的一个(例如,合并列表)

为了避免内存分配,mergeValue和mergeCombiners都允许修改并返回它们的第一个参数,而不是创建一个新的C。

此外,用户可以控制输出抽样的分区。

笔记

V和C可以是不同的——例如,一个可能组抽样的类型

(Int, Int)成一个抽样的类型(Int, Int[])列表。

例子

> > >x=sc并行化(((“一个”,1),(“b”,1),(“一个”,2)))> > >defto_list(一个):返回(一个]> > >def附加(一个,b):一个附加(b)返回一个> > >def扩展(一个,b):一个扩展(b)返回一个> > >排序(xcombineByKey(to_list,附加,扩展)收集())((“a”, [1,2]), (“b”, [1])]