簡體   English   中英

Dataflow中的自定義Apache Beam Python版本

[英]Custom Apache Beam Python version in Dataflow

我想知道是否有可能在Google Dataflow中運行自定義Apache Beam Python版本。 公共存儲庫中不可用的版本(截至本文時為0.6.0和2.0.0)。 例如,來自Apache Beam的官方存儲庫的HEAD版本,或者該問題的特定標記。

我知道有可能打包自定義包(例如私有本地包),如官方文檔中所述 這里有一些關於如何為其他腳本執行此操作的問題 甚至有一個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

有任何想法嗎? (我想知道是否有可能,因為谷歌數據流可能已經修復了可以運行到官方發布的版本的Apache Beam版本)。

當我在一個我一直在幫助的Apache Beam的JIRA上得到這個問題的答案時,我會自己回答。

如果您想在Google Cloud Dataflow中使用自定義Apache Beam Python版本(即使用--runner DataflowRunner運行管道,則必須在運行時使用選項--sdk_location <apache_beam_v1.2.3.tar.gz>管道;其中<apache_beam_v1.2.3.tar.gz>是您要使用的相應打包版本的位置。

例如,在撰寫本文時,如果您已經檢查了Apache Beam的git 存儲庫HEAD版本,則必須首先通過使用cd beam/sdks/python導航到Python SDK來打包存儲庫,然后運行python setup.py sdist (將在dist子目錄中創建一個壓縮的tar文件)。

此后,您可以像這樣運行您的管道:

python your_pipeline.py [...your_options...] --sdk_location beam/sdks/python/dist/apache-beam-2.2.0.dev0.tar.gz

Google Cloud Dataflow將使用提供的SDK。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM