您當前的位置:首頁 > 資訊中心 > 開源大數據分析引擎 > 開源大數據分析引擎-7.3.6 Parquet文件組織方式

開源大數據分析引擎-7.3.6 Parquet文件組織方式

 ? 2016-09-06 00:00:00

  7.3.6 Parquet數據文件組織方式

  雖然Parquet數據文件是面向列存儲的,但是也不是一個列一個數據文件。parqUet將一行所 有字段都存在同一個數據文件中。一個Parquet數據文件的大大小是1GB,我們要確保10和網 絡傳輸的參數與這個大小想匹配。

  在這1GB的數據文件內,所有的行被重新組織,所有行的第一列的值相鄰存放,然后是第二 列,第三列,以此類推。把同一列的值集中存放,因為數據類型都是一樣的,所以也使針對單列 的壓縮更有效率。

  當Impala需要讀取某列數據時,只需要打開數據文件只讀取被連續存放在一起的該列相關的 數據就可以了。如果查詢中或者WHERE條件中還出現了其他列,這些不同的列也可以在同一個 數據文件中找到。

  如果INSERT插入的數據沒有1GB,那么終的數據文件可能會小一些。如果我們要使用多 個ETL作業來進行INSERT操作,需要盡量保證數據量是1GB左右,或者是LGB的倍數。

  1. RLE和數據字編碼

  基于生產環境的真實數據值,Parquet自動采用向游程編碼(RLE)或者數據字典編碼方式對 數據進行自動壓縮。在數據以上述的技術對值進行相對緊湊的編碼之后,我們還可以進一步使用 壓縮算法對其進行壓縮。Parquet支持三種方式:Snappy、Gzip和無壓縮。雖然Parquet文件的規 范也支持LZO壓縮,但是目前Impala的Parquet文件還不支持該壓縮算法。

  Impala對Parquet文件中的數據值使用游程編碼(RLE)或者數據字典編碼進行壓縮編碼,對 整個Parquet數據文件本身使用Snappy或者Gzip進行壓縮。無論是對數據值進行那種編碼,還是 對數據文件進行壓縮都是Impala自動進行的,這大大節省了時間。比如,數據字典編碼會對重復 出現的長字符串,后續的長字符串僅會存儲指向第一個字符串的指針而非存儲字符串本身,以節 省存儲空間。使用數據字典編碼時,一定要保證編碼的列的非重復值不得超過16384。而游程編 碼(RLE)著重處理連續的重復值序列,如果一個值連續多行出現,那么使用游程編碼(RLE) 可以將其縮寫為值和連續出現的次數。

  

100期30选5