Пользовательская версия Apache Beam Python в потоке данных
Мне интересно, возможно ли иметь в Google Dataflow собственную версию Apache Beam Python. Версия, которая недоступна в общедоступных репозиториях (на момент написания статьи: 0.6.0 и 2.0.0). Например, версия HEAD из официального репозитория Apache Beam или специальный тег по этому вопросу.
Мне известна возможность упаковки пользовательских пакетов (например, частных локальных), как описано в официальной документации. Здесь есть ответы на вопросы о том, как это сделать для некоторых других сценариев. И есть даже руководство GIST по этому вопросу.
Но мне не удалось получить текущую версию разработки Apache Beam (или версию с тегами), которая доступна в основной ветке его официального репозитория, чтобы она была упакована и отправлена вместе с моим сценарием в Google Dataflow. Например, для последнего доступного тега, чья ссылка для обработки PiP будет: git+https://github.com/apache/beam.git@v2.1.0-RC2#egg=apache_beam[gcp]&subdirectory=sdks/python
Я получаю что-то вроде этого:
INFO:root:Executing command: ['.../bin/python', '-m', 'pip', 'install', '--download', '/var/folders/nw/m_035l9d7f1dvdbd7rr271tcqkj80c/T/tmpJhCkp8', 'apache-beam==2.1.0', '--no-binary', ':all:', '--no-deps']
DEPRECATION: pip install --download has been deprecated and will be removed in the future. Pip now has a download command that should be used instead.
Collecting apache-beam==2.1.0
Could not find a version that satisfies the requirement apache-beam==2.1.0 (from versions: 0.6.0, 2.0.0)
No matching distribution found for apache-beam==2.1.0
Есть идеи? (Мне интересно, возможно ли это, так как Google Dataflow, возможно, исправил версии Apache Beam, которые могут работать на официально выпущенных версиях).
1 ответ
Я отвечу сам, как я получил ответ на этот вопрос в одной JIRA Apache Beam, с которой я помогал.
Если вы хотите использовать пользовательскую версию Apache Beam Python в облачном потоке данных Google (то есть запустить конвейер с --runner DataflowRunner
, вы должны использовать опцию --sdk_location <apache_beam_v1.2.3.tar.gz>
когда вы запускаете свой трубопровод; где <apache_beam_v1.2.3.tar.gz>
местоположение соответствующей упакованной версии, которую вы хотите использовать.
Например, на момент написания этой статьи, если вы проверили HEAD
В версии git- репозитория Apache Beam вы должны сначала упаковать репозиторий, перейдя в Python SDK с помощью cd beam/sdks/python
а потом беги python setup.py sdist
(сжатый tar-файл будет создан в dist
подкаталог).
После этого вы можете запустить свой конвейер следующим образом:
python your_pipeline.py [...your_options...] --sdk_location beam/sdks/python/dist/apache-beam-2.2.0.dev0.tar.gz
Облачный поток данных Google будет использовать прилагаемый SDK.