這篇文章給大家分享的是有關Hive中如何使用MAP JOIN的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
創新互聯于2013年創立,是專業互聯網技術服務公司,擁有項目網站建設、成都網站設計網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元新昌做網站,已為上家服務,為新昌各地企業和個人服務,聯系電話:13518219792
Hive中簡介及使用MAP JOIN
Hive中的Join可分為Common Join(Reduce階段完成join)和Map Join(Map階段完成join)。本文簡單介紹一下mapjoin的原理和機制。
一、MAP 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.
假設a表為一張大表,b為小表,并且hive.auto.convert.join=true,那么Hive在執行時候會自動轉化為MapJoin。
三、測試
1、兩表關聯:
點擊(此處)折疊或打開
select e.empno,e.ename,e.deptno,d.deptno,d.dname from emp e join dept d on e.deptno = d.deptno;
條件:emp表數據為1000條,dept表數據為100條;
說明:執行時間mapjoin會通過元數據(metadata)進行查找,發現是否存在小表(根據hive.mpajoin.samlltable.filesize參數設置,判斷是否為小表。此參數默認25M)。
存在小表時將先行進行小表加載到內存中,即dept表,如上HQL語句將dept表加載至內存中,最后再用emp表中數據一條一條與內存中數據進行關聯查詢。
2、多表關聯
條件:emp表數據為1000條,dept表數據為100條,emp_partition表數據為500條;
點擊(此處)折疊或打開
select e.empno,e.ename,e.deptno,d.deptno,d.dname from emp e join dept d join emp_partition c on e.deptno = d.deptno and e.empno = c.empno;
說明:執行時間mapjoin會通過元數據(metadata)進行查找,發現是否存在小表(根據hive.mpajoin.samlltable.filesize參數設置,判斷是否為小表。此參數默認25M)。
存在小表時將先行進行小表加載到內存中,即dept、emp_partition表,如上HQL語句將dept表加載至內存中,最后再用emp表中數據一條一條與內存中數據進行關聯查詢。
注:以上可以對照SQL的執行計劃或執行日志更詳細,后續補充相關截圖及說明
四、使用MAPJOIN可解決以下實際問題:
1、有一個極小的表<100行(d表是部門)
2、需要做不等值join操作(a.x<b.y或者a.x like="" b.y等)。普通join語法不支持不等于操作,hive語法解析會直接拋出錯誤。="" 五、相關參數
點擊(此處)折疊或打開
1、小表自動選擇Mapjoin
set hive.auto.convert.join=true;
默認值:false。該參數為true時,Hive自動對左邊的表統計量,若是小表就加入內存,即對小表使用Map join
2、小表閥值
set hive.mapjoin.smalltable.filesize=25000000;
默認值:25M
hive.smalltable.filesize (replaced by hive.mapjoin.smalltable.filesize in Hive 0.8.1)
3、map join做group by操作時,可使用多大的內存來存儲數據。若數據太大則不會保存在內存里
set hive.mapjoin.followby.gby.localtask.max.memory.usage;
默認值:0.55
4、本地任務可以使用內存的百分比
set hive.mapjoin.localtask.max.memory.usage;
默認值:0.90
感謝各位的閱讀!關于“Hive中如何使用MAP JOIN”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
本文名稱:Hive中如何使用MAPJOIN
文章源于:http://m.kartarina.com/article18/jecogp.html
成都網站建設公司_創新互聯,為您提供面包屑導航、、網站內鏈、網站排名、商城網站、App設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯