Hive中如何使用MAPJOIN

這篇文章給大家分享的是有關Hive中如何使用MAP JOIN的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

創新互聯于2013年創立,是專業互聯網技術服務公司,擁有項目網站建設、成都網站設計網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元新昌做網站,已為上家服務,為新昌各地企業和個人服務,聯系電話:13518219792

Hive中簡介及使用MAP JOIN

   Hive中的Join可分為Common Join(Reduce階段完成join)和Map Join(Map階段完成join)。本文簡單介紹一下mapjoin的原理和機制。

一、MAP JOIN圖
Hive中如何使用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、兩表關聯:

點擊(此處)折疊或打開

  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條;

點擊(此處)折疊或打開

  1. 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. 1、小表自動選擇Mapjoin

  2. set hive.auto.convert.join=true;

  3. 默認值:false。該參數為true時,Hive自動對左邊的表統計量,若是小表就加入內存,即對小表使用Map join

  4. 2、小表閥值

  5. set hive.mapjoin.smalltable.filesize=25000000;

  6. 默認值:25M

  7. hive.smalltable.filesize (replaced by hive.mapjoin.smalltable.filesize in Hive 0.8.1)

  8. 3、map join做group by操作時,可使用多大的內存來存儲數據。若數據太大則不會保存在內存里

  9. set hive.mapjoin.followby.gby.localtask.max.memory.usage;

  10. 默認值:0.55

  11. 4、本地任務可以使用內存的百分比

  12. set hive.mapjoin.localtask.max.memory.usage;

  13. 默認值:0.90

感謝各位的閱讀!關于“Hive中如何使用MAP JOIN”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

本文名稱:Hive中如何使用MAPJOIN
文章源于:http://m.kartarina.com/article18/jecogp.html

成都網站建設公司_創新互聯,為您提供面包屑導航網站內鏈網站排名商城網站App設計

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都seo排名網站優化
主站蜘蛛池模板: 亚洲AV无码成人网站久久精品大| 中文字幕人妻无码系列第三区| 亚洲AV无码一区二区三区在线观看| 久久久久久亚洲精品无码| 无码精品A∨在线观看无广告| 久久精品无码一区二区三区日韩| 无码人妻丰满熟妇区五十路百度| 日本精品人妻无码免费大全| 亚洲AV无码乱码国产麻豆穿越| 午夜麻豆国产精品无码| 曰批全过程免费视频在线观看无码 | 精品无码国产自产拍在线观看| 丰满爆乳无码一区二区三区| 日韩AV无码精品人妻系列| 亚洲av无码天堂一区二区三区| 亚洲Av永久无码精品黑人| 无码国内精品人妻少妇蜜桃视频| 狠狠精品干练久久久无码中文字幕| 久久精品aⅴ无码中文字字幕| 免费A级毛片无码久久版| 亚洲熟妇无码爱v在线观看| 人妻AV中出无码内射| 粉嫩大学生无套内射无码卡视频| 国产成人无码精品久久久性色| 国内精品久久久久久无码不卡| 精品欧洲av无码一区二区| 国产AV无码专区亚洲AV毛网站| 波多野结衣AV无码| 亚洲人成无码网站久久99热国产| 亚洲中文无码永久免| 毛片免费全部播放无码| 亚洲成AV人片在线播放无码| 永久免费av无码网站yy| 中文人妻无码一区二区三区| 亚洲中文字幕无码一久久区| 中国少妇无码专区| 亚洲综合无码AV一区二区| 中文字幕人妻三级中文无码视频| 精品久久久久久无码人妻热| 亚洲 无码 在线 专区| 久久久久亚洲?V成人无码|