当我尝试使用选项“ mergeSchema”:“ true”读取当前由另一个Spark Streaming作业编写的镶木地板文件时,出现错误:
java.io.IOException: Could not read footer for file
val df = spark
.read
.option("mergeSchema", "true")
.parquet("path.parquet")
不进行架构合并,我可以读取文件,但是可以通过架构合并来读取此类文件,而与可能进行文件更新的辅助工作无关吗?
答案 0 :(得分:6)
在创建数据框之前,请执行以下操作:
spark.sql(“ set spark.sql.files.ignoreCorruptFiles = true”)
即启用此配置-spark.sql.files.ignoreCorruptFiles
如here所述,如果此配置为true,则遇到损坏或不存在的文件时,Spark作业将继续运行,并且仍将返回已读取的内容。此外,merge schema flow使用此配置。
可从Spark 2.1.1+下载