Skip to content

Commit 5f1641c

Browse files
committed
更新了部分文档
1 parent 6632c37 commit 5f1641c

10 files changed

+218
-6
lines changed

Day66-70/66.数据分析概述.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -325,4 +325,5 @@ Notebook是基于网页的用于交互计算的应用程序,可以用于代码
325325

326326
按照上面的描述,贝叶斯定理可以表述为:`后验概率 = (似然性 * 先验概率) / 标准化常量`​,简单的说就是后验概率与先验概率和相似度的乘积成正比。
327327

328-
描述性统计通常用于研究表象,将现象用数据的方式描述出来(用整体的数据来描述整体的特征);推理性统计通常用于推测本质(通过样本数据特征去推理总体数据特征),也就是你看到的表象的东西有多大概率符合你对隐藏在表象后的本质的猜测。
328+
描述性统计通常用于研究表象,将现象用数据的方式描述出来(用整体的数据来描述整体的特征);推理性统计通常用于推测本质(通过样本数据特征去推理总体数据特征),也就是你看到的表象的东西有多大概率符合你对隐藏在表象后的本质的猜测。
329+

Day86-90/87.Hive查询.md

-2
This file was deleted.

Day86-90/87.Hive简介.md

+213
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
## Hive简介
2+
3+
Hive是Facebook开源的一款基于Hadoop的数据仓库工具,是目前应用最广泛的大数据处理解决方案,它能将SQL查询转变为 MapReduce(Google提出的一个软件架构,用于大规模数据集的并行运算)任务,对SQL提供了完美的支持,能够非常方便的实现大数据统计。
4+
5+
![](res/hadoop-ecosystem.png)
6+
7+
> **说明**:可以通过<https://www.edureka.co/blog/hadoop-ecosystem>来了解Hadoop生态圈。
8+
9+
如果要简单的介绍Hive,那么以下两点是其核心:
10+
11+
1. 把HDFS中结构化的数据映射成表。
12+
2. 通过把Hive-SQL进行解析和转换,最终生成一系列基于Hadoop的MapReduce任务/Spark任务,通过执行这些任务完成对数据的处理。也就是说,即便不学习Java、Scala这样的编程语言,一样可以实现对数据的处理。
13+
14+
Hive和传统关系型数据库的对比如下表所示。
15+
16+
| | Hive | RDBMS |
17+
| -------- | ----------------- | ------------ |
18+
| 查询语言 | HQL | SQL |
19+
| 存储数据 | HDFS | 本地文件系统 |
20+
| 执行方式 | MapReduce / Spark | Executor |
21+
| 执行延迟 |||
22+
| 数据规模 |||
23+
24+
### 准备工作
25+
26+
1. 搭建如下图所示的大数据平台。
27+
28+
![](res/bigdata-basic-env.png)
29+
30+
2. 通过Client节点访问大数据平台。
31+
32+
![](res/bigdata-vpc.png)
33+
34+
3. 创建文件Hadoop的文件系统。
35+
36+
```Shell
37+
hadoop fs -mkdir /data
38+
hadoop fs -chmod g+w /data
39+
```
40+
41+
4. 将准备好的数据文件拷贝到Hadoop文件系统中。
42+
43+
```Shell
44+
hadoop fs -put /home/ubuntu/data/* /data
45+
```
46+
47+
### 创建/删除数据库
48+
49+
创建。
50+
51+
```SQL
52+
create database if not exists demo;
53+
```
54+
55+
56+
57+
```Shell
58+
hive -e "create database demo;"
59+
```
60+
61+
删除。
62+
63+
```SQL
64+
drop database if exists demo;
65+
```
66+
67+
切换。
68+
69+
```SQL
70+
use demo;
71+
```
72+
73+
### 数据类型
74+
75+
Hive的数据类型如下所示。
76+
77+
基本数据类型。
78+
79+
| 数据类型 | 占用空间 | 支持版本 |
80+
| --------- | -------- | -------- |
81+
| tinyint | 1-Byte | |
82+
| smallint | 2-Byte | |
83+
| int | 4-Byte | |
84+
| bigint | 8-Byte | |
85+
| boolean | | |
86+
| float | 4-Byte | |
87+
| double | 8-Byte | |
88+
| string | | |
89+
| binary | | 0.8版本 |
90+
| timestamp | | 0.8版本 |
91+
| decimal | | 0.11版本 |
92+
| char | | 0.13版本 |
93+
| varchar | | 0.12版本 |
94+
| date | | 0.12版本 |
95+
96+
复杂数据类型。
97+
98+
| 数据类型 | 描述 | 例子 |
99+
| -------- | ------------------------ | --------------------------------------------- |
100+
| struct | 和C语言中的结构体类似 | `struct<first_name:string, last_name:string>` |
101+
| map | 由键值对构成的元素的集合 | `map<string,int>` |
102+
| array | 具有相同类型的变量的容器 | `array<string>` |
103+
104+
### 创建和使用表
105+
106+
1. 创建内部表。
107+
108+
```SQL
109+
create table if not exists user_info
110+
(
111+
user_id string,
112+
user_name string,
113+
sex string,
114+
age int,
115+
city string,
116+
firstactivetime string,
117+
level int,
118+
extra1 string,
119+
extra2 map<string,string>
120+
)
121+
row format delimited fields terminated by '\t'
122+
collection items terminated by ','
123+
map keys terminated by ':'
124+
lines terminated by '\n'
125+
stored as textfile;
126+
```
127+
128+
2. 加载数据。
129+
130+
```SQL
131+
load data local inpath '/home/ubuntu/data/user_info/user_info.txt' overwrite into table user_info;
132+
```
133+
134+
135+
136+
```SQL
137+
load data inpath '/data/user_info/user_info.txt' overwrite into table user_info;
138+
```
139+
140+
3. 创建分区表。
141+
142+
```SQL
143+
create table if not exists user_trade
144+
(
145+
user_name string,
146+
piece int,
147+
price double,
148+
pay_amount double,
149+
goods_category string,
150+
pay_time bigint
151+
)
152+
partitioned by (dt string)
153+
row format delimited fields terminated by '\t';
154+
```
155+
156+
4. 设置动态分区。
157+
158+
```SQL
159+
set hive.exec.dynamic.partition=true;
160+
set hive.exec.dynamic.partition.mode=nonstrict;
161+
set hive.exec.max.dynamic.partitions=10000;
162+
set hive.exec.max.dynamic.partitions.pernode=10000;
163+
```
164+
165+
5. 拷贝数据。
166+
167+
```Shell
168+
hdfs dfs -put /home/ubuntu/data/user_trade/* /user/hive/warehouse/demo.db/user_trade
169+
```
170+
171+
6. 修复分区表。
172+
173+
```SQL
174+
msck repair table user_trade;
175+
```
176+
177+
### 查询
178+
179+
#### 基本语法
180+
181+
```SQL
182+
select user_name from user_info where city='beijing' and sex='female' limit 10;
183+
select user_name, piece, pay_amount from user_trade where dt='2019-03-24' and goods_category='food';
184+
```
185+
186+
#### group by
187+
188+
```SQL
189+
-- 查询2019年1月到4月,每个品类有多少人购买,累计金额是多少
190+
select goods_category, count(distinct user_name) as user_num, sum(pay_amount) as total from user_trade where dt between '2019-01-01' and '2019-04-30' group by goods_category;
191+
```
192+
193+
```SQL
194+
-- 查询2019年4月支付金额超过5万元的用户
195+
select user_name, sum(pay_amount) as total from user_trade where dt between '2019-04-01' and '2019-04-30' group by user_name having sum(pay_amount) > 50000;
196+
```
197+
198+
#### order by
199+
200+
```SQL
201+
-- 查询2019年4月支付金额最多的用户前5名
202+
select user_name, sum(pay_amount) as total from user_trade where dt between '2019-04-01' and '2019-04-30' group by user_name order by total desc limit 5;
203+
```
204+
205+
#### 常用函数
206+
207+
1. `from_unixtime`:将时间戳转换成日期
208+
2. `unix_timestamp`:将日期转换成时间戳
209+
3. `datediff`:计算两个日期的时间差
210+
4. `if`:根据条件返回不同的值
211+
5. `substr`:字符串取子串
212+
6. `get_json_object`:从JSON字符串中取出指定的`key`对应的`value`,如:`get_json_object(info, '$.first_name')`
213+
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
## 大数据概述
1+
## PySpark和离线数据处理
22

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
## 大数据概述
1+
## Flink和流式数据处理
22

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
## 大数据概述
1+
## 大数据分析项目实战
22

Day86-90/res/bigdata-basic-env.png

66.7 KB
Loading

Day86-90/res/bigdata-env.png

76.2 KB
Loading

Day86-90/res/bigdata-vpc.png

84.7 KB
Loading

Day86-90/res/hadoop-ecosystem.png

58.3 KB
Loading

0 commit comments

Comments
 (0)