Skip to content

Commit 2677e02

Browse files
committed
fix:修复图床问题
1 parent 456fbf2 commit 2677e02

1 file changed

Lines changed: 6 additions & 6 deletions

File tree

docs/md/bigdata/Hive执行原理.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ GROUP BY pageid, age;
1717

1818
统计不同年龄用户访问不同网页的兴趣偏好:
1919

20-
![img](https://static001.geekbang.org/resource/image/0a/37/0ade10e49216575962e071d6fe9a7137.jpg)
20+
![](https://codeselect.oss-cn-shanghai.aliyuncs.com/0ade10e49216575962e071d6fe9a7137.jpg)
2121

2222
- 左边,要分析的数据表
2323
- 右边,分析结果
@@ -39,7 +39,7 @@ map函数的输出shuffle后,相同K及对应V放在一起,组成一个<K, V
3939

4040
在reduce函数内部,V集合里所有的数字被相加,然后输出。所以reduce输出就是<<2, 25>, 2>
4141

42-
![img](https://static001.geekbang.org/resource/image/bc/57/bc088edf00478c835003272696c44c57.jpg)
42+
![](https://codeselect.oss-cn-shanghai.aliyuncs.com/bc088edf00478c835003272696c44c57.jpg)
4343

4444
如此,一条SQL就被MapReduce计算完成。
4545

@@ -49,7 +49,7 @@ map函数的输出shuffle后,相同K及对应V放在一起,组成一个<K, V
4949

5050
Hive能直接处理我们输的SQL,调用MapReduce计算框架完成数据分析操作。
5151

52-
![](https://learning.oreilly.com/api/v2/epubs/urn:orm:book:9781491901687/files/images/hddg_1701.png)
52+
![](https://codeselect.oss-cn-shanghai.aliyuncs.com/hddg_1701.png)
5353

5454
通过Hive Client向Hive Server提交SQL命令:
5555

@@ -64,7 +64,7 @@ SELECT * FROM status_updates WHERE status LIKE 'michael jackson';
6464

6565
对应的Hive执行计划:
6666

67-
![](https://static001.geekbang.org/resource/image/cb/a6/cb1236ad035ca01cffbb9df47fa88fa6.jpg)
67+
![](https://codeselect.oss-cn-shanghai.aliyuncs.com/cb1236ad035ca01cffbb9df47fa88fa6.jpg)
6868

6969
Hive内部预置很多函数,Hive执行计划就是根据SQL语句生成这些函数的DAG,然后封装进MapReduce的map、reduce函数。该案例中的map函数调用三个Hive内置函数就完成map计算,且无需reduce。
7070

@@ -74,7 +74,7 @@ Hive内部预置很多函数,Hive执行计划就是根据SQL语句生成这些
7474

7575
pv_users表的数据无法直接得到,因为pageid来自用户访问日志,每个用户进行一次页面浏览,就会生成一条访问记录,保存在page_view表。而age年龄信息记录在表user。
7676

77-
![img](https://static001.geekbang.org/resource/image/82/2d/8254710229b1d749d08f7a0bb799ac2d.jpg)
77+
![](https://codeselect.oss-cn-shanghai.aliyuncs.com/8254710229b1d749d08f7a0bb799ac2d.jpg)
7878

7979
这两张表有相同字段userid,可连接两张表,生成pv_users表:
8080

@@ -84,7 +84,7 @@ SELECT pv.pageid, u.age FROM page_view pv JOIN user u ON (pv.userid = u.userid);
8484

8585
该SQL命令也能转化为MapReduce计算,连接过程:
8686

87-
![](https://static001.geekbang.org/resource/image/25/2a/25d62b355c976beb5b26af865ac2b92a.jpg)
87+
![](https://codeselect.oss-cn-shanghai.aliyuncs.com/25d62b355c976beb5b26af865ac2b92a.jpg)
8888

8989
join的MapReduce计算过程和group by稍不同,因为join涉及两张表,来自两个文件(夹),所以要在map输出时进行标记,如来自第一张表的输出Value就记为<1, X>,这1表示数据来自第一张表。shuffle后,相同Key被输入到同一reduce函数,就可根据表的标记对Value数据求笛卡尔积,用第一张表的每条记录和第二张表的每条记录连接,输出即join结果。
9090

0 commit comments

Comments
 (0)