1. 程式人生 > >大資料IMF傳奇行動絕密課程第63課:Spark SQL下Parquet內幕深度解密

大資料IMF傳奇行動絕密課程第63課:Spark SQL下Parquet內幕深度解密

Spark SQL下Parquet內幕深度解密

1、Spark SQL下的Parquet意義再思考
2、Spark SQL下的Parquet內幕揭祕

一、Spark SQL下的Parquet意義再思考
1、如果說HDFS是大資料時代分散式檔案系統儲存的事實標準的話,Parquet則是整個大資料時代檔案儲存格式的事實標準
2、速度更快:從實用Spark SQL操作普通檔案CSV和Parquet檔案的速度對比上來看,絕大多數情況下使用Parquet會比使用CSV等普通檔案速度提升10倍左右(在一些普通檔案系統無法在Spark上成功執行程式的情況下,使用Parquet很多時候都可以成功執行)
3、Parquet的壓縮技術非常穩定出色,在Spark SQL中對壓縮技術的處理可能無法正常完成工作(例如會導致Lost Task、Lost Executor),使用Parquet就可以正常完成;
4、極大的減少磁碟I/O,通常情況下能夠減少75%的儲存空間,由此可以極大減少Spark SQL處理資料的時候資料輸入內容,尤其是Spark 1.6.x中下推過濾器在一些情況下可以極大地進一步減少磁碟的IO和記憶體的佔用;
Spark1.6.x+Parquet極大的提升了資料掃描的吞吐量,這極大的提高了資料的查詢速度
Spark1.6和Spark1.5.x相比較而言,提升了大約1倍的速度,在Spark 1.6.x中,操作Parquet時候CPU的使用也進行了極大的優化,有效的降低了CPU的使用
6、採用Parquet可以極大的優化Spark的排程和執行,測試表明Spark如果採用Parquet可以有效減少Stage的執行消耗,同時可以優化執行路徑;
二、Spark SQL下的Parquet內幕揭祕
1、列式儲存是以什麼基本格式來儲存資料的?表現上是樹狀資料結構,在內部有元資料的Table;
2、在具體的Parquet檔案儲存的時候有三個核心組成部分:
a)Storage Format: Parquet定義了具體的資料內部的型別和儲存格式;
b)Object Model Converters: Parquet中負責計算框架中資料物件和Parquet檔案中具體資料型別的對映;
c)Object Models:在Parquet中具有自己的Object Model定義的儲存格式,例如說Avro具有自己的物件Object Model,但是Parquet在處理相關格式資料的時候會使用自己的Object Model
3、對映完成後Parquet會進行自己的Column Encoding,然後儲存成為Parquet格式的檔案