大表join小表,獨鍾愛mapjoin

2021-10-09 16:17:28 字數 1374 閱讀 5642

在hive調優裡面,經常會問到乙個很小的表和乙個大表進行join,如何優化。

shuffle 階段代價非常昂貴,因為它需要排序和合併。減少 shuffle 和 reduce 階段的代價可以提高任務效能。

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。

mapjoin分為兩個階段:

2020大資料面試題真題總結(附答案)

深入**order by,sort by,distribute by,cluster by

hive調優,資料工程師成神之路

資料質量那點事

你真的了解全量表,增量表及拉鍊表嗎?

緩慢變化維(scd)常見解決方案

全方位解讀星型模型,雪花模型及星座模型

sqoop or datax

left join(on&where)

你們公司還在用sparkonyan嗎?

大廠高頻面試題-連續登入問題

朋友面試資料研發崗遇到的面試題

資料倉儲分層架構

clickhouse實踐篇-sql語法

clickhouse實踐篇-表引擎

簡單聊一聊大資料學習之路

朋友面試資料專家崗遇到的面試題

hadoop快速入門

數倉工程師的利器-hive詳解

olap引擎—kylin介紹

hbase從入門到入坑

kafka

datax-資料抽取同步利器

spark資料傾斜解決方案

spark統一記憶體管理機制

資料治理之元資料管理

小表驅動大表

類似迴圈巢狀。for int i 5 如果小的迴圈在外層,對於資料庫連線來說就只連線5次,進行5000次操作,如果1000在外,則需要進行1000次資料庫連線,從而浪費資源,增加消耗。這就是為什麼要小表驅動大表。在tb dept bigdata表中插入100條資料,在tb emp bigdata表中...

Hive資料傾斜案列(大表join大表)

使用者軌跡工程的效能瓶頸一直是etract track info,其中耗時大戶主要在於trackinfo與pm info進行左關聯的環節,trackinfo與pm info兩張表均為gb級別,左關聯 塊如下 from trackinfo a left outer join pm info b on ...

MySQL 小表驅動大表

小表驅動大表 準備兩站表 create table student id int 11 notnull,no varchar 20 default null name varchar 20 default null primary key id engine innodb default chars...