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

溫馨提示×

溫馨提示×

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

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

Hive中join的方式有哪些

發布時間:2021-06-22 17:55:25 來源:億速云 閱讀:211 作者:Leah 欄目:編程語言

Hive中join的方式有哪些,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

  hive在實際的應用過程中,大部份分情況都會涉及到不同的表格的連接,例如在進行兩個table的join的時候,利用MR的思想會消耗大量的內存,良妃磁盤的IO,大幅度的影響性能,因為shuffle真的好令人擔心啊,總之,就是各種問題都是由他產生的。下面介紹一下涉及hive在join的時候的優化方式

第一:在map端產生join

         mapJoin的主要意思就是,當鏈接的兩個表是一個比較小的表和一個特別大的表的時候,我們把比較小的table直接放到內存中去,然后再對比較大的表格進行map操作。join就發生在map操作的時候,每當掃描一個大的table中的數據,就要去去查看小表的數據,哪條與之相符,繼而進行連接。這里的join并不會涉及reduce操作。map端join的優勢就是在于沒有shuffle,真好。在實際的應用中,我們這樣設置:

[sql]      view plain  copy  

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

          這樣設置,hive就會自動的識別比較小的表,繼而用mapJoin來實現兩個表的聯合。看看下面的兩個表格的連接。這里的dept相對來講是比較小的。我們看看會發生什么,如圖所示:

Hive中join的方式有哪些
            

           注意看啦,這里的第一句話就是運行本地的map join任務,繼而轉存文件到XXX.hashtable下面,在給這個文件里面上傳一個文件進行map join,之后才運行了MR代碼去運行計數任務。說白了,在本質上mapjoin根本就沒有運行MR進程,僅僅是在內存就進行了兩個表的聯合。具體運行如下圖:

  第二:common join

                  common join也叫做shuffle join,reduce join操作。這種情況下生再兩個table的大小相當,但是又不是很大的情況下使用的。具體流程就是在map端進行數據的切分,一個block對應一個map操作,然后進行shuffle操作,把對應的block shuffle到reduce端去,再逐個進行聯合,這里優勢會涉及到數據的傾斜,大幅度的影響性能有可能會運行speculation,這塊兒在后續的數據傾斜會講到。因為平常我們用到的數據量小,所以這里就不具體演示了。

                    第三:SMBJoin

              smb是sort  merge bucket操作,首先進行排序,繼而合并,然后放到所對應的bucket中去,bucket是hive中和分區表類似的技術,就是按照key進行hash,相同的hash值都放到相同的buck中去。在進行兩個表聯合的時候。我們首先進行分桶,在join會大幅度的對性能進行優化。也就是說,在進行聯合的時候,是table1中的一小部分和table1中的一小部分進行聯合,table聯合都是等值連接,相同的key都放到了同一個bucket中去了,那么在聯合的時候就會大幅度的減小無關項的掃描。

看完上述內容,你們掌握Hive中join的方式有哪些的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

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

AI

津南区| 卓资县| 桃江县| 克拉玛依市| 涡阳县| 林西县| 景泰县| 西宁市| 沅陵县| 宁波市| 泰来县| 吐鲁番市| 剑阁县| 平江县| 常州市| 出国| 四川省| 杭州市| 罗甸县| 福清市| 顺平县| 洪泽县| 新兴县| 永寿县| 太仆寺旗| 仁化县| 电白县| 南华县| 台南市| 墨江| 礼泉县| 聂拉木县| 大连市| 盖州市| 临汾市| 保德县| 天祝| 昔阳县| 元朗区| 余庆县| 无棣县|