MapReduce例項 多表關聯

2021-08-02 03:47:44 字數 1518 閱讀 3226

多表關聯和單錶關聯類似,它也是通過對原始資料進行一定的處理,從其中挖掘出關心的資訊。輸入是兩個檔案,乙個代表工廠表,包含工廠名列和位址編號列;另乙個代表位址表,包含位址名列和位址編號列。要求從輸入資料中找出工廠名和位址名的對應關係,輸出"工廠名——位址名"表。

1.源資料:

factory:

factoryname                    addressed

beijing red star     1

shenzhen thunder     3

guangzhou honda     2

beijing rising     1

guangzhou development bank 2

tencent         3

back of beijing      1

address:

addressid    addressname

1     beijing

2     guangzhou

3     shenzhen

4     xian

樣例輸出如下所示:

actoryname                        addressname

back of beijing      beijing

beijing red star     beijing

beijing rising       beijing

guangzhou development bank guangzhou

guangzhou honda     guangzhou

shenzhen thunder     shenzhen

tencent         shenzhen

2.思路分析:

多表關聯和單錶關聯相似,都類似於資料庫中的自然連線。相比單錶關聯,多表關聯的左右表和連線列更加清楚。所以可以採用和單錶關聯的相同的處理方式,map識別出輸入的行屬於哪個表之後,對其進行分割,將連線的列值儲存在key中,另一列和左右表標識儲存在value中,然後輸出。reduce拿到連線結果之後,解析value內容,根據標誌將左右表內容分開存放,然後求笛卡爾積,最後直接輸出。本題中,將兩個輸入檔案轉換成兩個表,1表是工廠--位址編號表,2表是位址編號--位址,現在要求輸出工廠--位址表,

只要兩個表的位址編號一樣即可,所以map函式以位址編號作為key。思路很簡單,而梧桐現在卡在對輸入檔案的處理上。。。。。。

多表關聯更新

用優惠表裡面的70006569的優惠的開始時間 來更新lik.temp yangmm 1115 discnt 的開始時間。這就出現問題了第乙個問題 同乙個使用者的70006569 優惠的開始時間可能有好幾個 取哪乙個?這就需要rank 函式來解決。第二個問題更新的時候會出現無法將null值插入.這個...

oracle update多表關聯

update a.a3 a.a3 b.b3 的問題 表a 結構 a1 a2 a3 表b 結構 b1,b2,b3 其中 a1 b1 為pk 切值相同 就是可以使用a1 b1 了.請問用sql 語句或過程該如何實現如下的功能?更新a 表的 a3 用a.a3 與b.b3之和更新.3 update a se...

sql 多表關聯

專案中遇到多表關聯查詢,device info與device oper是一對多關係,project info,branch info與device info是一對多關係。多表的查詢 select o.d.devicename,p.projectname,b.branchname r.releasei...