Java 使用ApacheBeam标记Google云数据流作业

Java 使用ApacheBeam标记Google云数据流作业,java,google-cloud-dataflow,apache-beam,Java,Google Cloud Dataflow,Apache Beam,我正在使用ApacheBeam开发一个数据流管道来读取一些数据流,并想知道如何在Google云平台中标记数据流作业。在DataflowPipelineOptions-类中存在方法void setLabels(映射标签),但我不确定如何使用该方法 使用setLabels()以下方法显然是错误的: PipelineOptionsFactory.register(DataflowPipelineOptions.class); Map<String, String

我正在使用ApacheBeam开发一个数据流管道来读取一些数据流,并想知道如何在Google云平台中标记数据流作业。在
DataflowPipelineOptions
-类中存在方法
void setLabels(映射标签)
,但我不确定如何使用该方法

使用
setLabels()
以下方法显然是错误的:

        PipelineOptionsFactory.register(DataflowPipelineOptions.class);

        Map<String, String> labels = null;
        labels.put("env", "dev");
        
        PipelineOptions options = PipelineOptionsFactory
                .fromArgs(args)
                .withValidation()
                .as(DataflowPipelineOptions.class)
                .setLabels(labels);
    
        options.setRunner(DataflowRunner.class);
    
        Pipeline pipeline = Pipeline.create(options);
pipelineoptions工厂寄存器(DataflowPipelineOptions.class);
地图标签=空;
标签。放置(“环境”、“开发”);
PipelineOptions=PipelineOptions工厂
.fromArgs(args)
.withValidation()
.as(DataflowPipelineOptions.class)
.设置标签(标签);
options.setRunner(DataflowRunner.class);
Pipeline=Pipeline.create(选项);

如果您能在使用
DataflowPipelineOptions
和标记数据流作业方面提供帮助,我将不胜感激。提前感谢。

以编程方式在管道选项中设置字段是一种很好的方法,您的代码似乎是正确的方法,除了代码片段中的一个小问题之外(setLabels返回void,因此您需要将其放在使用setRunner所做的另一行)。尝试这种方法时出现了什么问题?这是一个特定的错误,还是标签没有应用到数据流作业中?谢谢,@DanielOliveira。您是对的,
setLabel
返回void,这与我的代码现在的方式一样,会导致一个问题。但是
setLabel
DataflowPipelineOptions
类的一种方法,因此被该类对象调用。我该怎么做?将
PipelineOptions=…
更改为
DataflowPipelineOptions=…
应该可以让您这样做。
as()。