目录:
• 数据准备
• 创建项目
• 创建Model
• 创建Cube
• Hive和Kylin性能对比
• 需求:实现按照维度(工作地点)统计员工信息
1.数据准备
在Hive中创建数据,分别创建部门和员工外部表,并向表中导入数据。
1.1 原始数据
dep.txt
10 ACCOUNTING 1700
20 RESEARCH 1800
30 SALES 1900
40 OPERATIONS 1700
emp.txt
7369 SMITH CLERK 7902 1980-12-17 800.0 NULL 20
7499 ALLEN SALESMAN 7698 1981-2-20 1600.0 300.0 30
7521 WARD SALESMAN 7698 1981-2-22 1250.0 500.0 30
7566 JONES MANAGER 7839 1981-4-2 2975.0 NULL 20
7654 MARTIN SALESMAN 7698 1981-9-28 1250.0 1400.0 30
7698 BLAKE MANAGER 7839 1981-5-1 2850.0 NULL 30
7782 CLARK MANAGER 7839 1981-6-9 2450.0 NULL 10
7788 SCOTT ANALYST 7566 1987-4-19 3000.0 NULL 20
7839 KING PRESIDENT NULL 1981-11-17 5000.0 NULL 10
7844 TURNER SALESMAN 7698 1981-9-8 1500.0 0.0 30
7876 ADAMS CLERK 7788 1987-5-23 1100.0 NULL 20
7900 JAMES CLERK 7698 1981-12-3 950.0 NULL 30
7902 FORD ANALYST 7566 1981-12-3 3000.0 NULL 20
7934 MILLER CLERK 7782 1982-1-23 1300.0 NULL 10
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';
1.3 查看创建的表
hive (default)> show tables;
OK
tab_name
dept
emp
1.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;
2.创建项目
2.1 登录系统
2.2 创建工程
2.2.1 点击图上所示“+”号
2.2.2 填入项目名及描述点击Submit
2.2.3 选择数据源
(1) 选择加载数据源方式
(2) 输入要作为数据源的表
(3) 查看数据源
3.创建Model
3.1 回到Models页面
3.2 点击New按钮后点击New Model
3.3 填写Model名称及描述后Next
3.4 选择事实表
3.5 添加维度表
3.6 选择添加的维度表及join字段
3.7 选择维度信息
3.8 选择度量信息
3.9 添加分区信息及过滤条件之后“Save”
3.10 创建Model完成
4.创建Cube
4.1 点击New按钮然后选择New Cube
4.2 选择Model及填写Cube Name
4.3 添加维度
4.4 添加需要做预计算的内容
4.5 动态更新相关(暂时默认)
4.6 高阶模块(暂时默认)
4.7 需要修改的配置
4.8 Cube信息展示
4.9 Cube配置完成
4.10 触发预计算
4.11 查看Build进度
4.12 构建Cube完成
5.Hive和Kylin性能对比
需求:根据部门名称[dname]统计员工薪资总数[sum(sal)]
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>
5.2 Kylin查询
(1) 进入Insight页面
(2) 在New Query中输入查询语句并Submit
(3) 数据图表展示及导出
(4) 图表展示之条形图
(5) 图表展示之饼图
5.3 结论:
很明显,kylin的查询速度明显高于hive,并且kylin第二次查询速度还要比第一次快,这是因为kylin存在缓存机制。