![](/img/trans.png)
[英]Is it possible to modify and run only part of a Python program without having to run all of it again and again?
[英]Is it possible to run / serialize Dataflow job without having all dependencies locally?
我已經使用 Apache Beam 為 Google Cloud Dataflow 創建了一個管道,但我不能在本地擁有 Python 依賴項。 但是,遠程安裝這些依賴項沒有問題。
在我的本地(開發)環境中不執行 Python 代碼是否可以以某種方式運行作業或創建模板?
看看這個教程。 基本上,您編寫 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 帳戶和憑據。
好吧,我不是 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
我從未嘗試過,但它可能會起作用:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.