【问题标题】:How to get PipelineOptions in composite PTransform in Beam 2.0?如何在 Beam 2.0 的复合 PTransform 中获取 PipelineOptions?
【发布时间】:2017-07-10 19:04:52
【问题描述】:

升级到 Beam 2.0 后,Pipeline 类不再有 getOptions() 类。 我有一个复合 PTransform,它依赖于在其 expand 方法中获取选项:

public class MyCompositeTransform extends PTransform<PBegin, PDone> {
    @Override
    public PDone expand(PBegin input) {
        Pipeline pipeline = input.getPipeline();
        MyPipelineOptions options = pipeline.getOptions().as(MyPipelineOptions.class);
        ...
    }
}

在 Beam 2.0 中,expand 方法中似乎根本没有访问 PipelineOptions 的方法。

还有什么选择?

【问题讨论】:

    标签: google-cloud-dataflow apache-beam


    【解决方案1】:

    Pablo's answer 是正确的。我还想澄清一下,PipelineOptions 的管理方式发生了重大变化。

    您可以使用它们来解析参数并将其传递给您的 main 程序(或构建管道的任何代码),但这些在技术上独立于配置管道运行方式的 PipelineOptions

    在 Beam 中,Pipeline 已完全构建,然后您才可以选择 PipelineRunnerPipelineOptions 来控制管道的运行方式。管道本身实际上没有选项。

    如果您确实希望 PTransform 的行为(而不是其扩展)使用某些动态获得的选项,您应该让您的 PTransform 接受 ValueProvider like this example in WriteFiles 并且您可以定义管道选项返回一个ValueProviderlike here in ValueProviderTest

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-14
      • 2023-01-13
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多