当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。