Spark - 阅读时如何跳过或忽略空的gzip文件

Ant*_*tti 18 pyspark spark-dataframe pyspark-sql

我有几百个文件夹,每个文件夹有成千上万的gzip文本文件,我试图将它们读入数据框中spark.read.csv().

在这些文件中,有些文件的长度为零,导致错误:

java.io.EOFException:输入流的意外结束

码:

df = spark.read.csv('s3n://my-bucket/folder*/logfiles*.log.gz',sep='\t',schema=schema)
Run Code Online (Sandbox Code Playgroud)

我已经尝试设置modeDROPMALFORMED与阅读sc.textFile(),但没有运气.

处理空的或损坏的gzip文件的最佳方法是什么?

小智 19

从Spark 2.1开始,您可以通过启用spark.sql.files.ignoreCorruptFiles选项来忽略损坏的文件.将其添加到spark-submit或pyspark命令:

--conf spark.sql.files.ignoreCorruptFiles = true

  • 它也没有在线记录2.3.0.要显示所有spark.sql.*config选项 - 在pyspark中运行:spark.sql("SET -v").show(n = 200,truncate = False),其中spark是SparkSession对象 (3认同)