Spark拼花阅读错误

时间:2018-01-10 12:49:11

标签: apache-spark-sql parquet

我正在开发一个Spark项目,当我尝试使用java加载此文件时,我有一个采用镶木地板格式的文件,它给出了以下错误。但是,当我使用相同的路径在hive中加载相同的文件并从table_name中编写查询select *时,所以它的工作正常和数据也正在进行中。请帮我解决这个问题。

  

java.io.IOException:无法读取页脚:   java.lang.RuntimeException:损坏的文件:页脚索引不是   在文件内   org.apache.parquet.hadoop.ParquetFileReader.readAllFootersInParallel(ParquetFileReader.java:247)     在   org.apache.spark.sql.execution.datasources.parquet.ParquetRelation $$ anonfun $ 28.apply(ParquetRelation.scala:754)     在   org.apache.spark.sql.execution.datasources.parquet.ParquetRelation $$ anonfun $ 28.apply(ParquetRelation.scala:743)     在   org.apache.spark.rdd.RDD $$ anonfun $ mapPartitions $ 1 $$ anonfun $ $申请17.apply(RDD.scala:710)     在   org.apache.spark.rdd.RDD $$ anonfun $ mapPartitions $ 1 $$ anonfun $ $申请17.apply(RDD.scala:710)     在   org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38)     在org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:300)     在org.apache.spark.rdd.RDD.iterator(RDD.scala:264)at   org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66)at at   org.apache.spark.scheduler.Task.run(Task.scala:88)at   org.apache.spark.executor.Executor $ TaskRunner.run(Executor.scala:214)     在   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)     在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615)     在java.lang.Thread.run(Thread.java:745)引起:   java.lang.RuntimeException:损坏的文件:页脚索引不是   在文件内   org.apache.parquet.hadoop.ParquetFileReader.readFooter(ParquetFileReader.java:427)     在   org.apache.parquet.hadoop.ParquetFileReader $ 2.call(ParquetFileReader.java:237)     在   org.apache.parquet.hadoop.ParquetFileReader $ 2.call(ParquetFileReader.java:233)     在java.util.concurrent.FutureTask.run(FutureTask.java:262)

1 个答案:

答案 0 :(得分:-4)

You can try below options

1)  sqlContext.read.parquet("path") 

2) sqlContext.read.format(fileFormat)
.option("header", header) // Use first line of all files as header
.option("inferSchema", inferSchema) // Automatically infer data types
.load(source)

If your issue didn't resolved, please post the sample of code.