在ParDo中使用Pipeline和DataflowPipelineOptions实例的任何方法?

时间:2017-10-16 15:16:38

标签: google-cloud-dataflow apache-beam

很明显,当仅在静态块中写入时,可以在ParDo内部使用Pipeline和DataflowPipelineOptions实例。因为,processElement()不是静态的。因此,ParDo无法容纳此函数中的任何逻辑,该函数处理Pipeline和DataflowPipelineOptions的对象。

示例:

public void processElement(ProcessContext c)
{
  PCollection<String> dummy=p.apply("dummy"); // It will fail with a SerializableException (What I want to do)
}

所以,只想通过从ParDo本身调用静态函数来检查是否可以实现相同的功能。

public void processElement(ProcessContext c)
{
   logicCaller();     // It's a static function
}

logicCaller()静态方法可以包含从创建简单PCollection到任何ParDo块执行的任何内容,其中包含一些逻辑步骤。

我试过这种方式并且函数也成功调用了。奇怪的行为是,所有内容都在静态函数中执行,但ParDo部分被跳过而没有任何错误或异常。

任何见解?

0 个答案:

没有答案