2015-03-03 3 views
1

Я заметил, что одно из моих заданий по потоку данных создало вывод с тем, что я мог бы лучше всего описать как слишком много случайных бит-флип. Например, год «2014» (в виде текста) был написан как «0007» или «2016» или «0052» или другие текстовые значения. В некоторых случаях формат выходной строки действителен (что говорит о том, что что-то произошло в процессе обработки), но несколько строк, похоже, имеют искаженное форматирование (например, «20141215-04-25» вместо «2014-12-25»).Ошибки целостности данных в задачах потока данных Google Cloud

Я иногда повторно запускаю задания с тем же кодом и разными параметрами диапазона дат, и для этого определенного диапазона дат работа заканчивалась успешно примерно до недели назад. Я пробовал разные конфигурации машины, хотя (4 процессора и 1-процессорные экземпляры), и проблемы, похоже, происходят больше с экземплярами 4-процессор.

Кто-нибудь знает, что может привести к этому?

Спасибо, G

+0

Привет, G B, позвольте мне следить за этим поведением. Это явно не предполагаемое поведение. –

+0

Мы запросили дополнительную информацию конфиденциально и опубликуем ответ как можно скорее. Спасибо, G B! –

ответ

4

При использовании экземпляров с 4-мя экземплярами Dataflow запускает несколько потоков в одном Java-процессе. Повреждение данных может произойти, если одно из преобразований является поточно-враждебным, то есть даже отдельные экземпляры класса могут быть безопасно доступны несколькими потоками. Обычно это происходит, когда класс использует статическую не-поточную переменную-член.

+0

Ошибка в моем коде :(Спасибо Мариан за то, что он указал на проблему. –

+0

Дополнительная информация о модели параллелизма Dataflow доступна в этом переполнении стека [thread] (http://stackoverflow.com/questions/27802802/thread-safely-of- serializablefunction-в-облако-поток данных) –

1

проблема потокобезопасность в пользовательском коде в результате этого типа коррупции. Подобные ошибки могут возникать при использовании многоядерных экземпляров для вычисления.