В настоящее время используется 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 параллельную обработку в потоке данных?
Заранее спасибо