DataflowPipelineOptions: явная установка бегуна с использованием .setRunner после разбора аргумента - PullRequest
0 голосов
/ 14 января 2019

В потоке данных SDK 2.4.0 я имел обыкновение запускать:

 PipelineOptionsFactory.register(MyPipelineOptions.class);
 MyPipelineOptions options = PipelineOptionsFactory.fromArgs(args).withValidation().create().as(MyPipelineOptions.class);
 options.setRunner(DataflowRunner.class);

Однако в Apache Beam SDK 2.9.0 мне нужно установить бегун в аргументах, используя --runner=DataflowRunner, потому что в противном случае он не будет работать на create() (вторая строка). Это желаемое поведение или есть способ установить бегуна с помощью setRunner после чтения других параметров из аргументов?

Используемые зависимости Maven:

<dependencies>
    <dependency>
        <groupId>org.apache.beam</groupId>
        <artifactId>beam-sdks-java-core</artifactId>
        <version>2.9.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.beam</groupId>
        <artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
        <version>2.9.0</version>
    </dependency>
</dependencies>

1 Ответ

0 голосов
/ 25 января 2019

Очевидно, что при создании объекта параметров бегун не указан, по умолчанию используется DirectRunner. Таким образом, даже если позже setRunner используется для определения другого бегуна, просто чтобы иметь возможность создать объект параметров без указанного бегуна, DirectRunner должен находиться в пути к классам.

Чтобы это работало, вы можете просто добавить зависимость, чтобы DirectRunner был в вашем classpath

<dependency>
  <groupId>org.apache.beam</groupId>
  <artifactId>beam-runners-direct-java</artifactId>
  <version>2.9.0</version>
</dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...