DoFn
和PTransform
都是定义PCollection
操作的方法。我们如何知道何时使用哪个?
最佳答案
理解它的一种简单方法是类似于map(f)
的列表:
高阶函数map
将函数应用于列表的每个元素,并返回结果的新列表。您可能将其称为计算模式。
函数f
是应用于每个元素的逻辑。
现在,切换到谈论Beam的细节,我想您是在问ParDo.of(fn)
,它是一个PTransform
。PTransform
是将PCollections
作为输入并产生PCollections
作为输出的操作。 Beam只有PTransform
的五种原始类型,封装了令人尴尬的并行计算模式。ParDo
是逐元素计算的计算模式。它有一些变体,但您不必为此担心。DoFn
,在这里我称为fn
,是应用于每个元素的逻辑。
考虑这样一个事实,您可以编写一个DoFn
来说明要对每个元素执行的操作,BeamRunner提供了ParDo
来应用您的逻辑。