首页 > 解决方案 > Apache Beam - 在 PTransform 之外获取值提供者参数

问题描述

我已经定义了一个自定义数据流模板。它接收的参数之一是包含布尔值的值提供程序参数(实际上,它是匹配“True”或“False”的字符串)。我想用这个参数来决定是否运行一组 PTransforms。代码如下所示:

class CustomOptions(PipelineOptions):
    @classmethod
    def _add_argparse_args(cls, parser):
        parser.add_value_provider_argument(
            '--save_dropped',
            help='Boolean to control the saving of dropped emails.')

options = PipelineOptions()
args = options.view_as(CustomOptions)

with beam.Pipeline(options=options) as p:
    if args.save_dropped == 'True':
        # Perform some optional PTransforms

我不希望这个参数是一个固定的模板,这就是为什么我将它定义为一个值提供者参数。当我使用'save_dropped = 'True'管道开始工作时,不会执行可选的 PTransforms,因此代码似乎没有得到我赋予它的值。有没有办法在 PTransform 规范之外获得该值?如果不是这种情况,您能否向我推荐一种实现我想要的行为的替代方法?

标签: pythongoogle-cloud-dataflowapache-beam

解决方案


推荐阅读