在日常工作中,常见的数据文件格式有csv, json和parquet.
Comma-separated values (CSV)是一种直接以纯文本方式保存的文件, 通常第一行定义了列名, 后面是数据。没列之间用逗号分割。 因为这个格式是纯文本的, 几乎可以用文本编辑器都可以打开。

Json也是常见的格式,个人理解可以看做是Key-value pair来保存数据。如果有很多行数据,每一行的数据都有相同的key的话,个人理解无效的数据是非常多的,个人理解json不适合用在大数据的存储上。

parquet是大数据中使用最普遍的数据格式。 它是列存储格式。在很多查询上能获得很好的性能。 同时在数据压缩上也有很好的实现。 下面的截图是databricks上介绍它的文章提到的csv和parquet的对比。

image.png
在 AWS/Azure上,存储是钱, 传输数据是钱,cpu的使用也是钱,如果你的系统中含有大量的CSV, JSON数据, 换成parquet数据格式会显著的降低数据文件的大小, 提供程序的运行速度。

下面的代码演示了如何利用pyspark来读写csv和parquet文件。

from pyspark.sql import SparkSession

if __name__ == "__main__":

    spark = SparkSession \
        .builder \
        .master("local[3]") \
        .appName("sample2") \
        .getOrCreate()

    parquetDF = spark.read \
        .format("parquet") \
        .load("data/green_tripdata_2025-01.parquet")

    print(parquetDF.count())
    parquetDF.show(5)

    # coalesce(1) is used to save it as one file
    parquetDF.coalesce(1).write \
        .format("parquet") \
        .mode("overwrite") \
        .option("path", "data\\parquet\\") \
        .save()

    csvDF = spark.read \
        .format("csv") \
        .load("data/green_tripdata_2025-01.csv")

    print(csvDF.count())
    csvDF.show(5)

    # coalesce(1) is used to save it as one file
    csvDF.coalesce(1).write \
        .format("csv") \
        .mode("overwrite") \
        .option("path", "data\\csv\\") \
        .save()

    spark.stop()

Gitee: https://gitee.com/yanghang1977/pyspark


愚公爬山
1 声望0 粉丝