在日常工作中,常见的数据文件格式有csv, json和parquet.
Comma-separated values (CSV)是一种直接以纯文本方式保存的文件, 通常第一行定义了列名, 后面是数据。没列之间用逗号分割。 因为这个格式是纯文本的, 几乎可以用文本编辑器都可以打开。
Json也是常见的格式,个人理解可以看做是Key-value pair来保存数据。如果有很多行数据,每一行的数据都有相同的key的话,个人理解无效的数据是非常多的,个人理解json不适合用在大数据的存储上。
parquet是大数据中使用最普遍的数据格式。 它是列存储格式。在很多查询上能获得很好的性能。 同时在数据压缩上也有很好的实现。 下面的截图是databricks上介绍它的文章提到的csv和parquet的对比。
在 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()
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。