如何使用 scio 在 google 数据流作业中设置标签?

How to set up labels in google dataflow jobs using scio?

我想为 google 数据流作业设置标签以用于成本分配目的。这是工作 Java 代码的示例:

private DataflowPipelineOptions options = PipelineOptionsFactory.fromArgs(args).as(DataflowPipelineOptionsImpl.class); 
options.setLabels(ImmutableMap.of("key", "value"));

设置标签:Method Documentation Link

有人可以帮助解决 scio/scala 示例吗?我检查了几个 scio + google 数据流示例,但找不到任何有用的东西。

其他选项是在 mvn / gradle 命令中提供标签参数,如下所示:

      mvn compile exec:java   
     --Dexec.mainClass=com.example.WordCount   -Dexec.args="--project=test-prod \
     --stagingLocation=gs://test-bucket/staging/ \
     --output=gs://test-bucket/output \
     --runner=TestDataflowPipelineRunner \
     --labels=\"{'a':'b'}\" \
     --jobName=dataflow-intro"

我不确定传递 labels={a:b} 是否是正确的语法。

有什么帮助吗?谢谢

在 scio 中你可以做:

import scala.collection.JavaConverters._

val (sc: ScioContext, args: Args) = ContextAndArgs(cmdLineArgs)
sc.optionsAs[DataflowPipelineOptions].setLabels(Map("foo" -> "bar").asJava)

在命令行中,您可以将标签参数作为 json 字符串传递,例如:

mvn compile exec:java \
--Dexec.mainClass=com.example.WordCount \
--labels={"a":"b"} \
...