91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hive中Join方式有哪些

發布時間:2021-12-10 14:02:06 來源:億速云 閱讀:229 作者:小新 欄目:大數據

這篇文章主要為大家展示了“Hive中Join方式有哪些”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Hive中Join方式有哪些”這篇文章吧。

Common/Shuffle/Reduce Join

Reduce Join在Hive中也叫Common Join或Shuffle Join
如果兩邊數據量都很大,它會進行把相同key的value合在一起,正好符合我們在sql中的join,然后再去組合,如圖所示。

Hive中Join方式有哪些

Map Join

1) 大小表連接:

如果一張表的數據很大,另外一張表很少(<1000行),那么我們可以將數據量少的那張表放到內存里面,在map端做join。
Hive支持Map Join,用法如下

select /*+ MAPJOIN(time_dim) */ count(1) from store_sales join time_dim on (ss_sold_time_sk = t_time_sk)

3) MAPJOIN 結合 UNIONALL
原始sql:

select a.*,coalesce(c.categoryid,’NA’) as app_category from (select * from t_aa_pvid_ctr_hour_js_mes1
) a left outer join (select * fromt_qd_cmfu_book_info_mes
) c on a.app_id=c.book_id;

數據分布如下:

NA      617370129
2       118293314
1       40673814
d       20151236
b       1846306
s       1124246
5       675240
8       642231
6       611104
t       596973
4       579473
3       489516
7       475999
9       373395
107580  10508


設置:

當然也可以讓hive自動識別,把join變成合適的Map Join如下所示
注:當設置為true的時候,hive會自動獲取兩張表的數據,判定哪個是小表,然后放在內存中

set hive.auto.convert.join=true; select count(*) from store_sales join time_dim on (ss_sold_time_sk = t_time_sk)

SMB(Sort-Merge-Buket) Join

場景:

大表對小表應該使用MapJoin,但是如果是大表對大表,如果進行shuffle,那就要人命了啊,第一個慢不用說,第二個容易出異常,既然是兩個表進行join,肯定有相同的字段吧。

tb_a - 5億(按排序分成五份,每份1億放在指定的數值范圍內,類似于分區表)
a_id
100001 ~ 110000 - bucket-01-a -1億
110001 ~ 120000
120001 ~ 130000
130001 ~ 140000
140001 ~ 150000

tb_b - 5億(同上,同一個桶只能和對應的桶內數據做join)
b_id
100001 ~ 110000 - bucket-01-b -1億
110001 ~ 120000
120001 ~ 130000
130001 ~ 140000
140001 ~ 150000

注:實際生產環境中,一天的數據可能有50G(舉例子可以把數據弄大點,比如說10億分成1000個bucket)。

原理:

在運行SMB Join的時候會重新創建兩張表,當然這是在后臺默認做的,不需要用戶主動去創建,如下所示:

Hive中Join方式有哪些

設置(默認是false):

set hive.auto.convert.sortmerge.join=true set hive.optimize.bucketmapjoin=true; set hive.optimize.bucketmapjoin.sortedmerge=true;

以上是“Hive中Join方式有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吐鲁番市| 库尔勒市| 临泽县| 荥阳市| 巩义市| 永和县| 故城县| 柳州市| 黎川县| 元阳县| 左权县| 崇阳县| 类乌齐县| 瓦房店市| 娄底市| 临沧市| 延长县| 乌鲁木齐县| 略阳县| 车致| 隆林| 两当县| 通渭县| 成都市| 安塞县| 安顺市| 金寨县| 梨树县| 同心县| 驻马店市| 林州市| 阿鲁科尔沁旗| 五大连池市| 洛宁县| 栾城县| 沾化县| 屏边| 东海县| 鄯善县| 顺义区| 宜丰县|