我有一个后缀为.gz的压缩文件,是否可能直接使用Spark DF/DS读取该文件?
细节:该文件是用制表符分隔的CSV文件。
我有一个后缀为.gz的压缩文件,是否可能直接使用Spark DF/DS读取该文件?
细节:该文件是用制表符分隔的CSV文件。
读取压缩的csv文件与读取未压缩的csv文件相同。对于Spark版本2.0+,可以使用Scala按以下方式完成(请注意选项中的额外制表符分隔符):
val df = spark.read.option("sep", "\t").csv("file.csv.gz")
PySpark:
df = spark.read.csv("file.csv.gz", sep='\t')
唯一需要考虑的额外因素是.gz文件无法分割,因此Spark需要使用单个核心读取整个文件,这会减慢速度。读取完成后,数据可以进行shuffle以增加并行性。
gzip
格式,必须使用单个核心进行读取。一个解决方法是先解压文件,然后使用Spark读取数据。或者您可以更改压缩类型,请参考此问题:https://dev59.com/v2Uq5IYBdhLWcg3wEcRZ - Shaidospark.read.textFile("file.csv.bz2")
(您也可以尝试使用spark.read.textFile
)。 - Shaido
spark.read.csv
可以处理 gzip 格式的文件。 - philantrovert