通过 Spark 读取时忽略损坏的 Orc 文件

Ignoring corrupted Orc files when reading via Spark

我在 HDFS 中有多个 Orc 文件,目录结构如下:

orc/
├─ data1/
│  ├─ 00.orc
│  ├─ 11.orc
├─ data2/
│  ├─ 22.orc
│  ├─ 33.orc

我正在使用 Spark 读取这些文件:

spark.sqlContext.read.format("orc").load("/orc/data*/")

问题是其中一个文件已损坏所以我想skip/ignore那个文件。

我看到的唯一方法是获取所有 Orc 文件并在将其传递给 Spark 之前逐个验证(通过读取它们)。但是这样我将读取相同的文件两次。

有什么方法可以避免两次读取文件? Spark 是否提供任何相关信息?

这将帮助您:

spark.sql("set spark.sql.files.ignoreCorruptFiles=true")