當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python pyspark RDD.combineByKey用法及代碼示例


本文簡要介紹 pyspark.RDD.combineByKey 的用法。

用法:

RDD.combineByKey(createCombiner, mergeValue, mergeCombiners, numPartitions=None, partitionFunc=<function portable_hash>)

使用一組自定義聚合函數組合每個鍵的元素的通用函數。

對於“combined type” C,將 RDD[(K, V)] 轉換為 RDD[(K, C)] 類型的結果。

用戶提供三個函數:

  • createCombiner ,將 V 轉換為 C(例如,創建一個單元素列表)

  • mergeValue ,將 V 合並到 C 中(例如,將其添加到列表的末尾)

  • mergeCombiners ,將兩個 C 組合成一個(例如,合並列表)

為了避免內存分配,mergeValue 和 mergeCombiners 都可以修改並返回它們的第一個參數,而不是創建一個新的 C。

此外,用戶可以控製輸出 RDD 的分區。

注意

V 和 C 可以不同 - 例如,可以對類型的 RDD 進行分組

(Int, Int) 轉換為 (Int, List[Int]) 類型的 RDD。

例子

>>> x = sc.parallelize([("a", 1), ("b", 1), ("a", 2)])
>>> def to_list(a):
...     return [a]
...
>>> def append(a, b):
...     a.append(b)
...     return a
...
>>> def extend(a, b):
...     a.extend(b)
...     return a
...
>>> sorted(x.combineByKey(to_list, append, extend).collect())
[('a', [1, 2]), ('b', [1])]

相關用法


注:本文由純淨天空篩選整理自spark.apache.org大神的英文原創作品 pyspark.RDD.combineByKey。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。