CombinePerKey
Pydoc |
合并集合中每个键的所有元素。
在 Beam 编程指南 中查看更多信息。
示例
在以下示例中,我们创建一个带有 PCollection
的管道,该管道包含农产品。然后,我们以多种方式应用 CombinePerKey
来合并 PCollection
中的所有元素。
CombinePerKey
接受一个函数,该函数将值列表作为输入,并为每个键合并它们。
示例 1:使用预定义函数合并
我们使用函数 sum
,它接收一个数字的 iterable
并将它们加在一起。
示例 2:使用函数合并
我们定义了一个函数 saturated_sum
,它接收一个数字的 iterable
并将它们加在一起,直到达到预定义的最大值。
示例 3:使用 lambda 函数合并
我们也可以使用 lambda 函数来简化 示例 2。
示例 4:使用多个参数合并
您可以将具有多个参数的函数传递给 CombinePerKey
。它们作为额外的位置参数或关键字参数传递给该函数。
在此示例中,lambda 函数接受 values
和 max_value
作为参数。
示例 5:使用 CombineFn
合并
合并元素的更通用方法,也是最灵活的方法,是使用从 CombineFn
继承的类。
CombineFn.create_accumulator()
:这将创建一个空累加器。例如,用于求和的空累加器为0
,而用于乘积(乘法)的空累加器为1
。CombineFn.add_input()
:每个元素调用一次。接收一个累加器和一个输入元素,合并它们并返回更新后的累加器。CombineFn.merge_accumulators()
:多个累加器可以在并行处理,因此此函数有助于将它们合并为一个累加器。CombineFn.extract_output()
:它允许在提取结果之前进行额外的计算。
相关转换
您可以使用以下合并器转换
另请参见 GroupBy,它允许您同时合并多个字段。
Pydoc |
最后更新于 2024/10/31
您找到您要找的所有内容了吗?
所有内容都实用且清晰吗?您想更改任何内容吗?请告诉我们!