Google Dataflow 和 Apache beam:为什么使用 ValueProvider
Google Dataflow and Apache beam: why ValueProvider
我是 Dataflow 的新手,正在尝试使用 Python 构建模板。
这是让我困惑的document
我们使用 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
解析参数?
使用 ValueProvider
到 PipelineOptions
而不是直接使用 argparse
作为参数的原因是启用 运行time 参数。了解这有何用处涉及了解 运行 时间参数和构造时间参数之间的区别。正如 Dataflow Templates Overview 所述:
If you use Dataflow templates, staging and execution are separate
steps. This separation gives you additional flexibility to decide who
can run jobs and where the jobs are run from.
当您创建和暂存模板时,即会评估常规参数。因此,如果您直接使用 argparse
,或者您的 PipelineOptions
中有一些使用 add_argument
的参数,这些参数是在您首次调用模板代码以构建和暂存作业图时指定的。所以你一般只会运行这一次暂存作业,然后你可以重复执行作业。
无论何时执行已暂存的作业,您都可以specify additional runtime parameters。与构建管道时仅指定一次的构建时间参数不同,每次 运行 分阶段作业时都可以指定 运行 时间参数,因此可以更频繁地更改。但是,转换需要明确支持 运行time 参数作为 ValueProviders
才能成为一个选项。
总而言之,是否使用 ValueProvider
的决定取决于您在构建图形时或 运行 管道时是否需要参数。构建时间参数主要用于影响图形构建的参数,或者预计在多个 运行 作业中保持不变。每次您 运行 作业时可能更改的参数(例如输入文件)应该是 运行 时间参数(即 ValueProviders
),假设您使用的转换支持它。
我是 Dataflow 的新手,正在尝试使用 Python 构建模板。
这是让我困惑的document
我们使用 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
解析参数?
使用 ValueProvider
到 PipelineOptions
而不是直接使用 argparse
作为参数的原因是启用 运行time 参数。了解这有何用处涉及了解 运行 时间参数和构造时间参数之间的区别。正如 Dataflow Templates Overview 所述:
If you use Dataflow templates, staging and execution are separate steps. This separation gives you additional flexibility to decide who can run jobs and where the jobs are run from.
当您创建和暂存模板时,即会评估常规参数。因此,如果您直接使用 argparse
,或者您的 PipelineOptions
中有一些使用 add_argument
的参数,这些参数是在您首次调用模板代码以构建和暂存作业图时指定的。所以你一般只会运行这一次暂存作业,然后你可以重复执行作业。
无论何时执行已暂存的作业,您都可以specify additional runtime parameters。与构建管道时仅指定一次的构建时间参数不同,每次 运行 分阶段作业时都可以指定 运行 时间参数,因此可以更频繁地更改。但是,转换需要明确支持 运行time 参数作为 ValueProviders
才能成为一个选项。
总而言之,是否使用 ValueProvider
的决定取决于您在构建图形时或 运行 管道时是否需要参数。构建时间参数主要用于影响图形构建的参数,或者预计在多个 运行 作业中保持不变。每次您 运行 作业时可能更改的参数(例如输入文件)应该是 运行 时间参数(即 ValueProviders
),假设您使用的转换支持它。