Apache Beam:DoFn 与 PTransform

Apache Beam: DoFn vs PTransform

DoFnPTransform都是为PCollection定义操作的一种方式。我们如何知道何时使用哪个?

一个简单的理解方法是类比列表的map(f)

  • 高阶函数map 将一个函数应用于列表的每个元素,返回一个新的结果列表。您可以将其称为计算模式。
  • 函数f是应用于每个元素的逻辑。

现在,切换到谈论 Beam 细节,我想你问的是 ParDo.of(fn),这是一个 PTransform

  • A PTransform 是一种将 PCollections 作为输入并产生 PCollections 作为输出的操作。 Beam 只有五种原始类型 PTransform,封装了令人尴尬的并行计算模式。
  • ParDo是逐元素计算的计算模式。它有一些变化,但你不必担心这个问题。
  • DoFn,这里我称之为fn,是应用于每个元素的逻辑。

考虑一下 写一个 DoFn 来说明对每个元素做什么,Beam runner 提供 ParDo 应用你的逻辑。