Spark的parquet介紹
- 列式存儲佈局可加速查詢,只檢查需要的列並對執行計算,也就是隻讀取一個數據文件或表的小部分數據。
- Parquet 支持靈活的壓縮選項,可以顯著減少磁盤上的存儲。
- 轉換需要時間,時間長了一些。
- 查詢性能的提升在某些情況下可能達到 30 倍或更高,存儲的節省可高達 75%。
如果在 HDFS 上擁有基於文本的數據文件或表,而且正在使用 Spark SQL 對它們執行查詢,那麼強烈推薦將文本數據文件轉換爲 Parquet 數據文件,以實現性能和存儲收益。
1. 讀取parquet
dtParquet = spark.read.parquet("sp路徑")
dtParquet.show(5)
可以直接read一個parquet文件,就轉成了dataframe。因爲parquet文件裏有比較豐富的信息,不像普通的文件。所以推薦是把其他文件的格式,清洗後轉換成parquet數據格式。
2. 轉成 parquet 文件再讀
# SAMPLE 10% OF DATA, SPLIT INTO TRAIINING AND VALIDATION AND SAVE IN BLOB
dfSampled = df.sample(False, 0.1, seed=123)
dfSampled.repartition(10).write.mode("overwrite").parquet("sp路徑")
dtParquet = spark.read.parquet("sp路徑")
dtParquet.show(5)