關於面試--【hive parquet數據格式內部結構】

1創建表

create table parquet_log(
  events string,
  header map<string,string>
)
STORED AS PARQUET;


CREATE TABLE dwt.tmp_detail_pc_channel Stored AS parquet AS select * form

2PARQUET

我們的開源項目 Parquet 是 Hadoop 上的一種支持列式存儲文件格式,起初只是 Twitter 和 Coudera 在合作開發,發展到現在已經有包括 Criteo公司 在內的許多其他貢獻者了. Parquet 用 Dremel 的論文中描述的方式,把嵌套結構存儲成扁平格式。

儘管 Parquet 是一個面向列的文件格式,不要期望每列一個數據文件。Parquet 在同一個數據文件中保存一行中的所有數據,以確保在同一個節點上處理時一行的所有列都可用。Parquet 所做的是設置 HDFS 塊大小和最大數據文件大小爲 1GB,以確保 I/O 和網絡傳輸請求適用於大批量數據(What Parquet does is to set an HDFS block size and a maximum data file size of 1GB, to ensure that I/O and network transfer requests apply to large batches of data)。

在成G的空間內,一組行的數據會重新排列,以便第一行所有的值被重組爲一個連續的塊,然後是第二行的所有值,依此類推。

爲了在列式存儲中可以表達嵌套結構,用叫做 definition level和repetition level兩個值描述。分別表達某個值在整個嵌套格式中,最深嵌套層數,以及在同一個嵌套層級中第幾個值。

Parquet 使用一些自動壓縮技術,例如行程編碼(run-length encoding,RLE) 和字典編碼(dictionary encoding),基於實際數據值的分析。一當數據值被編碼成緊湊的格式,使用壓縮算法,編碼的數據可能會被進一步壓縮。Impala 創建的 Parquet 數據文件可以使用 Snappy, GZip, 或不進行壓縮;Parquet 規格還支持 LZO 壓縮,但是目前 Impala 不支持 LZO 壓縮的 Parquet 文件。

除了應用到整個數據文件的 Snappy 或 GZip 壓縮之外,RLE 和字段編碼是 Impala 自動應用到 Parquet 數據值羣體的壓縮技術。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章