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)
我已经尝试设置mode
到DROPMALFORMED
与sc.textFile()
但阅读没有运气。
处理空的或损坏的gzip文件的最佳方法是什么?
答
从Spark 2.1开始,您可以通过启用spark.sql.files.ignoreCorruptFiles选项来忽略损坏的文件。将此添加到您的spark-submit或pyspark命令中:
--conf spark.sql.files.ignoreCorruptFiles=true
此配置在何处记录?我在https://spark.apache.org/docs/latest/configuration.html中找不到它 – leon
它不在官方文档中,但它包含在Jira票证中:https://issues.apache.org/jira /浏览/ SPARK-19082 并由火花贡献者小李在本演示中引用: https://fr.slideshare.net/databricks/building-robust-etl-pipelines-with-apache-spark/20 –