Как настроить ярлыки в заданиях потока данных Google с помощью Scio?

Я хочу настроить ярлыки для заданий потока данных Google с целью распределения затрат. Вот пример рабочего кода 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} является правильным синтаксисом.

Любая помощь? Спасибо

1 ответ

Решение

В Scio вы можете сделать:

import scala.collection.JavaConverters._

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

Из командной строки вы можете передать метку param в виде строки json, например:

mvn compile exec:java \
--Dexec.mainClass=com.example.WordCount \
--labels={"a":"b"} \
...
Другие вопросы по тегам