如何使用spark DF或DS读取“ .gz”压缩文件?

pra*_*ady 2 gzip apache-spark apache-spark-sql spark-dataframe apache-spark-dataset

我有一个.gz格式的压缩文件,是否可以使用spark DF / DS直接读取文件?

详细信息:文件是带有制表符分隔的csv。

Sha*_*ica 5

读取压缩的csv的方式与读取未压缩的csv文件的方式相同。对于Spark 2.0版或更高版本,可以使用Scala如下进行操作(注意制表符分隔符的额外选项):

val df = spark.read.option("sep", "\t").csv("file.csv.gz")
Run Code Online (Sandbox Code Playgroud)

PySpark:

df = spark.read.csv("file.csv.gz", sep='\t')
Run Code Online (Sandbox Code Playgroud)

唯一需要考虑的额外因素是gz文件不可拆分,因此Spark需要使用单个内核读取整个文件,这会降低速度。读取完成后,可以重新整理数据以增加并行度。