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

时间:2017-11-18 05:20:56

标签: google-cloud-dataflow apache-beam

当我在eclipse中运行我的管道时它运行正常。但是当我将管道输出为jar文件并运行时,我得到以下错误:

  

线程“main”中的异常java.lang.IllegalStateException:无法执行   返回ToTableRow / ParMultiDo(ToTableRow).out0的默认编码器   [PCollection]。纠正以下根本原因之一:No Coder   已手动指定;你可以使用.setCoder()来做到这一点   从CoderRegistry推断编码器失败:无法提供   编辑com.google.api.services.bigquery.model.TableRow。建造   使用注册CoderProvider的编码器失败。见抑制   详细故障的例外情况。使用默认输出编码器   从生产PTransform失败:无法提供编码器   com.google.api.services.bigquery.model.TableRow。建立一个编码器   使用注册的CoderProvider失败。请参阅抑制异常   详细的失败。           在org.apache.beam.sdk.repackaged.com.google.common.base.Preconditions.checkState(Preconditions.java:444)           在org.apache.beam.sdk.values.PCollection.getCoder(PCollection.java:257)           在org.apache.beam.sdk.values.PCollection.finishSpecifying(PCollection.java:106)           at org.apache.beam.sdk.runners.TransformHierarchy.finishSpecifyingInput(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));

0 个答案:

没有答案