Задание Google Dataflow зависает на неопределенное время при записи в Redis - PullRequest
0 голосов
/ 25 июня 2018

Я использую 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

1 Ответ

0 голосов
/ 18 июля 2018

Мы посмотрели на задание 2018-06-23_17_45_06-10997437951845491641 и похоже, что некоторые элементы застряли в обработке, однако мы не смогли сказать, почему это произошло.Можете ли вы попробовать удалить redis или datastore write и попробовать еще раз?Было бы здорово, если бы вы могли создать тикет поддержки клиентов , где мы могли бы попытаться отладить это с вами.

Может быть, есть способ установить таймер, который остановитзадание Поток данных, если оно превышает лимит времени?

К сожалению, нет ответа, Поток данных не имеет автоматического способа отменить задание через определенное время.Тем не менее, это можно сделать с помощью API.Можно wait_until_finish () с тайм-аутом и затем отменить () конвейер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...