Apache Beam:DoFn 与 PTransform
Posted
技术标签:
【中文标题】Apache Beam:DoFn 与 PTransform【英文标题】:Apache Beam: DoFn vs PTransform 【发布时间】:2018-05-22 05:47:48 【问题描述】:DoFn
和PTransform
都是为PCollection
定义操作的方法。我们如何知道何时使用哪个?
【问题讨论】:
【参考方案1】:一个简单的理解方法是类比map(f)
for lists:
map
将函数应用于列表的每个元素,返回结果的新列表。您可以称其为计算模式。
函数f
是应用于每个元素的逻辑。
现在,切换到讨论 Beam 的细节,我想你是在问 ParDo.of(fn)
,这是一个 PTransform
。
PTransform
是一个将PCollections
作为输入并产生PCollections
作为输出的操作。 Beam 只有五种基本类型的PTransform
,封装了令人尴尬的并行计算模式。
ParDo
是逐元素计算的计算模式。它有一些变化,但你不必担心这个问题。
DoFn
,这里我称之为fn
,是应用于每个元素的逻辑。
您还可以考虑以下事实:您写一个DoFn
来说明对每个元素执行的操作,而Beam runner 提供ParDo
来应用您的逻辑。
【讨论】:
以上是关于Apache Beam:DoFn 与 PTransform的主要内容,如果未能解决你的问题,请参考以下文章
如何将 DoFn PTransform 应用于 Apache Beam 中的 PCollectionTuple
Apache Beam Stateful DoFn 周期性输出所有 K/V 对