大資料學習14 Hive中Join的原理和機制

2021-08-08 11:35:03 字數 1295 閱讀 8049

**:

籠統的說,hive中的join可分為common join(reduce階段完成join)和map join(map階段完成join)。本文簡單介紹一下兩種join的原理和機制。

如果不指定mapjoin或者不符合mapjoin的條件,那麼hive解析器會將join操作轉換成common join,即:在reduce階段完成join.

整個過程包含map、shuffle、reduce階段。

讀取源表的資料,map輸出時候以join on條件中的列為key,如果join有多個關聯鍵,則以這些關聯鍵的組合作為key;

map輸出的value為join之後所關心的(select或者where中需要用到的)列;同時在value中還會包含表的tag資訊,用於標明此value對應哪個表;

按照key進行排序

根據key的值進行hash,並將key/value按照hash值推送至不同的reduce中,這樣確保兩個表中相同的key位於同乙個reduce中

以下面的hql為例,**其過程:

看了這個圖,應該知道如何使用mapreduce進行join操作了吧。

mapjoin通常用於乙個很小的表和乙個大表進行join的場景,具體小表有多小,由引數hive.mapjoin.smalltable.filesize來決定,該引數表示小表的總大小,預設值為25000000位元組,即25m。

hive0.7之前,需要使用hint提示 /*+ mapjoin(table) */才會執行mapjoin,否則執行common join,但在0.7版本之後,預設自動會轉換map join,由引數hive.auto.convert.join來控制,預設為true.

仍然以9.1中的hql來說吧,假設a表為一張大表,b為小表,並且hive.auto.convert.join=true,那麼hive在執行時候會自動轉化為mapjoin。

圖中紅框圈出了執行local task的資訊。

大資料學習之Hive

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 1 hive處理的資料儲存在hdfs 2 hive分析資料底層的實現是mapreduce 3 執行程式執行在yarn上 hive的優缺點 帶...

大資料學習 hive基本操作

1 建表 create table student id int,name string age int row format delimited fields terminated by 2 建立乙個student.txt 新增資料 1,zhangsan,10 2,lisi,20 3,wnagwu...

大資料hive個人學習總結

hive是乙個可以把資料用sql處理的工具,資料儲存再hdfs上,底層處理是用mr,通過用sql的方式通過mr獲得需要的資料,執行程式執行再yarn上。資料儲存不同,hive資料儲存到hdfs上,用mr處理,mysql儲存在磁碟上,可以把hive看成對hdfs上的資料處理的客戶端工具,除了語言有一樣...