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

问题描述:

我有几百个文件夹,每个文件夹都有数千个gzip文件,我试图用spark.read.csv()将它们读入数据框。Spark - 如何在读取时跳过或忽略空的gzip文件

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

java.io.EOFException: Unexpected end of input stream

代码:

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

我已经尝试设置modeDROPMALFORMEDsc.textFile()但阅读没有运气。

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

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

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

+0

此配置在何处记录?我在https://spark.apache.org/docs/latest/configuration.html中找不到它 – leon

+0

它不在官方文档中,但它包含在Jira票证中:https://issues.apache.org/jira /浏览/ SPARK-19082 并由火花贡献者小李在本演示中引用: https://fr.slideshare.net/databricks/building-robust-etl-pipelines-with-apache-spark/20 –