Hive的MapJoin機制

來源:互聯網
上載者:User

Hive的MapJoin機制

什麼是MapJoin?
MapJoin顧名思義,就是在Map階段進行表之間的串連。而不需要進入到Reduce階段才進行串連。這樣就節省了在Shuffle階段時要進行的大量資料轉送。從而起到了最佳化作業的作用。

MapJoin的原理:
即在map 端進行join,其原理是broadcast join,即把小表作為一個完整的驅動表來進行join操作。通常情況下,要串連的各個表裡面的資料會分布在不同的Map中進行處理。即同一個Key對應的Value可能存在不同的Map中。這樣就必須等到 Reduce中去串連。要使MapJoin能夠順利進行,那就必須滿足這樣的條件:除了一份表的資料分布在不同的Map中外,其他串連的表的資料必須在每 個Map中有完整的拷貝。MAPJION會把小表全部讀入記憶體中,在map階段直接拿另外一個表的資料和記憶體中表資料做匹配,由於在map是進行了join操作,省去了reduce啟動並執行效率也會高很多。

MapJoin適用的情境:
mapjoin的適用情境如關聯操作中有一張表非常小,.不等值的連結操作。通過上面分析你會發現,並不是所有的情境都適合用MapJoin. 它通常會用在如下的一些情景:在二個要串連的表中,有一個很大,有一個很小,這個小表可以存放在記憶體中而不影響效能。這樣我們就把小表檔案複製到每一個Map任務的本地,再讓Map把檔案讀到記憶體中待用。

MapJoin的實現方法:
    1)在Map-Reduce的驅動程式中使用靜態方法DistributedCache.addCacheFile()增加要拷貝的小表檔案,。 JobTracker在作業啟動之前會擷取這個URI列表,並將相應的檔案拷貝到各個TaskTracker的本地磁碟上。
    2)在Map類的setup方法中使用DistributedCache.getLocalCacheFiles()方法擷取檔案目錄,並使用標準的檔案讀寫API讀取相應的檔案。

Hive版本區別:
Hive內建提供的最佳化機制之一就包括MapJoin。
 在Hive v0.7之前,需要給出MapJoin的指示,Hive才會提供MapJoin的最佳化。Hive v0.7之後的版本已經不需要給出MapJoin的指示就進行最佳化。它是通過如下配置參數來控制的:hive> set hive.auto.convert.join=true;hive 0.11之後,在表的大小符合設定時(hive.auto.convert.join.noconditionaltask=true,hive.auto.convert.join.noconditionaltask.size=10000,hive.mapjoin.smalltable.filesize=25000000), 預設會把join轉換為map join(認 hive.ignore.mapjoin.hint為true,hive.auto.convert.join為true),不過hive0.11的 map join bug比較多,可以通過在預設關閉map join convert,在需要時再設定hint:hive.auto.convert.join=false  。hive.ignore.mapjoin.hint=false.Hive v0.12.0版本,預設狀況下MapJoin最佳化是開啟的。也就是hive.auto.convert.join=true。Hive還提供另外一個參數--表檔案的大小作為開啟和關閉MapJoin的閾值。hive.mapjoin.smalltable.filesize=25000000

基於Hadoop叢集的Hive安裝

Hive內表和外表的區別

Hadoop + Hive + Map +reduce 叢集安裝部署

Hive本地獨立模式安裝

Hive學習之WordCount單詞統計

Hive運行架構及配置部署

Hive 的詳細介紹:請點這裡
Hive 的:請點這裡

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.