Apache spark 火花流-由以下原因引起:org.apache.parquet.io.ParquetDecodingException:无法读取文件中块0中1处的值

Apache spark 火花流-由以下原因引起:org.apache.parquet.io.ParquetDecodingException:无法读取文件中块0中1处的值,apache-spark,spark-streaming,parquet,hoodie,apache-hudi,Apache Spark,Spark Streaming,Parquet,Hoodie,Apache Hudi,我使用spark将json数据写入s3。然而,我不断得到下面的错误。 我们正在使用apachehudi进行更新。这只发生在一些数据上,其他一切都正常 Caused by: org.apache.parquet.io.ParquetDecodingException: Can not read value at 1 in block 0 in file s3a://<path to parquet file> at org.apache.parquet.hadoop.Interna

我使用spark将json数据写入s3。然而,我不断得到下面的错误。 我们正在使用apachehudi进行更新。这只发生在一些数据上,其他一切都正常

Caused by: org.apache.parquet.io.ParquetDecodingException: Can not read value at 1 in block 0 
 in file s3a://<path to parquet file>
at org.apache.parquet.hadoop.InternalParquetRecordReader.nextKeyValue(InternalParquetRecordReader.ja va:251)

App > at org.apache.parquet.hadoop.ParquetReader.read(ParquetReader.java:132)

App > at org.apache.parquet.hadoop.ParquetReader.read(ParquetReader.java:136)

 App > at com.uber.hoodie.func.ParquetReaderIterator.hasNext(ParquetReaderIterator.java:45)

App > at com.uber.hoodie.common.util.queue.IteratorBasedQueueProducer.produce(IteratorBasedQueueProducer.java:44)

App > at com.uber.hoodie.common.util.queue.BoundedInMemoryExecutor.lambda$null$0(BoundedInMemoryExecutor.java:94)

App > at java.util.concurrent.FutureTask.run(FutureTask.java:266)

 App > at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

App > ... 4 more

App > Caused by: java.lang.UnsupportedOperationException:org.apache.parquet.avro.AvroConverters$FieldLongConverter
原因:org.apache.parquet.io.ParquetDecodingException:无法读取块0中1处的值
在文件s3a中://
位于org.apache.parquet.hadoop.InternalParquetRecordReader.nextKeyValue(InternalParquetRecordReader.ja va:251)
App>位于org.apache.parquet.hadoop.ParquetReader.read(ParquetReader.java:132)
App>位于org.apache.parquet.hadoop.ParquetReader.read(ParquetReader.java:136)
App>位于com.uber.hoodie.func.parquetrederiterator.hasNext(parquetrederiterator.java:45)
App>位于com.uber.hoodie.common.util.queue.IteratorBasedQueueProducer.product(IteratorBasedQueueProducer.java:44)
App>位于com.uber.hoodie.common.util.queue.boundedMemoryExecutor.lambda$null$0(boundedMemoryExecutor.java:94)
App>位于java.util.concurrent.FutureTask.run(FutureTask.java:266)
App>位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
应用程序>。。。4更多
App>原因:java.lang.UnsupportedOperationException:org.apache.parquet.avro.AvroConverters$FieldLongConverter

我无法理解。我遵循了几个线程,在spark confs中设置了--conf“spark.sql.parquet.writeLegacyFormat=true”。但即使这样也无济于事。

发现了问题所在。问题在于现有拼花文件和传入数据中的模式不匹配。 其中一个字段是现有拼花地板模式中的字符串,它在较新的数据块中被发送的长度相同