需求:实现按照维度(工作地点)统计员工信息
3.1 数据准备
在Hive中创建数据,分别创建部门和员工外部表,并向表中导入数据。
(1)原始数据
(2)建表语句
创建部门表
create external table if not exists default.dept(
deptno int,
dname string,
loc int
)
row format delimited fields terminated by '\t';
创建员工表
create external table if not exists default.emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
row format delimited fields terminated by '\t';
(3)查看创建的表
hive (default)> show tables;
OK
tab_name
dept
emp
(4)向外部表中导入数据
导入数据
hive (default)> load data local inpath '/opt/module/datas/dept.txt' into table default.dept;
hive (default)> load data local inpath '/opt/module/datas/emp.txt' into table default.emp;
查询结果
hive (default)> select * from emp;
hive (default)> select * from dept;
3.2 创建项目
3.2.1 登录系统
3.2.2 创建工程
1)点击图上所示“+”号
2)填入项目名及描述点击Submit
3.2.3 选择数据源
1)选择加载数据源方式
2)输入要作为数据源的表
3)查看数据源
3.3 创建Model
1)回到Models页面
2)点击New按钮后点击New Model
3)填写Model名称及描述后Next
4)选择事实表
5)添加维度表
6)选择添加的维度表及join字段
7)选择维度信息
8)选择度量信息
9)添加分区信息及过滤条件之后“Save
10)创建Model完成
3.4 创建Cube
1)点击New按钮然后选择New Cube
2)选择Model及填写Cube Name
3)添加维度
4)添加需要做预计算的内容
5)动态更新相关(默认)
6)高阶模块(默认)
7)需要修改的配置
8)Cube信息展示
9)Cube配置完成
10)触发预计算
11)查看Build进度
12)构建Cube完成
3.5 Hive和Kylin性能对比
需求:根据部门名称[dname]统计员工薪资总数[sum(sal)]
3.5.1 Hive查询
hive> select dname,sum(sal) from emp e join dept d on e.deptno = d.deptno group by dname;
Query ID = atguigu_20181210104140_4931b735-5bad-4a4f-bce6-67985b8fe30a
Total jobs = 1
SLF4J: Class path contains multiple SLF4J bindings.
… …
… …
Stage-Stage-2: Map: 1 Reduce: 1 Cumulative CPU: 3.95 sec HDFS Read: 13195 HDFS Write: 48 SUCCESS
Total MapReduce CPU Time Spent: 3 seconds 950 msec
OK
ACCOUNTING 3750.0
RESEARCH 10875.0
SALES 9400.0
Time taken: 23.893 seconds, Fetched: 3 row(s)
hive>
3.5.2 Kylin查询
1)进入Insight页面
2)在New Query中输入查询语句并Submit
3)数据图表展示及导出
4)图表展示之条形图
4)图表展示之饼图