在 Apache Beam 中为 PCollection 的元素创建属性

Creating attributes for elements of a PCollection in Apache Beam

我是 Apache Beam 的新手,想知道是否可以为 PCollection 中的元素创建自己的属性。 我浏览了文档,但找不到任何东西。

this ParDo doc 中的示例 2 显示了如何访问 TimestampParamWindowParam,据我所知,它们是 PCollection 中每个元素的属性:

class AnalyzeElement(beam.DoFn):
  def process(
      self,
      elem,
      timestamp=beam.DoFn.TimestampParam,
      window=beam.DoFn.WindowParam):
      yield [...]

所以我的问题是,是否可以为 PCollection 中的元素创建此类属性(例如 TablenameParam),如果不能,是否有某种变通方法可以实现?

您所描述的只是元素的一部分。对于您的示例,TablenameParam 将是您添加到 PCollection 的类型的字段。

WindowParamTimestampParam 被不同对待的原因是它们经常隐式传播,并且是 every 的 Beam 模型的一部分元素与实际数据无关。大多数只对主要数据进行操作的代码不需要触及它们。