Интеграция с облачной платформой Google Cloud Platform - PullRequest
0 голосов
/ 04 октября 2018

Можно ли использовать инструменты командной строки в GCP Dataflow?

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

1 Ответ

0 голосов
/ 05 октября 2018

Да, вы можете вызывать подпроцессы внутри вашего графика.Тем не менее, есть некоторые последствия для этого.Пример: внутри вашего DoFn () вы можете сделать что-то вроде: shell (вызовите legacy exe для создания плоского файла).На этом этапе вам придется вручную заблокировать этот вызов или создать какое-то время оркестровки для обработки вывода.В Apache Beam нет механизма обратного вызова или диспетчеризации.Основным побочным эффектом этого сценария является то, что вы теперь блокируете DoFn от дальнейшей работы - таким образом, циклы записи просто блокируются.Если вызовы этого подпроцесса легки, вероятно, не проблема - если они требуют значительных ресурсов, например, последовательность этого генома - вы столкнетесь с некоторыми проблемами.

Более гибкий и эффективный способ выполнения этого типа работыэто смешать Cloud Composer с облачным потоком данных.Используйте Dataflow для работы, которая требует агрегирования, а затем отправьте долгосрочную (подпроцессную) работу в Cloud Composer.Например: проанализируйте население 1B человек, найдите лучших людей Y с особенностями X. Затем отправьте долго выполняющиеся процессы для анализа подпроцесса на Y.

Помогает ли это?

...