大資料Hive系列之Hive MapReduce
阿新 • • 發佈:2018-11-02
1. JOIN
1.1 join操作
INSERT OVERWRITE TABLE pv_users
SELECT pv.pageid, u.age FROM page_view pv JOIN user u ON (pv.userid = u.userid);
1.2 MR過程
- Map
a. 以 JOIN ON 條件中的列作為 Key,如果有多個列,則 Key 是這些列的組合。
b. 以 JOIN 之後所關心的列作為 Value,當有多個列時,Value 是這些列的組合。
在 Value 中還會包含表的 Tag 資訊,用於標明此 Value 對應於哪個表。
c. 按照 Key 進行排序。
- Shuffle
根據 Key 的值進行 Hash,並將 Key/Value 對按照 Hash 值推至不同對 Reduce 中。
- Reduce
Reduce根據 Key 值進行 Join 操作,並且通過 Tag 來識別不同的表中的資料。
1.3 MR過程圖
2. GROUP BY
2.1 group by操作
SELECT pageid, age, count(1) FROM pv_users GROUP BY pageid, age;
2.2 MR過程圖
3. DISTINCT
3.1 distinct操作
SELECT age, count(distinct pageid) FROM pv_users GROUP BY age;
3.2 MR過程圖