Google cloud dataflow SDK版本0.4.150414中断的作业
从Maven获取了最新的SDK版本(0.4.150414),我们的工作现在失败了 我们将其追溯到一个HashMap的反序列化,该HashMap在我们的一个类中使用,并且被ParDo转换引用 意见:Google cloud dataflow SDK版本0.4.150414中断的作业,google-cloud-dataflow,Google Cloud Dataflow,从Maven获取了最新的SDK版本(0.4.150414),我们的工作现在失败了 我们将其追溯到一个HashMap的反序列化,该HashMap在我们的一个类中使用,并且被ParDo转换引用 意见: 在本地运行时,以及在中的CDF服务上运行时,它都会断开 云 在调用processElement之前,已正确填充HashMap 在processElement方法中放置断点表明HashMap具有不同的对象ID(必须来自对原始HashMap的反序列化),但它现在为空,即所有元素都已丢失 我们回滚到版本0
- 在本地运行时,以及在中的CDF服务上运行时,它都会断开 云李>
- 在调用
之前,已正确填充HashMapprocessElement
- 在
方法中放置断点表明HashMap具有不同的对象ID(必须来自对原始HashMap的反序列化),但它现在为空,即所有元素都已丢失processElement
- 我们回滚到版本0.3.150326,该版本运行良好。
如果您需要,很高兴将我们的代码发送到反馈电子邮件。在最新版本中进行了更改,以在传递给ParDo.of时克隆DoFn。如果多次使用DoFn并在两次使用之间进行修改,这将导致更好的行为 如果在DoFn被传递给ParDo.of之后填充HashMap字段,则会出现您描述的问题 您可以通过在ParDo.of设置断点并检查DoFn的状态来确认这一点。要解决此问题,请在调用ParDo.of之前初始化该字段
希望这有帮助 很抱歉听到这个消息。在0.4中更改了很多内容,但我不知道有任何向后不兼容的序列化更改。你能不能用一些伪代码来更新这个问题,这些伪代码描述了你的HashMap在哪里,以及你是如何在管道中使用它的?把代码发送给你不是更容易(更快)吗?是的,它会-让我们这样做吧。请通过电子邮件发送数据流-feedback@google.com.ok,就在路上。我们已经将版本回滚到0.3.150326以使其再次工作,因此您需要做的是将build.gradle更改为“0.4.150414”,以针对该版本的SDK运行它。是的,这就是问题所在。现在修好了。非常感谢你。但是,如果您还没有这样做,您应该在某个地方清楚地记录此功能。这是一条至关重要的实施信息,可能也会让其他人注意到:)