中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hive的存儲格式對比

發布時間:2020-09-03 18:20:55 來源:網絡 閱讀:2896 作者:bigdata_lzw 欄目:大數據

在生產中可以通過Hive表的文件格式及查詢速度的對比來確定使用哪種文件格式,以節省空間和提高查詢速度;

官方參考文檔:https://cwiki.apache.org/confluence/display/HIVE


結論:

????壓縮效果:

????????最好的是:bzip2;bzip2壓縮比很高,但是占用時間較久

????? ? 其次:orc和parquet的壓縮幾乎一致;生產建議選擇orc或者parquet;?

????查詢性能:由于數據量太小,得出的結果不準確;大佬的生產經驗是parquet的查詢性能要優于orc;

Hive支持的存儲格式有:

? ? Text File

????SequenceFile

????RCFile

????Avro Files

????ORC Files

????Parquet

注:Hive默認的格式為Text File,可以通過set hive.default.fileformat查看

>?set?hive.default.fileformat;
hive.default.fileformat=TextFile

以下將對每種文件格式進行對比:

創建TextFile表

#原始數據格式為TextFile,大小為65M
[hadoop@hadoop001?~]$?hadoop?fs?-du?-s?-h?/input/*
64.9?M??194.7?M??/input/part-r-00000

#創建表并加載TextFile數據
CREATE?EXTERNAL?TABLE?textfile?(
cdn?string,?
region?string,?
level?string,?
time?string,?
ip?string,?
domain?string,?
url?string,?
traffic?bigint)
ROW?FORMAT?DELIMITED?FIELDS?TERMINATED?BY?'\t';?

load?data?local?inpath?'/home/hadoop/part-r-00000'?overwrite?into?table?textfile;

可以看到此數據大小的64.9M

Hive的存儲格式對比

從上面的表中創建一個bzip2壓縮的表:

hive支持在創建表的時候對數據進行壓縮,配置如下:

設置開啟壓縮:set?hive.exec.compress.output=true;

查看壓縮的格式:set mapreduce.output.fileoutputformat.compress.codec;

配置壓縮的格式:set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.BZip2Codec

#創建一個bzip2壓縮的表
create?table?textfile_bzip2?as?select?*?from?textfile;


可以看到啟動壓縮以后,大小只有13.84M,格式為bz2

Hive的存儲格式對比

創建SequenceFile表

#創建SequenceFile表
CREATE?EXTERNAL?TABLE?seqfile?(
cdn?string,?
region?string,?
level?string,?
time?string,?
ip?string,?
domain?string,?
url?string,?
traffic?bigint)
ROW?FORMAT?DELIMITED?FIELDS?TERMINATED?BY?'\t'
stored?as?sequencefile;

#加載數據
insert?into?table?seqfile?select?*?from?textfile;
注:默認用load加載數據時,由于源文件是textfile,而表格式為sequencefile,所以無法直接加載,要借用一個臨時表使用insert?into進行加載

可以看到sequencefile格式的表數據比原始文件還要,這是因為sequencefile表在創建時,增加了很多額外信息,在生產中不使用此種類型的文件格式;

Hive的存儲格式對比

創建RCFile表

#創建RCFile表
CREATE?EXTERNAL?TABLE?rcfile?(
cdn?string,?
region?string,?
level?string,?
time?string,?
ip?string,?
domain?string,?
url?string,?
traffic?bigint)
ROW?FORMAT?DELIMITED?FIELDS?TERMINATED?BY?'\t'
stored?as?rcfile;

#加載數據
insert?into?table?rcfile?select?*?from?textfile;

rcfile的作用僅僅是將存儲空間節省了10%左右,在生產中不使用此種文件格式;


創建ORC Files:orc是基于rc,是優化過后的列式存儲

關于orc的官方介紹:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC

#創建orc格式的表;默認orcfile是采用zlib格式進行壓縮
CREATE?EXTERNAL?TABLE?orcfile?(
cdn?string,?
region?string,?
level?string,?
time?string,?
ip?string,?
domain?string,?
url?string,?
traffic?bigint)
ROW?FORMAT?DELIMITED?FIELDS?TERMINATED?BY?'\t'
stored?as?orcfile;

#加載數據
insert?into?table?orcfile?select?*?from?textfile;

#創建orc格式的表,指定不采用zlib壓縮;通過"orc.compress"="NONE"指定
create?table?orcfile_none
stored?as?orc?tblproperties?("orc.compress"="NONE")?
as?select?*?from?textfile;

orcfile采用zlib壓縮:

Hive的存儲格式對比


orcfile不采用zlib壓縮:

Hive的存儲格式對比

總結:通過對比,采用zlib壓縮時,節省的空間更多一點


創建Parquet格式的表

#創建Parquet格式不使用壓縮
create?table?parquetfile
stored?as?parquet
as?select?*?from?textfile;


#創建Parquet格式使用gzip壓縮
set?parquet.compression=gzip;

create?table?parquetfile_gzip
stored?as?parquet
as?select?*?from?textfile;

注:通過對比,Parquet格式使用gzip壓縮時,可以節省大量的空間

parquet不經過gzip壓縮:可以看到幾乎沒有壓縮多少空間

Hive的存儲格式對比

parquet經過gzip壓縮:可以看到壓縮后的數據很代;

Hive的存儲格式對比

????

查詢性能對比:

查詢語句:select count(*) from textfile|rcfile|orcfile|parquetfile where ip='210.35.230.31';

查詢條數:

????textfile:查詢了全表的所有數據,查詢68085397條數據;

????rcfile:查詢1973371條數據;

????orcfile:查詢2883851條數據;

????parquetfile:查詢了8622602條數據;

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

双柏县| 武乡县| 平湖市| 连平县| 横峰县| 若羌县| 纳雍县| 新宁县| 白山市| 略阳县| 丘北县| 湟中县| 甘德县| 乌拉特前旗| 灵石县| 鸡泽县| 长垣县| 马鞍山市| 潞西市| 巴彦淖尔市| 灵宝市| 河源市| 邯郸县| 东乌珠穆沁旗| 驻马店市| 洞口县| 泰来县| 定远县| 房山区| 晋宁县| 田阳县| 鄂伦春自治旗| 邹城市| 云阳县| 翼城县| 马关县| 双辽市| 资兴市| 门源| 礼泉县| 鞍山市|