四、Hive数据仓库应用之Hive数据查询语言(一)(超详细步骤指导操作,WIN10,VMware Workstation 15.5 PRO,CentOS-6.7)

Hive远程模式部署参考:
一、Hive数据仓库应用之Hive部署(超详细步骤指导操作,WIN10,VMware Workstation 15.5 PRO,CentOS-6.7)

实验环境启动

在操作Hive数据仓库前,需要将相关服务启动,具体如下:
启动Hadoop高可用集群:
(1)启动集群中各个节点的Zookeeper服务,命令如下:

cd /export/servers/zookeeper-3.4.10/bin
./zkServer.sh start

启动后可查询角色,命令如下:

./zkServer.sh status

(2)启动集群各个节点监控NameNode的管理日志的JournalNode,命令如下:

hadoop-daemon.sh start journalnode

(3)在node-01上分别启动HDFS和YARN,命令如下:

start-dfs.sh
start-yarn.sh

启动mysql服务:

/etc/init.d/mysqld start

启动Hive远程模式:
(1)在node-01中进入安装包解压后目录,使用如下指令进入:

cd /export/servers/apache-hive-1.2.1-bin

在该目录下使用如下指令启动Hiveserver2服务:

bin/hiveserver2

(2)在node-02上进行Hive安装包解压目录,指令如下:

cd /export/servers/apache-hive-1.2.1-bin

在该路径下输入远程连接指令:

bin/beeline

按要求输入远程连接协议,连接到指定Hive服务(node-01)的主机口和端名(默认10000)

!connect jdbc:hive2://node-01:10000

紧接着按照提示输入node-01的账户名“root”和密码“123456”,自此远程连接成功。

一、SELECT句式分析

1、在虚拟机Node-01的目录/export/data/hive_data下执行“vi employess.txt”命令创建员工信息数据文件employess.txt,在数据文件employess.txt中添加如下内容。
创建文件指令:

cd /export/data/hive_data
vi employess.txt

添加内容:

Lilith Hardy,30,6000,50,Finance Department
Byron Green,36,5000,25,Personnel Department
Yvette Ward,21,4500,15.5,
Arlen Esther,28,8000,20,Finance Department
Rupert Gold,39,10000,66,R&D Department
Deborah Madge,41,6500,0,R&D Department
Tim Springhall,22,6000,36.5,R&D Department
Olga Belloc,36,5600,10,Sales Department
Bruno Wallis,43,6700,0,Personnel Department
Flora Dan,27,4000,35,Sales Department

2、上传文件前需要在HDFS创建目录/hive_data/employess,有关创建目录和上传数据文件的命令如下所示。

hdfs dfs -mkdir -p /hive_data/employess
hdfs dfs -put /export/data/hive_data/employess.txt /hive_data/employess

3、根据数据文件employess.txt的数据格式,在数据库hive_database中创建员工信息表employess_table。

CREATE EXTERNAL TABLE IF NOT EXISTS 
hive_database.employess_table(
staff_name STRING,
staff_age INT,
staff_salary FLOAT,
late_deduction FLOAT,
staff_dept STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS textfile
LOCATION '/hive_data/employess';

查看数据库中的表信息可看到新建的表。
在这里插入图片描述

4、查询员工信息表employess_table包含几种部门。

SELECT DISTINCT staff_dept from hive_database.employess_table;

在这里插入图片描述

5、查询每个部门平均薪资大于5000的部门。

SELECT staff_dept FROM employess_table GROUP BY staff_dept HAVING AVG(staff_salary) > 5000;

在这里插入图片描述

二、Hive运算符

1、关系运算符

查询员工信息表employess_table中员工年龄为36岁的员工信息。

SELECT * FROM hive_database.employess_table WHERE staff_age=36;

在这里插入图片描述

查询员工信息表employess_table中部门Personnel Department的员工信息。

SELECT * FROM hive_database.employess_table WHERE staff_dept LIKE "Per%";

在这里插入图片描述

查询员工信息表employess_table中员工姓名首字母为A或D的员工信息。

SELECT * FROM hive_database.employess_table WHERE staff_name RLIKE "^A|^D.*";

在这里插入图片描述

2、算术运算符

计算员工信息表employess_table中所有员工的实际工资。

SELECT staff_name,
staff_salary-late_deduction actual_salary  
FROM hive_database.employess_table;

在这里插入图片描述

计算员工信息表employess_table中每位员工每天的薪资,以单月工作日为20天计算。

SELECT staff_name,
staff_salary/20 everyday_salary  
FROM hive_database.employess_table;

在这里插入图片描述

3、逻辑运算符

查询员工信息表employess_table中薪资大于等于5000,并且薪资小于等于8000的员工信息。

SELECT * FROM hive_database.employess_table WHERE staff_salary >= 5000 AND staff_salary <= 8000;

在这里插入图片描述

4、复杂运算符

4.1 在虚拟机Node-01的目录/export/data/hive_data下执行“vi student_exam.txt”命令。创建学生考试成绩文件student_exam.txt,在数据文件student_exam.txt中添加如下内容。
创建文件指令:

cd /export/data/hive_data
vi student_exam.txt

添加内容如下:

Mandy,Peking University-Wuhan University-Nankai University,Chemistry:90-Physics:98-Biology:83,126-135-140
Jerome,Tsinghua University-Fudan University-Nanjing University,History:89-Politics:92-Geography:87,130-116-128
Delia,Nanjing University-Wuhan University-Nankai University,Chemistry:87-Physics:95-Biology:73,102-123-112
Ben,Tianjin Universit-Peking University-Fudan University,Chemistry:92-Physics:88-Biology:79,98-142-106
Carter,Tsinghua University-Fudan University-Tianjin Universit,History:90-Politics:91-Geography:80,109-111-140
Vivian,Fudan University-Nanjing University-Nankai University,Chemistry:83-Physics:86-Biology:90,120-140-132

4.2 将数据文件student_exam.txt上传到HDFS的/hive_data/student_exam目录,上传文件前需要在HDFS上创建目录/hive_data/student_exam,有关创建目录和上传数据文件的命令如下:

hdfs dfs -mkdir -p /hive_data/student_exam
hdfs dfs -put /export/data/hive_data/student_exam.txt /hive_data/student_exam

4.3 根据数据文件student_exam.txt的数据格式,在数据库hive_database中创建学生考试成绩表student_exam_table,在虚拟机Node-02的客户端工具Beeline中执行如下命令:

CREATE EXTERNAL TABLE IF NOT EXISTS 
hive_database.student_exam_table(
student_name STRING,
intent_university ARRAY<STRING>,
humanities_or_sciences MAP<STRING, FLOAT>,
comprehensive STRUCT<chinese:FLOAT,maths:FLOAT,english:FLOAT>)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '-'
MAP KEYS TERMINATED BY ':'
LINES TERMINATED BY '\n'
STORED AS textfile
LOCATION '/hive_data/student_exam';

4.4 查询学生考试成绩表student_exam_table中所有学生的第一个意向大学。

SELECT student_name,
intent_university[0] first 
FROM hive_database.student_exam_table;

在这里插入图片描述

4.5 查询学生考试成绩表student_exam_table中,学生的物理或历史成绩。

SELECT student_name,
humanities_or_sciences["Physics"] physics,
humanities_or_sciences["History"] history
FROM hive_database.student_exam_table;

在这里插入图片描述

4.6 查询学生考试成绩表student_exam_table中,所有学生的数学成绩。

SELECT student_name,
comprehensive.maths maths
FROM hive_database.student_exam_table;

在这里插入图片描述

三、公用表达式

获取部门R&D Department中薪资大于8000的员工信息。

WITH part1 AS (
SELECT * FROM 
hive_database.employess_table 
WHERE staff_dept="R&D Department")
SELECT * FROM part1 where part1.staff_salary > 8000;

在这里插入图片描述

四、分组操作

1、分组查询员工信息表employess_table的部门。

SELECT staff_dept FROM 
hive_database.employess_table 
GROUP BY staff_dept;

在这里插入图片描述

2、查询员工信息表employess_table中各部门包含的员工个数。

SELECT staff_dept, count(*) num
FROM hive_database.employess_table 
GROUP BY staff_dept;

在这里插入图片描述

参考文献:黑马程序员.Hive数据仓库应用[M].北京:清华大学出版社,2021.

后续学习链接:
四、Hive数据仓库应用之Hive数据查询语言(二)(超详细步骤指导操作,WIN10,VMware Workstation 15.5 PRO,CentOS-6.7)

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七层楼的疯子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值