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])]