2

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

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

setLabels:方法文档链接

有人可以帮忙看看 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"

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

有什么帮助吗?谢谢

4

1 回答 1

2

在 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"} \
...
于 2018-04-03T13:55:11.627 回答