Как развернуть конвейер Apache Beam / Spotify Scio? - PullRequest
0 голосов
/ 24 октября 2018

Я создал конвейер, используя оболочку Scio для Apache Beam.Я хочу развернуть его в потоке данных Google.

Я хочу, чтобы была определенная кнопка или конечная точка или функция, которая будет регулярно выполнять это задание.

Все инструкции, которые я могу найти, выполняютсяsbt runMain / pack, который создает артефакты и загружает их каждый раз.

Как я могу загрузить артефакты один раз, а затем максимально легко создать задание на основе конвейера?

Ответы [ 3 ]

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

В Spotify мы решили создать образ докера для конвейера Scio и выполнить его через Styx , который в основном является кроном на основе k8s, но вы можете выполнить его через свой хорошийстарый cron (или airflow / luigi / gcp-composer), который подходит вам лучше всего.Beam имеет встроенный механизм кэширования для кэширования зависимостей, поэтому последовательные прогоны просто повторно используют ранее загруженные файлы.Scio также поддерживает шаблоны потока данных, упомянутые в другой ответ .

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

Моя проблема решена.Вот мой совет самому себе:

  1. Нет, Apache Beam не имеет встроенных функций развертывания, кроме запуска конвейера.
  2. Любая работа (конвейер запускается внутриконкретный контекст) должна быть предоставлена ​​системой, в которой работает Runner.
  3. Поток данных предлагает такую ​​вещь: шаблон.Шаблоны позволяют превратить конвейер в задание одним нажатием кнопки.
  4. Сам шаблон является документом JSON.
  5. Шаблон можно снабдить аргументами через пользовательский интерфейс (если выиспользовать объекты ValueProvider) или разрешить присваивать аргументы в файле шаблона JSON.
  6. Вы можете автоматически создать файл шаблона, добавив --templateLocation=gs://mybucket/templateName.json к аргументам программы.
  7. Файл шаблона JSON содержит многострашных вещей, подобных этим "filesToStage".
  8. Не беспокойтесь о вещах, которые вы не понимаете."filesToStage", вероятно, существует, чтобы убедиться, что артефакты правильно развернуты.,,Таким образом, ссылки на ваш локальный диск.
  9. Разрешения могут быть проблемой в первый раз.
  10. В Beam / Scio есть неприятная ошибка, из-за которой Beam "забывает" о типе файловой системы Google "gs://".Исправьте это, запустив FileSystems.setDefaultPipelineOptions(PipelineOptionsFactory.create)
  11. . Используйте функции Google для активации задания.На сайте Google есть очень хороший шаблон для этого.

@ ravwojdyla и @ Iñigo - спасибо вам обоим за помощь.

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

Я не знаю, как именно это будет работать с Scio, но, как правило, вы можете создать пользовательский шаблон потока данных , а затем выполнить его через консоль, вызовы API, gcloudкоманды или клиентские библиотеки.

В случае, если вы хотите выполнять его периодически, вы можете создать задание Cron , которое выполняет его, используя клиентские библиотеки .

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