Поддерживает ли текущий GoLang SDK для Google Dataflow автоматическое масштабирование и параллельную обработку? - PullRequest
0 голосов
/ 19 сентября 2018

В настоящее время используется Google Dataflow с Python для пакетной обработки.Это прекрасно работает, однако я заинтересован в том, чтобы ускорить выполнение моих заданий Dataflow без необходимости иметь дело с Java.

Используя Go SDK, я реализовал простой конвейер, который читает серию 100-500 МБ файлов из Google Storage (используя textio.Read), выполняет некоторую агрегацию и обновляет CloudSQL с результатами.Количество читаемых файлов может варьироваться от десятков до сотен.

Когда я запускаю конвейер, я вижу из журналов, что файлы читаются последовательно, а не параллельно, в результате работа занимает много времени.дольше.Тот же процесс, выполняемый с помощью Python SDK, запускает автоматическое масштабирование и запускает несколько операций чтения в течение нескольких минут.

Я попытался указать количество работников, использующих --num_workers=, однако Dataflow сокращает задачу до одного экземпляра после несколькихминут и из журналов не происходит параллельного чтения во время работы экземпляра.

Нечто подобное происходит, если я удаляю textio.Read и внедряю пользовательский DoFn для чтения из GCS.Процесс чтения все еще запускается последовательно.

Я знаю, что текущий Go SDK является экспериментальным и не имеет многих функций, однако я не нашел прямой ссылки на ограничения с параллельной обработкой, здесь .Поддерживает ли текущее воплощение Go SDK параллельную обработку в потоке данных?

Заранее спасибо

1 Ответ

0 голосов
/ 27 сентября 2018

Удалось найти ответ на этот вопрос после фактического создания собственного пакета ввода-вывода для Go SDK .

SplitableDoFns пока недоступны в Go SDK.Эта ключевая функциональность позволяет SDK Python и Java выполнять операции ввода-вывода параллельно и, следовательно, намного быстрее, чем Go SDK в масштабе.

...