簡體   English   中英

Apache Beam Dataflow 作業在本地做什么?

[英]What does an Apache Beam Dataflow job do locally?

我在使用 Apache Beam Python SDK 定義的數據流時遇到一些問題。 如果我逐步執行我的代碼,它會到達 pipeline.run() 步驟,我認為這意味着執行圖已成功定義。 但是,該作業從未在 Dataflow 監控工具上注冊,讓我認為它永遠不會到達管道驗證步驟。

我想更多地了解這兩個步驟之間發生了什么,以幫助調試問題。 我看到 output 表明我的requirements.txtapache-beam中的包正在安裝 pip 並且似乎有些東西在發送到谷歌的服務器之前被腌制了。 這是為什么? 如果我已經下載了 apache-beam,為什么還要重新下載呢? 腌制的到底是什么?

我不是在這里尋找解決我的問題的方法,只是想更好地理解這個過程。

在圖構造期間,數據流將檢查錯誤和管道中的任何非法操作。 一旦檢查成功,執行圖將轉換為JSON並傳輸到Dataflow服務。 在Dataflow服務中,JSON圖經過驗證,並且成為工作。 但是,如果管道在本地執行,則該圖不會轉換為JSON或傳輸到Dataflow服務。 因此,該圖不會在監視工具中顯示為作業,它將在本地計算機上運行[1]。 您可以按照文檔配置本地計算機[2]。

[1] https://cloud.google.com/dataflow/service/dataflow-service-desc#pipeline-lifecycle-from-pipeline-code-to-dataflow-job

[2] https://cloud.google.com/dataflow/pipelines/specifying-exec-params#configuring-pipelineoptions-for-local-execution

使用pip download requirements.txt 中的包,並將它們暫存到暫存位置。 這個暫存位置將被 Dataflow 用作緩存,並用於在 Dataflow worker 上調用pip install -r requirements.txt以減少對 pypi 的調用時查找包。

暫無
暫無

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

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