Как настроить ярлыки в заданиях потока данных 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"} \
...