1

我注意到我的一个数据流作业产生了输出,我可以最好地描述为太多随机位翻转。例如,年份“2014”(作为文本)写为“0007”或“2016”或“0052”或其他文本值。在某些情况下,输出行格式是有效的(这表明在处理过程中发生了某些事情),但似乎也有几行格式错误(例如,“20141215-04-25”而不是“2014-12-25”之类的东西)。

我偶尔会使用相同的代码和不同的日期范围参数重新运行作业,并且对于这个特定的日期范围,作业直到大约一周前才成功完成。虽然我一直在尝试不同的机器配置(4 cpu 和 1-cpu 实例),但问题似乎更多地发生在 4-cpu 实例上。

有谁知道可能导致这种情况的原因是什么?

谢谢,G

4

2 回答 2

4

使用 4-cpu 实例时,Dataflow 在单个 Java 进程中运行多个线程。如果其中一种转换是线程敌对的,则可能会发生数据损坏,也就是说,即使是单独的类实例也不能被多个线程安全地访问。这通常发生在类使用静态非线程安全成员变量时。

于 2015-03-06T18:44:56.233 回答
1

用户代码中的线程安全问题导致了这种类型的损坏。使用多核实例进行计算时,可能会出现此类错误。

于 2015-03-06T18:42:24.663 回答