1. 程式人生 > >大資料Hive系列之Hive MapReduce

大資料Hive系列之Hive MapReduce

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過程圖