需求:实现按照维度(工作地点)统计员工信息
1 数据准备
在Hive中创建数据,分别创建部门和员工外部表,并向表中导入数据。
(1)原始数据
(2)建表语句
创建部门表
create external table if not exists default.dept( deptno int, dname string, loc int ) row format delimited fields terminated by ' ';
创建员工表
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 ' ';
(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;
2 创建项目
2.1 登录系统
2.2 创建工程
1)点击图上所示“+”号
2)填入项目名及描述点击Submit
2.3 选择数据源
1)选择加载数据源方式
2)输入要作为数据源的表
3)查看数据源
3 创建Model
1)回到Models页面
2)点击New按钮后点击New Model
3)填写Model名称及描述后Next
4)选择事实表
5)添加维度表
6)选择添加的维度表及join字段
7)选择维度信息
8)选择度量信息
9)添加分区信息及过滤条件之后“Save”
10)创建Model完成
4 创建Cube
1)点击New按钮然后选择New Cube
2)选择Model及填写Cube Name
3)添加维度
4)添加需要做预计算的内容
5)动态更新相关(默认)
6)高阶模块(默认)
7)需要修改的配置
8)Cube信息展示
9)Cube配置完成
10)触发预计算
11)查看Build进度
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)图表展示之条形图
4)图表展示之饼图