天天看點

parquet參考parquet

參考

大資料開源列式存儲引擎Parquet和ORC

新型列式存儲格式 Parquet 詳解

讀寫parquet格式檔案的幾種方式

Parquet file optional field does not exist

parquet

列存

列存使用場景:資料列很多,且每次操作僅針對若幹列的情景

parquet資料存儲

schema描述存儲結構

有group和primitive兩種,用以表示嵌套類型

group 複雜類型,基本處于中間節點,并不存儲資料,為虛拟節點

primitive 基本類型,int,String之類,處于葉子節點,存儲具體資料

字段屬性

required 必須出現1次

repeted 可以出現0次或多次

optional 可以出現0次或1次

資料模型(repetition && definition)

repetition level:表示該數值是在那一層開始出現重複的;0表示一個新的記錄;required & optional 無重複含義, 無需該定義;在寫入的時候将其了解為該節點和路徑上的哪一個repeated節點是不共享的,讀取的時候将其了解為需要在哪一層建立一個新的repeated節點,這樣的話每一列最大的repeated level值就等于路徑上的repeated節點的個數(不包括根節點)

definition level:表示在此路徑上有多少可選的field被定義了;required 必須有資料,無需該字段;

(R,D,value)[R表示repetition level;D表示definition level]

檔案格式

行組(row group);列塊(Column Chunk);頁(Page)

parquet與orc對比

parquet能夠更好的支援嵌套結構,其最初的設計動機就是存儲嵌套式資料,如json,thrift,Protocolbuffer等,将這類資料存儲成列式格式

其他方面似乎orc的性能更好

比較方面 Parquet orc
發展狀态 目前都是Apache開源的頂級項目,列式存儲引擎
開發語言 Java java
主導公司 Twitter/Cloudera Hortonworks
列編碼 支援多種編碼,字典,RLE,Delta等 支援主流編碼,與Parquet類似
ACID 不支援 支援ACID事務
修改操作(update,delete等) 不支援 支援
支援索引(統計資訊) 粗粒度索引,bolck/group/chunk級别統計資訊 粗粒度索引,file/Stripe/row級别
查詢性能 orc稍好
資料壓縮能力 orc好一些
支援的查詢引擎 Apache Drill/impala Apache hive

在mapreduce中簡單使用parquet

繼續閱讀