Можно ли запустить / сериализовать задание Dataflow, не имея всех зависимостей локально? - PullRequest
0 голосов
/ 27 сентября 2019

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

Возможно ли как-то запустить задание или создать шаблон без выполнения кода Python в моей локальной среде (среде разработки)?

Ответы [ 2 ]

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

Ну, я не уверен на 100%, что это возможно, но вы можете:

  • Определить файл requirements.txt со всеми зависимостями для выполнения конвейера
  • Избегатьимпорт и использование ваших зависимостей во время построения конвейера, только во временном коде выполнения.

Так, например, ваш файл может выглядеть так:

import apache_beam as beam

with beam.Pipeline(...) as p:
  result = (p | ReadSomeData(...)
            | beam.ParDo(MyForbiddenDependencyDoFn()))

И вВ этом же файле ваш DoFn будет импортировать вашу зависимость из кода времени выполнения конвейера, например, метод process.См .:

class MyForbiddenDependencyDoFn(beam.DoFn):

  def process(self, element):
    import forbidden_dependency as fd
    yield fd.totally_cool_operation(element)

Когда вы выполняете свой конвейер, вы можете сделать:

python your_pipeline.py \
    --project $GCP_PROJECT \
    --runner DataflowRunner \
    --temp_location $GCS_LOCATION/temp \
    --requirements_file=requirements.txt

Я никогда не пробовал это, но это может просто сработать:)

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

Взгляните на этот учебник .По сути, вы пишете конвейер python, а затем развертываете его через командную строку с

python your_pipeline.py \
--project $YOUR_GCP_PROJECT \
--runner DataflowRunner \
--temp_location $WORK_DIR/beam-temp \
--setup_file ./setup.py \
--work-dir $WORK_DIR

Важнейшей частью является --runner DataflowRunner, поэтому он использует Google Dataflow (а не вашу локальную установку)запустить трубопровод.Очевидно, вам необходимо установить учетную запись Google и учетные данные.

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