如何在Spark中处理多个csv.gz文件?

时间:2017-07-06 09:03:47

标签: csv apache-spark compression pyspark-sql gz

我有一个包含多个表的庞大数据集。每个表都分成数百个csv.gz文件,我需要通过PySpark将它们导入Spark。有关如何将“csv.gz”文件导入Spark的任何想法? SparkSQL的SparkContext或SparkSession是否提供了导入此类文件的功能?

1 个答案:

答案 0 :(得分:1)

您可以使用spark.read.csv()本地导入gzip压缩文件:

from pyspark.sql import SparkSession
spark = SparkSession \
        .builder \
        .appName("stackOverflow") \
        .getOrCreate()

fpath1 = "file1.csv.gz"
DF = spark.read.csv(fpath1, header=True)

其中DF是一个spark DataFrame。

您可以通过输入list个文件来读取多个文件:

fpath1 = "file1.csv.gz"
fpath2 = "file2.csv.gz"
DF = spark.read.csv([fpath1, fpath2] header=True)

您还可以创建一个"临时视图"允许SQL查询:

fpath1 = "file1.csv.gz"
fpath2 = "file2.csv.gz"
DF = spark.read.csv([fpath1, fpath2] header=True)
DF.createOrReplaceTempView("table_name")

DFres = spark.sql("SELECT * FROM table_name)

其中DFres是从查询生成的spark DataFrame。