[英]Dataflow Job Fails stating, java.lang.UnsupportedOperationException: BundleFinalizer unsupported by non-portable Dataflow
我们正在运行一个简单的数据流作业,它从 Spanner 数据库中读取数据并仅显示已更改记录的 Mod 类型。 当我们在 Dataflow 中部署作业时,它总是失败,以下错误,
Error message from worker: java.lang.UnsupportedOperationException: BundleFinalizer unsupported by non-portable Dataflow.\n org.apache.beam.runners.dataflow.worker.SplittableProcessFnFactory$SplittableDoFnRunnerFactory.lambda$createRunner$2(SplittableProcessFnFactory.java:172)\n org.apache.beam.runners.dataflow.worker.repackaged.org.apache.beam.runners.core.OutputAndTimeBoundedSplittableProcessElementInvoker$1.bundleFinalizer(OutputAndTimeBoundedSplittableProcessElementInvoker.java:206)\n org.apache.beam.sdk.io.gcp.spanner .changestreams.dofn.ReadChangeStreamPartitionDoFn$DoFnInvoker.invokeProcessElement(未知来源)\n org.apache.beam.runners.dataflow.worker.repackaged.org.ZB6EFD606D118D0F62066E3 1419FF04CCZ.beam.runners.core.OutputAndTimeBoundedSplittableProcessElementInvoker.invokeProcessElement(OutputAndTimeBoundedSplittableProcessElementInvoker.java:125)\n org.apache.beam.runners.dataflow.worker.repackaged.org.apache.beam.runners.core.SplittableParDoViaKeyedWorkItems$ProcessFn.processElement( SplittableParDoViaKeyedWorkItems.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
请参阅此处了解更多详情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.