【问题标题】:Spark Parquet read error : java.io.EOFException: Reached the end of stream with XXXXX bytes left to readSpark Parquet 读取错误:java.io.EOFException:到达流的末尾,还有 XXXXX 个字节要读取
【发布时间】:2020-02-25 09:52:48
【问题描述】:

在 spark 中读取 parquet 文件时,如果遇到以下问题。


App > 线程“main”org.apache.spark.SparkException 中的异常:作业因阶段故障而中止:阶段 2.0 中的任务 0 失败 4 次,最近一次失败:阶段 2.0 中丢失任务 0.3(TID 44、10.23 .5.196,执行程序 2):java.io.EOFException:到达流的末尾,还有 193212 个字节要读取 应用 > 在 org.apache.parquet.io.DelegatingSeekableInputStream.readFully(DelegatingSeekableInputStream.java:104) 应用 > 在 org.apache.parquet.io.DelegatingSeekableInputStream.readFullyHeapBuffer(DelegatingSeekableInputStream.java:127) 应用程序 > 在 org.apache.parquet.io.DelegatingSeekableInputStream.readFully(DelegatingSeekableInputStream.java:91) 应用程序 > 在 org.apache.parquet.hadoop.ParquetFileReader$ConsecutiveChunkList.readAll(ParquetFileReader.java:1174) 应用 > 在 org.apache.parquet.hadoop.ParquetFileReader.readNextRowGroup(ParquetFileReader.java:805) 应用 > 在 org.apache.spark.sql.execution.datasources.parquet.VectorizedParquetRecordReader.checkEndOfRowGroup(VectorizedParquetRecordReader.java:301) 应用程序 > 在 org.apache.spark.sql.execution.datasources.parquet.VectorizedParquetRecordReader.nextBatch(VectorizedParquetRecordReader.java:256) 应用 > 在 org.apache.spark.sql.execution.datasources.parquet.VectorizedParquetRecordReader.nextKeyValue(VectorizedParquetRecordReader.java:159) 应用 > 在 org.apache.spark.sql.execution.datasources.RecordReaderIterator.hasNext(RecordReaderIterator.scala:39) 应用程序 > 在 org.apache.spark.sql.execution.datasources.FileScanRDD$$anon$1.hasNext(FileScanRDD.scala:124) App > at org.apache.spark.sql.execution.datasources.FileScanRDD$$anon$1.nextIterator(FileScanRDD.scala:215)


对于以下 spark 命令:

val df = spark.read.parquet("s3a://.../file.parquet")
df.show(5, false)

【问题讨论】:

    标签: apache-spark apache-spark-sql parquet


    【解决方案1】:

    对我来说 above 没有做到这一点,但以下做到了:

    --conf spark.hadoop.fs.s3a.experimental.input.fadvise=sequential
    

    不知道为什么,但给了我提示的是this issue 以及有关选项here 的一些详细信息。

    【讨论】:

      【解决方案2】:

      我认为你可以绕过这个问题

      --conf  spark.sql.parquet.enableVectorizedReader=false
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      • 2013-06-05
      • 2020-05-17
      • 2012-12-28
      • 1970-01-01
      • 2014-09-09
      相关资源
      最近更新 更多