Apache Spark无法读取通过流作业写入的Parquet文件

时间:2019-07-27 08:23:47

标签: apache-spark spark-streaming parquet

当我尝试使用选项“ mergeSchema”:“ true”读取当前由另一个Spark Streaming作业编写的镶木地板文件时,出现错误:

java.io.IOException: Could not read footer for file
val df = spark
    .read
    .option("mergeSchema", "true")
    .parquet("path.parquet")

不进行架构合并,我可以读取文件,但是可以通过架构合并来读取此类文件,而与可能进行文件更新的辅助工作无关吗?

1 个答案:

答案 0 :(得分:6)

在创建数据框之前,请执行以下操作:

  

spark.sql(“ set spark.sql.files.ignoreCorruptFiles = true”)

即启用此配置-spark.sql.files.ignoreCorruptFiles

here所述,如果此配置为true,则遇到损坏或不存在的文件时,Spark作业将继续运行,并且仍将返回已读取的内容。此外,merge schema flow使用此配置。

可从Spark 2.1.1+下载