深圳網(wǎng)絡(luò)品牌百度seo是啥意思
&&大數(shù)據(jù)學(xué)習(xí)&&
🔥系列專欄: 👑哲學(xué)語錄: 承認(rèn)自己的無知,乃是開啟智慧的大門
💖如果覺得博主的文章還不錯的話,請點(diǎn)贊👍+收藏??+留言📝支持一下博>主哦🤞
壓縮
在Hive表中和計算過程中,保持?jǐn)?shù)據(jù)的壓縮,對磁盤空間的有效利用和提高查詢性能都是十分有益的。
?Hive表數(shù)據(jù)進(jìn)行壓縮
在Hive中,不同文件類型的表,聲明數(shù)據(jù)壓縮的方式是不同的。
1)TextFile
若一張表的文件類型為TextFile,若需要對該表中的數(shù)據(jù)進(jìn)行壓縮,多數(shù)情況下,無需在建表語句做出聲明。直接將壓縮后的文件導(dǎo)入到該表即可,Hive在查詢表中數(shù)據(jù)時,可自動識別其壓縮格式,進(jìn)行解壓。
需要注意的是,在執(zhí)行往表中導(dǎo)入數(shù)據(jù)的SQL語句時,用戶需設(shè)置以下參數(shù),來保證寫入表中的數(shù)據(jù)是被壓縮的。
--SQL語句的最終輸出結(jié)果是否壓縮
set hive.exec.compress.output=true;
--輸出結(jié)果的壓縮格式(以下示例為snappy)
set?mapreduce.output.fileoutputformat.compress.codec =org.apache.hadoop.io.compress.SnappyCodec;
2)ORC
若一張表的文件類型為ORC,若需要對該表數(shù)據(jù)進(jìn)行壓縮,需在建表語句中聲明壓縮格式如下:
create table orc_table(column_specs)stored as orctblproperties ("orc.compress"="snappy");
3)Parquet
若一張表的文件類型為Parquet,若需要對該表數(shù)據(jù)進(jìn)行壓縮,需在建表語句中聲明壓縮格式如下:
create table orc_table(column_specs)stored as parquettblproperties ("parquet.compression"="snappy");
計算過程中使用壓縮
1)單個MR的中間結(jié)果進(jìn)行壓縮
單個MR的中間結(jié)果是指Mapper輸出的數(shù)據(jù),對其進(jìn)行壓縮可降低shuffle階段的網(wǎng)絡(luò)IO,可通過以下參數(shù)進(jìn)行配置:
--開啟MapReduce中間數(shù)據(jù)壓縮功能
set mapreduce.map.output.compress=true;
--設(shè)置MapReduce中間數(shù)據(jù)數(shù)據(jù)的壓縮方式(以下示例為snappy)
set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;
2)單條SQL語句的中間結(jié)果進(jìn)行壓縮
單條SQL語句的中間結(jié)果是指,兩個MR(一條SQL語句可能需要通過MR進(jìn)行計算)之間的臨時數(shù)據(jù),可通過以下參數(shù)進(jìn)行配置:
--是否對兩個MR之間的臨時數(shù)據(jù)進(jìn)行壓縮
set hive.exec.compress.intermediate=true;
--壓縮格式(以下示例為snappy)
set?hive.intermediate.compression.codec=?org.apache.hadoop.io.compress.SnappyCodec;