1. 程式人生 > >MapReduce的Map Size Join以及Distributed Cache

MapReduce的Map Size Join以及Distributed Cache

 

首先介紹Distributed Cache(分散式快取),主要功能是把DataNode(客戶端)一些小的檔案送到DataNode上。

1. 通過job.addCacheFile(new Path(filename).toUri)

2.通過job.addCacheFile(new URI("xx/xxx/xxx/xx.json#customer_type"))

通過1和2來傳過去(都是URI 就是方便你知道在客戶端上這些檔案的位置  )

如果知道檔案路徑的話,new File正好幫你建立一個。

如果不知道檔案路徑,可以通過context一口氣獲取所有快取的檔案,放到一個列表裡,這樣想拿誰都可以。

客戶端某個檔案的內容會被拿到DataNode,但不會修改這些內容,拿過來預設是和原來的檔案一樣的名字。#號可以重新起名。

 

 

Map-Side Join就是這樣,在mapper的setup方法裡,把這些小表拿過來

erFile:File = new File("./er.csv") 

變成其他格式 比如Hashtable

然後和大表對照做Join