導航:首頁 > 文件目錄 > snappy壓縮文件格式

snappy壓縮文件格式

發布時間:2023-10-08 07:47:55

1. hive文件格式

hive支持的存儲格式:
hive支持的存儲格式包括TextFile、SequenceFile、RCFile、Avro Files、ORC Files、Parquet。
TextFile:
Hive默認格式,數據不做壓縮,磁碟開銷大,數據解析開銷大。
可結合Gzip、Bzip2、Snappy等使用(系統自動檢查,執行查詢時自動解壓),但使用這種方式,hive不會對數據進行切分,從而無法對數據進行並行操作。
SequenceFile:
SequenceFile是Hadoop API 提供的一種二進制文件,它將數據以的形式序列化到文件中。這種二進制文件內部使用Hadoop 的標準的Writable 介面實現序列化和反序列化。它與Hadoop API中的MapFile 是互相兼容的。Hive 中的SequenceFile 繼承自Hadoop API 的SequenceFile,不過它的key為空,使用value 存放實際的值, 這樣是為了避免MR 在運行map 階段的排序過程。
SequenceFile的文件結構圖:

Header通用頭文件格式:
SEQ 3BYTE
Nun 1byte數字
keyClassName
ValueClassName
compression (boolean)指明了在文件中是否啟用壓縮
blockCompression (boolean,指明是否是block壓縮)
compression codec
Metadata 文件元數據
Sync 頭文件結束標志
Block-Compressed SequenceFile格式

RCFile
RCFile是Hive推出的一種專門面向列的數據格式。 它遵循「先按列劃分,再垂直劃分」的設計理念。當查詢過程中,針對它並不關心的列時,它會在IO上跳過這些列。需要說明的是,RCFile在map階段從 遠端拷貝仍然是拷貝整個數據塊,並且拷貝到本地目錄後RCFile並不是真正直接跳過不需要的列,並跳到需要讀取的列, 而是通過掃描每一個row group的頭部定義來實現的,但是在整個HDFS Block 級別的頭部並沒有定義每個列從哪個row group起始到哪個row group結束。所以在讀取所有列的情況下,RCFile的性能反而沒有SequenceFile高。

2. 大數據開發工程師Hive(Hive如何進行優化)

1數據存儲及壓縮優化

針對hive中表的存儲格式通常有textfile和orc,壓縮格式一般使用snappy。相比於 textfile格式存儲,orc佔有更少的存儲。因為hive底層使用MR計算架構,數據流是hdfs到磁碟再到hdfs,而且會有很多次IO讀寫操作,所以使用orc數據格式和snappy壓縮策略可以降低IO讀寫,還能降低網路傳輸量,這樣在一定程度上可以節省存儲空間,還能提升hql的執行效率;

2 Hive Job優化

①調節Jvm參數,重用Jvm;

②合理設置Map個數;

③合理設置Rece個數;

3 Sql語法優化

建表優化

1) Hive創建表的時候,可以建分區表,分桶表;

2) Hive創建表的時候,可以指定數據存儲格式:TextFile、SequenceFile、RCfile 、ORCfile;

查詢時優化

1) 列裁剪,在查詢時只讀取需要的列,避免全列掃描,不要使用select * from table;

2) 分區裁剪:在查詢時只讀取需要分區的數據,避免全表掃描;

3) 開啟謂詞下推:set hive.optimize.ppd = true,默認是true:

a. 將Sql語句中的where謂詞邏輯都盡可能提前執行,減少下游處理的數據量;

4) 大哪陵表join小表:

a. 開啟MapJoin:set hive.auto.convert.join=true:

b. MapJoin是將Join雙方比較小的那個表直接分發到各個Map進程的內存畝弊中,在 Map進程中進行Join操作, 這樣就不用進行Rece步驟 ,從而提高了速度( 大表left join小表才有效 ,小表left join大表會失效);

5) 大表join大表:

a. SMB Join :Sort Merge Bucket Join(數據不僅分桶了,而且每個桶數據是排好序了);

b. 開啟SMB Join之後,底層是根據兩個表join欄位進行分桶存儲,這樣迅緩族的話,兩張表就變為了基於桶之間join關聯查詢,而不是基於整張表的join,減少了笛卡爾積;

6) 少用in,用left semi join替代in:

a. 原始寫法:select a.id, a.name from a where a.id in (select b.id from b);

b. 用join改寫:select a.id, a.name from a join b on a.id = b.id;

c. left semi join改寫:select a.id, a.name from a left semi join b on a.id = b.id;

7) 用union all代替union,因為union all不需要去重,也不需要排序,效率高於union;

(每天1小題,進步1點點)

閱讀全文

與snappy壓縮文件格式相關的資料

熱點內容
怎麼在ps摳的圖變成矢量文件 瀏覽:405
口袋妖怪銀魂安卓v11 瀏覽:1
網站上芒果tv的賬號都是什麼 瀏覽:104
帶公式的表格如何刷新數據 瀏覽:81
數據標注語音和2d哪個好 瀏覽:145
保存excel文件的方法 瀏覽:655
手機上看不到電腦上的文件 瀏覽:626
關於ps的微信公眾號 瀏覽:612
矩陣論教程 瀏覽:971
字體文件分系統嗎 瀏覽:921
編程一級考試要帶什麼證件 瀏覽:923
extjs表格修改前數據 瀏覽:612
什麼是資料庫的函數 瀏覽:722
oppo手機怎麼用數據線連接電腦 瀏覽:247
恆智天成備份文件在哪裡 瀏覽:976
電腦沒聯網怎麼拷貝文件 瀏覽:224
wps工具欄怎麼換成中文 瀏覽:338
win7和xp共享文件 瀏覽:883
蘋果4代音量鍵沒反應 瀏覽:827
怎樣打開tif文件 瀏覽:153

友情鏈接