Hive 基礎(chǔ)之:分區(qū)、桶蕴忆、Sort Merge Bucket Join - 遠(yuǎn)方的專欄 - 博客頻道 - CSDN.NET
http://blog.csdn.net/u014774781/article/details/50953563
SMB join 颤芬,Join 是整個(gè) MR/Hive 最為核心的部分之一,是每個(gè) Hadoop/Hive/DW RD 必須掌握的部分套鹅,之前也有幾篇文章聊到過(guò) MR/Hive 中的 join站蝠,其實(shí)底層都是相同的,只是上層做了些封裝而已
1卓鹿、Hive 分區(qū)表
在Hive Select查詢中一般會(huì)掃描整個(gè)表內(nèi)容沉衣,會(huì)消耗很多時(shí)間做沒(méi)必要的工作。有時(shí)候只需要掃描表中關(guān)心的一部分?jǐn)?shù)據(jù)减牺,因此建表時(shí)引入了partition概念。分區(qū)表指的是在創(chuàng)建表時(shí)指定的partition的分區(qū)空間存谎。
Hive可以對(duì)數(shù)據(jù)按照某列或者某些列進(jìn)行分區(qū)管理拔疚,所謂分區(qū)我們可以拿下面的例子進(jìn)行解釋。
當(dāng)前互聯(lián)網(wǎng)應(yīng)用每天都要存儲(chǔ)大量的日志文件既荚,幾G稚失、幾十G甚至更大都是有可能。存儲(chǔ)日志恰聘,其中必然有個(gè)屬性是日志產(chǎn)生的日期句各。在產(chǎn)生分區(qū)時(shí),就可以按照日志產(chǎn)生的日期列進(jìn)行劃分晴叨。把每一天的日志當(dāng)作一個(gè)分區(qū)凿宾。
將數(shù)據(jù)組織成分區(qū),主要可以提高數(shù)據(jù)的查詢速度兼蕊。至于用戶存儲(chǔ)的每一條記錄到底放到哪個(gè)分區(qū)初厚,由用戶決定。即用戶在加載數(shù)據(jù)的時(shí)候必須顯示的指定該部分?jǐn)?shù)據(jù)放到哪個(gè)分區(qū)孙技。
2产禾、Hive 桶
對(duì)于每一個(gè)表(table)或者分區(qū)排作, Hive可以進(jìn)一步組織成桶,也就是說(shuō)桶是更為細(xì)粒度的數(shù)據(jù)范圍劃分亚情。Hive也是 針對(duì)某一列進(jìn)行桶的組織妄痪。Hive采用對(duì)列值哈希,然后除以桶的個(gè)數(shù)求余的方式?jīng)Q定該條記錄存放在哪個(gè)桶當(dāng)中楞件。把表(或者分區(qū))組織成桶(Bucket)有兩個(gè)理由:
(1)獲得更高的查詢處理效率衫生。桶為表加上了額外的結(jié)構(gòu),Hive 在處理有些查詢時(shí)能利用這個(gè)結(jié)構(gòu)履因。具體而言障簿,連接兩個(gè)在(包含連接列的)相同列上劃分了桶的表,可以使用 Map 端連接 (Map-side join)高效的實(shí)現(xiàn)栅迄。比如JOIN操作站故。對(duì)于JOIN操作兩個(gè)表有一個(gè)相同的列,如果對(duì)這兩個(gè)表都進(jìn)行了桶操作毅舆。那么將保存相同列值的桶進(jìn)行JOIN操作就可以西篓,可以大大較少JOIN的數(shù)據(jù)量。
(2)使取樣(sampling)更高效憋活。在處理大規(guī)模數(shù)據(jù)集時(shí)岂津,在開發(fā)和修改查詢的階段,如果能在數(shù)據(jù)集的一小部分?jǐn)?shù)據(jù)上試運(yùn)行查詢悦即,會(huì)帶來(lái)很多方便吮成。
Hive基礎(chǔ)之Hive是什么以及使用場(chǎng)景 - 瞌睡中的葡萄虎 - 博客園
http://www.cnblogs.com/luogankun/p/3901685.html
ETL的流程(Extraction-Transformate-Loading):將關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)抽取到HDFS上,hive作為數(shù)據(jù)倉(cāng)庫(kù)辜梳,經(jīng)過(guò)hive的計(jì)算分析后粱甫,將結(jié)果再導(dǎo)入到關(guān)系型數(shù)據(jù)庫(kù)的過(guò)程。
Hive是構(gòu)建在Hadoop之上的數(shù)據(jù)倉(cāng)庫(kù)
1)使用HQL作為查詢接口作瞄;
2)使用HDFS作為存儲(chǔ)茶宵;
3)使用MapReduce作為計(jì)算;
Hive應(yīng)用場(chǎng)景
數(shù)據(jù)源:
1)文件數(shù)據(jù)宗挥,如中國(guó)移動(dòng)某設(shè)備每天產(chǎn)生大量固定格式的文件乌庶;
2)數(shù)據(jù)庫(kù)
以上兩種不同的數(shù)據(jù)源有個(gè)共同點(diǎn):要使用hive,那么必須要將數(shù)據(jù)放到hive中契耿;通常采用如下兩種方式:
1)文件數(shù)據(jù):load到hive
2)數(shù)據(jù)庫(kù): sqoop到hive
數(shù)據(jù)的離線處理瞒大;
hive的執(zhí)行延遲比較高,因?yàn)閔ive常用于數(shù)據(jù)分析的宵喂,對(duì)實(shí)時(shí)性要求不高糠赦;
hive優(yōu)勢(shì)在于處理大數(shù)據(jù),對(duì)于處理小數(shù)據(jù)沒(méi)有優(yōu)勢(shì),因?yàn)閔ive的執(zhí)行延遲比較高拙泽。
處理數(shù)據(jù)存放在hive表中淌山,那么前臺(tái)系統(tǒng)怎么去訪問(wèn)hive的數(shù)據(jù)呢?
先將hive的處理結(jié)果數(shù)據(jù)轉(zhuǎn)移到關(guān)系型數(shù)據(jù)庫(kù)中才可以顾瞻,sqoop就是執(zhí)行導(dǎo)入導(dǎo)出的操作