Google云端数据流作业中的数据完整性错误

时间:2015-03-03 21:20:48

标签: google-cloud-dataflow

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

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

有人知道导致这种情况的原因吗?

谢谢, ģ

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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