光束累积器是否在分布式流道中全局计算?

时间:2018-11-03 12:00:39

标签: apache-beam

我正在Beam中实现标准偏差计算转换。 我首先创建一个累加器,然后添加元素(输入)

class Standard_deviation(apache_beam.DoFn):
    def create_accumulator(self):
        return (0.0, 0.0, 0)

    def add_input(self, sum_count, input):
        (sum, sumsq, count) = sum_count
        return sum + input, sumsq + input*input, count + 1

在我的选项中,我将运行程序设置为SparkRunner,以便它在群集上分布式运行。

我在文档中看到,对于MeanCombineFn,将执行累加器的合并:

def merge_accumulators(self, accumulators):
    sums, counts = zip(*accumulators)
    return sum(sums), sum(counts)

这是否意味着为每个节点创建累加器,并且合并功能正在创建全局累加器?否则为什么需要合并?

0 个答案:

没有答案