Я использую Apache Beam в потоке данных через Python API для чтения данных из Bigquery, их обработки и выгрузки в приемник Datastore.
Непосредственно перед записью в Datastore я создал функцию ParDo, которая записывает данные в Memorystore - управляемую службу Google Redis. Поскольку в Python нет API-интерфейса Redis-приемника, я просто вызываю API-интерфейс Redis в ParDo.
К сожалению, довольно часто работа просто зависает на неопределенное время, и мне приходится вручную ее останавливать. Пока данные записываются в Datastore и Redis, из графика потока данных я заметил, что это только пара записей, которые застряли и оставили работу в подвешенном состоянии.
В результате, когда работа с пятнадцатью 16-ядерными машинами остается работать в течение 9 часов (обычно работа выполняется в течение 30 минут), это приводит к огромным затратам.
Может быть, есть способ установить таймер, который остановит задание потока данных, если оно превысит лимит времени?
JobID: 2018-06-23_17_45_06-10997437951845491641