我想为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}是否是正确的语法。
有任何帮助吗?感谢
答案 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"} \
...