在 google 数据流中传递自定义管道选项时出现空指针异常

Getting null pointer exceptions when passing around custom pipeline options in google dataflow

在 google 数据流文档中,可以轻松创建自定义选项并将它们注册到或使用管道工厂。

但是,当尝试执行此操作并初始化自定义选项对象时,在 google 云上运行的处理逻辑中调用它们时,我最终遇到空指针异常。我必须在上下文中传递它还是可以通过任何其他方式传递它?

我尝试将它传递到某个对象中,然后 运行 出现序列化错误。

为了清楚起见,这里列出了序列化错误。

PipelineOptions 被设计为不可 Java 序列化,以防止用户将 PipelineOptions 嵌入到他们的 DoFns、CombineFns 和其他用户可定义的函数中。这允许用户访问在其管道构建后修改的 PipelineOptions,例如在执行期间数据流工作器上的凭据。

在您的例子中,DoFn 公开了一个提供 access to PipelineOptions 的上下文对象。例如:

static class MyDoFn extends DoFn<String, String> {
   @Override
   public void processElement(ProcessContext c) {
      MyCustomOptions options = c.getPipelineOptions().as(MyCustomOptions.class);
      ... access my options ...
   }
}