工作已破坏SDK版本0.4.150414

Gra*_*ley 3 google-cloud-dataflow

从Maven中拉出最新的SDK版本(0.4.150414),我们的工作现在失败了.

我们已经将它追溯到我们的一个类中使用的HashMap的反序列化,并且由ParDo转换引用.

观察:

  • 在本地运行时以及在云中的CDF服务上都会中断.
  • processElement调用之前正确填充HashMap
  • processElement方法中放置断点显示HashMap具有不同的对象ID(必须来自反序列化原始HashMap),但现在它是空的,即所有元素都已丢失.
  • 我们回滚到版本0.3.150326,它适用于该版本.

在最新版本的SDK中,序列化/反序列化功能有什么变化吗?

如果您需要,很高兴将我们的代码发送到反馈电子邮件.

Ben*_*ers 5

在最新版本中进行了更改,以便在传递给ParDo.of时克隆DoFn.如果多次使用DoFn并在两次使用之间进行修改,这会导致更好的行为.

如果在DoFn传递给ParDo.of后填充HashMap字段,则会出现您描述的问题.

您可以通过在ParDo.of上设置断点并检查那里的DoFn状态来确认这一点.要解决此问题,请在调用ParDo.of之前初始化该字段.

希望这可以帮助!