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