Я создал конвейер для сохранения сообщений Google Cloud Pubsub в текстовые файлы с использованием Apache Beam и Java.Всякий раз, когда я запускаю конвейер в потоке данных Google с --runner=DataflowRunner
, сообщения сохраняются правильно.
Однако, когда я запускаю тот же конвейер с --runner=DirerctRunner
, сообщения не сохраняются.
Я могунаблюдайте за событиями, идущими через конвейер, но ничего не происходит.
Конвейер - это код ниже:
public static void main(String[] args) {
ExerciseOptions options = PipelineOptionsFactory.fromArgs(args).withValidation().as(ExerciseOptions.class);
Pipeline pipeline = Pipeline.create(options);
pipeline
.apply("Read Messages from Pubsub",
PubsubIO
.readStrings()
.fromTopic(options.getTopicName()))
.apply("Set event timestamp", ParDo.of(new DoFn<String, String>() {
@ProcessElement
public void processElement(ProcessContext context) {
context.outputWithTimestamp(context.element(), Instant.now());
}
}))
.apply("Windowing", Window.into(FixedWindows.of(Duration.standardMinutes(5))))
.apply("Write to File",
TextIO
.write()
.withWindowedWrites()
.withNumShards(1)
.to(options.getOutputPrefix()));
pipeline.run();
}
Что я делаю не так?Можно ли запустить этот трубопровод локально?