導航:首頁 > 文件目錄 > 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壓縮文件格式相關的資料

熱點內容
大數據清洗什麼 瀏覽:413
拓者設計吧室內設計教程 瀏覽:583
js腳本來控制timer 瀏覽:596
excel被同名文件覆蓋 瀏覽:161
iphone4越獄恢復教程 瀏覽:29
電腦關機桌面文件丟失 瀏覽:657
哪些app不要刪掉 瀏覽:240
手機儲存路徑找不到文件 瀏覽:908
debian升級軟體 瀏覽:732
昆明做什麼網站比較好 瀏覽:480
法甲去哪個app看 瀏覽:680
小米手機刪除錄音文件在哪裡 瀏覽:257
word字體高寬比例 瀏覽:539
app怎麼查看流量用在什麼網站 瀏覽:684
為什麼sns文件找不到 瀏覽:671
解壓cad提示文件破損 瀏覽:249
如何對圖片加密文件名 瀏覽:410
數據管理庫系統軟體有哪些 瀏覽:861
蘋果7如何打開軟體網路連接 瀏覽:831
手機圖片加入文件管理 瀏覽:718

友情鏈接