hive遍历_从Hive中的stored as file_foramt看hive调优
一、行式數(shù)據(jù)庫(kù)和列式數(shù)據(jù)庫(kù)的對(duì)比
1、存儲(chǔ)比較
行式數(shù)據(jù)庫(kù)存儲(chǔ)在hdfs上式按行進(jìn)行存儲(chǔ)的,一個(gè)block存儲(chǔ)一或多行數(shù)據(jù)。而列式數(shù)據(jù)庫(kù)在hdfs上則是按照列進(jìn)行存儲(chǔ),一個(gè)block可能有一列或多列數(shù)據(jù)。
2、壓縮比較
對(duì)于行式數(shù)據(jù)庫(kù),必然按行壓縮,當(dāng)一行中有多個(gè)字段,各個(gè)字段對(duì)應(yīng)的數(shù)據(jù)類型可能不一致,壓縮性能壓縮比就比較差。
對(duì)于列式數(shù)據(jù)庫(kù),必然按列壓縮,每一列對(duì)應(yīng)的是相同數(shù)據(jù)類型的數(shù)據(jù),故列式數(shù)據(jù)庫(kù)的壓縮性能要強(qiáng)于行式數(shù)據(jù)庫(kù)。
3、查詢比較
假設(shè)執(zhí)行的查詢操作是:select id,name from table_emp;
對(duì)于行式數(shù)據(jù)庫(kù),它要遍歷一整張表將每一行中的id,name字段拼接再展現(xiàn)出來(lái),這樣需要查詢的數(shù)據(jù)量就比較大,效率低。
對(duì)于列式數(shù)據(jù)庫(kù),它只需找到對(duì)應(yīng)的id,name字段的列展現(xiàn)出來(lái)即可,需要查詢的數(shù)據(jù)量小,效率高。
假設(shè)執(zhí)行的查詢操作是:select * from table_emp;
對(duì)于這種查詢整個(gè)表全部信息的操作,由于列式數(shù)據(jù)庫(kù)需要將分散的行進(jìn)行重新組合,行式數(shù)據(jù)庫(kù)效率就高于列式數(shù)據(jù)庫(kù)。
但是,在大數(shù)據(jù)領(lǐng)域,進(jìn)行全表查詢的場(chǎng)景少之又少,進(jìn)而我們使用較多的還是列式數(shù)據(jù)庫(kù)及列式儲(chǔ)存。
二、stored as file_format 詳解
1、建一張表時(shí),可以使用“stored as file_format”來(lái)指定該表數(shù)據(jù)的存儲(chǔ)格式,hive中,表的默認(rèn)存儲(chǔ)格式為TextFile。
2、TEXTFILE、SEQUENCEFILE、RCFILE、ORC等四種儲(chǔ)存格式及它們對(duì)于hive在存儲(chǔ)數(shù)據(jù)和查詢數(shù)據(jù)時(shí)性能的優(yōu)劣比較
TEXTFILE: 只是hive中表數(shù)據(jù)默認(rèn)的存儲(chǔ)格式,它將所有類型的數(shù)據(jù)都存儲(chǔ)為String類型,不便于數(shù)據(jù)的解析,但它卻比較通用。不具備隨機(jī)讀寫(xiě)的能力。支持壓縮。
SEQUENCEFILE: 這種儲(chǔ)存格式比TEXTFILE格式多了頭部、標(biāo)識(shí)、信息長(zhǎng)度等信息,這些信息使得其具備隨機(jī)讀寫(xiě)的能力。支持壓縮,但壓縮的是value。(存儲(chǔ)相同的數(shù)據(jù),SEQUENCEFILE比TEXTFILE略大)
RCFILE(Record Columnar File): 現(xiàn)在水平上劃分為很多個(gè)Row Group,每個(gè)Row Group默認(rèn)大小4MB,Row Group內(nèi)部再按列存儲(chǔ)信息。由facebook開(kāi)源,比標(biāo)準(zhǔn)行式存儲(chǔ)節(jié)約10%的空間。
ORC: 優(yōu)化過(guò)后的RCFile,現(xiàn)在水平上劃分為多個(gè)Stripes,再在Stripe中按列存儲(chǔ)。每個(gè)Stripe由一個(gè)Index Data、一個(gè)Row Data、一個(gè)Stripe Footer組成。每個(gè)Stripes的大小為250MB,每個(gè)Index Data記錄的是整型數(shù)據(jù)最大值最小值、字符串?dāng)?shù)據(jù)前后綴信息,每個(gè)列的位置等等諸如此類的信息。這就使得查詢十分得高效,默認(rèn)每一萬(wàn)行數(shù)據(jù)建立一個(gè)Index Data。ORC存儲(chǔ)大小為TEXTFILE的40%左右,使用壓縮則可以進(jìn)一步將這個(gè)數(shù)字降到10%~20%。
ORC這種文件格式可以作用于表或者表的分區(qū),可以通過(guò)以下幾種方式進(jìn)行指定:
示例:創(chuàng)建帶壓縮的ORC存儲(chǔ)表
PARQUET: 存儲(chǔ)大小為TEXTFILE的60%~70%,壓縮后在20%~30%之間。
注意:
總結(jié)
以上是生活随笔為你收集整理的hive遍历_从Hive中的stored as file_foramt看hive调优的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于登录tomcat8一直登录不进去问题
- 下一篇: python如何避免转义字符_如何解决因