Dataflow作业失败,声明java.lang.UnsupportedOperationException:不可移植的



我们正在运行一个简单的数据流作业,该作业从Spanner DB读取数据,并只显示更改记录的Mod Type。当我们在数据流中部署作业时,它总是失败,说明以下错误,

来自worker的错误消息:java.lang.UnsupportedOperationException:BundleFinalizer不受不可移植数据流的支持。\n org.apache.beam.runners.dataflow.worker.SplitableProcessFnFactory$SplitableDoFnRunnerFactory.lambda$createRunner$2(SplitableProcessorFnFactory.java:172org.apache.beam.sdk.io.gcp.sturn.changestreams.dofn.ReadChangeStreamPartitionDoFn$DoFnVoker.invokeProcessElement(未知源(\norg.apache.bbeam.runners.dataflow.worker.repackaged.org.apache.boom.runners.core.OutputAndTimeBoundedSplitableProcessElementInvoker.invoke ProcessElement(OutputAndTimebounddSplitableProcessorElementInvoker.java:125(\norg.apache.beam.runners.dataflow.worker.repackaged.org.apache.beem.runners.core.SplitableParDoViaKeyedWorkItems$ProcessFn.processElement(SplitableParDoViakeyedWorkItems.java:567(

下面是源代码,

public static void main(String[] args) {
PipelineOptions pipelineOptions = PipelineOptionsFactory.fromArgs(args).withValidation().create();
Pipeline pipeline = Pipeline.create(pipelineOptions);
SpannerConfig spannerConfig = SpannerConfig.create().withProjectId("prj-test-1234")
.withInstanceId("dbinstance1").withDatabaseId("dbtestnew");
PCollection<String> changeRecord = pipeline
.apply(SpannerIO.readChangeStream().withSpannerConfig(spannerConfig)
.withChangeStreamName("dbteststream").withMetadataDatabase("testmetadata"))
.apply(ParDo.of(new DoFn<DataChangeRecord, String>() {
@ProcessElement
public void process(ProcessContext context) {
System.out.println("context " + context.element().getModType());
context.output(context.element().getModType().name());
}
}));
pipeline.run();
}

您正在尝试使用SpannerIO.readChangeStream()转换,该转换使用了仅由Dataflow Runner v2支持的功能(捆绑包终结(。请添加以下管道选项,使您的管道使用Dataflow Runner v2运行。

--experiments=use_runner_v2

请参阅此处了解更多详细信息。

相关内容

  • 没有找到相关文章

最新更新