[英]Google Dataflow and Apache beam: why ValueProvider
我是 Dataflow 的新手,正在嘗試使用 Python 構建模板。
這是讓我感到困惑的文件。
我們使用 ValueProvider 有什么理由嗎?
我發現許多僅使用 Python argparse
的官方模板。
我什么時候應該使用哪種解決方案?
PipelineOptions
的子類並使用 ValueProvider@classmethod
def _add_argparse_args(cls, parser):
parser.add_value_provider_argument(
"--input", dest="input", required=True, help="Input for the pipeline",
)
...
或者 2. 在if __nam__ == "__main__"
塊中使用argparse
解析 arguments?
arguments 之所以通過PipelineOptions
使用ValueProvider
而不是直接使用argparse
是為了啟用運行時參數。 理解這是如何有用的包括理解運行時參數和構造時間參數之間的區別。 正如數據流模板概述所述:
如果您使用數據流模板,暫存和執行是單獨的步驟。 這種分離使您可以更加靈活地決定誰可以運行作業以及從何處運行作業。
當您創建和暫存模板時,即會評估常規 arguments。 因此,如果您直接使用argparse
,或者您的PipelineOptions
中有一些使用add_argument
的 arguments,則這些是在您首次調用模板代碼以構建和暫存作業圖時指定的。 所以你通常只會運行一次來暫存作業,然后你可以重復執行作業。
每當您執行已暫存的作業時,您都可以指定額外的運行時參數。 與構建管道時只指定一次的構建時間參數不同,運行時參數可以在每次運行暫存作業時指定,因此可以更頻繁地更改。 但是,轉換需要明確支持運行時 arguments 作為ValueProviders
,才能成為一個選項。
因此總而言之,是否使用ValueProvider
的決定取決於您在構建圖形或運行管道時是否需要參數。 構建時間 arguments 主要針對 arguments 影響圖的構建,或者希望通過一個作業的多次運行保持不變。 Arguments 可能會在您每次運行作業時發生變化,例如輸入文件,應該是運行時 arguments (即ValueProviders
),假設您正在使用的轉換支持它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.