Google cloud dataflow java.lang.IllegalStateException:无法返回默认编码器

Google cloud dataflow java.lang.IllegalStateException:无法返回默认编码器,google-cloud-dataflow,apache-beam,Google Cloud Dataflow,Apache Beam,当我在eclipse中运行管道时,它运行良好。但当我将管道导出为jar文件并运行时,我得到以下错误: 线程“main”java.lang.IllegalStateException中的异常:无法 返回ToTableRow/Parmulido(ToTableRow).out0的默认编码器 [P收集]。纠正以下根本原因之一:无编码器 已手动指定;您可以使用.setCoder()执行此操作。 从CoderRegistry推断编码器失败:无法提供 com.google.api.services.bigq

当我在eclipse中运行管道时,它运行良好。但当我将管道导出为jar文件并运行时,我得到以下错误:

线程“main”java.lang.IllegalStateException中的异常:无法 返回ToTableRow/Parmulido(ToTableRow).out0的默认编码器 [P收集]。纠正以下根本原因之一:无编码器 已手动指定;您可以使用.setCoder()执行此操作。
从CoderRegistry推断编码器失败:无法提供 com.google.api.services.bigquery.model.TableRow的编码器。建筑 使用已注册CoderProvider的编码器失败。见抑制 详细故障的例外情况。使用默认输出编码器 从生成pttransform失败:无法为提供编码器 com.google.api.services.bigquery.model.TableRow。构建编码器 使用已注册的CoderProvider失败。请参见抑制的异常 对于详细的故障。 位于org.apache.beam.sdk.repackaged.com.google.common.base.premissions.checkState(premissions.java:444) 位于org.apache.beam.sdk.values.PCollection.getCoder(PCollection.java:257) 位于org.apache.beam.sdk.values.PCollection.finishSpecification(PCollection.java:106) 位于org.apache.beam.sdk.runners.TransformHierarchy.finishSpecifiingInput(TransformHierarchy.java:147) 位于org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:513) 位于org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:473) 位于org.apache.beam.sdk.values.PCollection.apply(PCollection.java:297) 在com.X.pubsub.to.bq.Y.main上(Y.java:107)

在代码的第107行,我正在执行一个
BigQueryIO.writeTableRows

PCollection<TableRow> tableRow = streamData.apply("ToTableRow",ParDo.of(new PrepData.ToTableRow())); //String to TableRow


        tableRow.apply("WriteToBQ",
                BigQueryIO.writeTableRows()
                .to(String.format("%1$s.%2$s",bqDataSet, bqTable))
                .withSchema(schema)
                .withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_APPEND));
PCollection tableRow=streamData.apply(“ToTableRow”,ParDo.of(new PrepData.ToTableRow())//字符串到TableRow
tableRow.apply(“WriteToBQ”,
BigQueryIO.writeTableRows()
.to(String.format(“%1$s.%2$s”,bqDataSet,bqTable))
.withSchema(schema)
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.Write_APPEND));

使用maven Shade插件后,效果很好。谢谢。你介意把你的补丁贴出来作为答案吗?