如何使用scio在google dataflow作业中设置标签?

时间:2017-12-16 00:50:52

标签: google-cloud-dataflow dataflow spotify-scio

我想为Google数据流作业设置标签以进行费用分配。以下是使用Java代码的示例:

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

setLabels:Method Documentation Link

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

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

      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}是否是正确的语法。

有任何帮助吗?感谢

1 个答案:

答案 0 :(得分:1)

在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"} \
...