當乙個大表和乙個或多個小表join時,您可以在select語句中顯式指定mapjoin以提公升查詢效能。
通常情況下,join操作在reduce階段執行表連線。整個join過程包含map、shuffle、reduce三個階段。
mapjoin在map階段執行表連線,而非等到reduce階段才執行表連線。這樣就節省了大量資料傳輸的時間以及系統資源,從而起到了優化作業的作用。
mapjoin在map階段會將指定表的資料全部載入在記憶體中。因此指定的表僅能為小表,且表被載入到記憶體後占用的總記憶體不得超過640mb。
在大表和乙個或多個小表join的場景下,mapjoin會將您指定的小表全部載入到執行join操作的程式的記憶體中,在map階段完成表連線從而加快join的執行速度。
您需要在select語句中使用hint提示/*+ mapjoin(table) */
才會執行mapjoin。
假設表sale_detail為大表,別名為b,表shop為小表,別名為a。
maxcompute sql不支援在普通join的on條件中使用不等值表示式、or邏輯等複雜的join條件,但是在mapjoin中可以進行上述操作。
select /*+ mapjoin(a) */
a.total_price,
b.total_price
from shop a join sale_detail b
on a.total_price < b.total_price or a.total_price + b.total_price < 500;
mapjoin多個小表示例請參見如何用mapjoin快取多張小表?。 阿里雲 vs Azure 大資料
本文比較了azure和阿里雲提供的資料庫服務,以幫助專業人士了解兩者的差異和共同點。無論您計畫從azure遷移至阿里雲,或是選擇同時使用azure 阿里雲的多雲模式,本文都將幫助您了解阿里雲的資料庫服務。阿里雲將資料庫服務分為如下表中的服務型別,每種型別提供了各具特點的產品,本文將從以下列表中重點介...
Lateral View 阿里大資料用法
lateral view和表生成函式 例如split explode等函式 結合使用,它能夠將一行資料拆成多行資料,並對拆分後的資料進行聚合。語法定義如下。lateralview lateral view outer udtf expression tablealias as columnalias...
阿里雲大資料元件選型
大資料使用場景e mapreduce 產品當前主要滿足企業的以下大資料場景 批處理場景該場景對磁碟吞吐和網路吞吐要求高,處理的資料量也大,但對資料處理的實時性要求不高,您可選用 mapreduce pig spark 元件。該場景對記憶體要求不高,選型時您需要重點關注大作業對 cpu 和記憶體的需求...