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

Pyspark Spark-如何在读取时跳过或忽略空gzip文件,pyspark,spark-dataframe,pyspark-sql,Pyspark,Spark Dataframe,Pyspark Sql,我有几百个文件夹,每个文件夹在s3中都有数千个Gzip文本文件,我正试图用spark.read.csv()将它们读入数据框 在这些文件中,有些文件的长度为零,导致错误: java.io.EOFException:输入流意外结束 代码: 我尝试过将模式设置为dropmorformed,并使用sc.textFile()读取,但没有成功 处理空的或损坏的gzip文件的最佳方法是什么?从Spark 2.1开始,您可以通过启用Spark.sql.files.ignoreCorruptFiles选项忽略损坏

我有几百个文件夹,每个文件夹在s3中都有数千个Gzip文本文件,我正试图用
spark.read.csv()
将它们读入数据框

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

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

代码:

我尝试过将
模式设置为
dropmorformed
,并使用
sc.textFile()
读取,但没有成功


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

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

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


该配置记录在哪里?我没有在官方文档中找到它,但它包含在Jira票证中:spark撰稿人小李在本演示中引用了它:2.3.0也没有在线文档。要显示所有spark.sql.*配置选项,请在pyspark:spark.sql(“SET-v”).show(n=200,truncate=False)中运行此选项,其中spark是SparkSession对象。我已经使用pyspark测试了spark.sql.files.ignoreCorruptFiles,它不会处理S3中的空gzip csv文件。除了编写脚本来查找和删除它们之外,我还没有找到其他解决方法。@34,您忽略它们的策略/方法是什么?我目前有一种在程序中使用管道、标准输出和搜索>0的文件的黑客方法。。。实际上就像hadoop fs-ls/input/folder/*.gz | grep一样
df = spark.read.csv('s3n://my-bucket/folder*/logfiles*.log.gz',sep='\t',schema=schema)