2017-07-27 37 views
1

我想知道是否有可能在Google Dataflow中運行自定義Apache Beam Python版本。公共存儲庫中尚未提供的版本(截至撰寫本文時爲0.6.0和2.0.0)。例如,來自Apache Beam官方存儲庫的HEAD版本,或者針對該問題的特定標籤。Dataflow中的自定義Apache Beam Python版本

我知道如官方documentation中所述包裝定製包(例如私人本地包)的可能性。這裏有回答questions在這裏如何做一些其他腳本。甚至有一個GIST guiding就此。

但是我還沒有設法獲得當前的Apache Beam開發版本(或標記的版本),該版本可在其官方存儲庫的主分支中獲得,以便打包並沿着我的腳本發送到Google Dataflow。 例如,對於最新的可用標籤,它的鏈接,畫中畫過程將是:git+https://github.com/apache/[email protected]#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版本)。

回答

2

我會回答自己,因爲我在一個Apache Beam的JIRA中得到了這個問題的答案,我一直在幫忙。

如果你想使用谷歌雲數據流(自定義的Apache梁Python版本是,運行與--runner DataflowRunner您的管道,你必須在你運行你的管道使用的選項--sdk_location <apache_beam_v1.2.3.tar.gz>;其中<apache_beam_v1.2.3.tar.gz>是相應的位置包裝要使用的版本。

例如,在寫這篇文章的,如果你已經簽出了HEAD版本的Apache Beam的混帳repository的,你通過導航到了Python SDK與cd beam/sdks/python必須先包庫然後運行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 

谷歌雲數據流將使用所提供的SDK。