在google dataflow中传递自定义管道选项时获取空指针异常

时间:2016-06-21 19:04:38

标签: google-cloud-dataflow

在google dataflow文档中,您可以轻松创建自定义选项并在管道工厂中使用或注册管道工厂。

然而,当尝试执行此操作并初始化自定义选项对象时,我最终在谷歌云上运行的处理逻辑中调用它时获得空指针异常。我必须在上下文中传递这个或者是否可以以任何其他方式传递它?

我尝试在某个对象中传递它并遇到序列化错误。

为清楚起见,这是序列化错误。 The serialization error

1 个答案:

答案 0 :(得分:1)

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

在您的情况下,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 ...
   }
}