在google dataflow文档中,您可以轻松创建自定义选项并在管道工厂中使用或注册管道工厂。
然而,当尝试执行此操作并初始化自定义选项对象时,我最终在谷歌云上运行的处理逻辑中调用它时获得空指针异常。我必须在上下文中传递这个或者是否可以以任何其他方式传递它?
我尝试在某个对象中传递它并遇到序列化错误。
答案 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 ...
}
}