【发布时间】:2019-07-30 11:52:07
【问题描述】:
我正在使用spark.sql() 读取表格,然后尝试打印计数。
但有些文件丢失或直接从 HDFS 中删除。
Spark 失败并出现以下错误:
Caused by: java.io.FileNotFoundException: File does not exist: hdfs://nameservice1/some path.../data
Hive 能够为我提供相同查询的无错误计数。 表是一个外部分区表。
我想忽略丢失的文件并防止我的 Spark 作业失败。 我在互联网上搜索并尝试在创建 spark 会话时设置以下配置参数但没有运气。
SparkSession.builder
.config("spark.sql.hive.verifyPartitionPath", "false")
.config("spark.sql.files.ignoreMissingFiles", true)
.config("spark.sql.files.ignoreCorruptFiles", true)
.enableHiveSupport()
.getOrCreate()
以上配置参数参考https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-properties.html。
val sql = "SELECT count(*) FROM db.table WHERE date=20190710"
val df = spark.sql(sql)
println(df.count)
我希望 spark 代码在没有 FileNotFoundException 的情况下成功完成,即使分区信息中缺少某些文件。
我想知道为什么spark.sql.files.ignoreMissingFiles 没有效果。
Spark 版本为 2.2.0.cloudera1。 请建议。提前致谢。
【问题讨论】:
标签: apache-spark apache-spark-sql