Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY 原创
章节内容
上一节我们完成了:
- 启动Hive
- 测试Hive
- 修改配置
- 简单测试
背景介绍
这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。
之前已经在 VM 虚拟机上搭建过一次,但是没留下笔记,这次趁着前几天薅羊毛的3台机器,赶紧尝试在公网上搭建体验一下。
注意,如果你和我一样,打算用公网部署,那一定要做好防火墙策略,避免不必要的麻烦!!!
请大家都以学习为目的,也请不要对我的服务进行嗅探或者攻击!!!
但是有一台公网服务器我还运行着别的服务,比如前几天发的:autodl-keeper 自己写的小工具,防止AutoDL机器过期的。还跑着别的Web服务,所以只能挤出一台 2C2G 的机器。那我的配置如下了:
- 2C4G 编号 h121
- 2C4G 编号 h122
- 2C2G 编号 h123
数据导出
默认格式
将查询结果导出到本地
insert overwrite local directory '/opt/wzk/hive_test/tabC'
select * from tabC;
我们查看目录,已经导出了:
使用 vim 工具查看具体内容:
5^Awangwu^ABJ^A202407
4^Alishi^ASH^A202407
3^Azhangsan^ATJ^A202407
自定格式
我们发现,默认格式导出的有一些符号,我们可以指定符号:
insert overwrite local directory '/opt/wzk/hive_test/tabC2'
row format delimited fields terminated by ' '
select * from tabC;
同样,我们使用 vim 工具打开查看情况:
5 wangwu BJ 202407
4 lishi SH 202407
3 zhangsan TJ 202407
导出至HDFS
insert overwrite directory '/wzk/hive_test/tabC3'
row format delimited fields terminated by ' '
select * from tabC;
执行结果如下:
我们查看 HDFS 内容,可以看到:
HQL
新建文件
新建一个文本文件,写入如下的内容,用作后续的测试
7369,SMITH,CLERK,7902,2010-12-17,800,,20
7499,ALLEN,SALESMAN,7698,2011-02-20,1600,300,30
7521,WARD,SALESMAN,7698,2011-02-22,1250,500,30
7566,JONES,MANAGER,7839,2011-04-02,2975,,20
7654,MARTIN,SALESMAN,7698,2011-09-28,1250,1400,30
7698,BLAKE,MANAGER,7839,2011-05-01,2850,,30
7782,CLARK,MANAGER,7839,2011-06-09,2450,,10
7788,SCOTT,ANALYST,7566,2017-07-13,3000,,20
7839,KING,PRESIDENT,,2011-11-07,5000,,10
7844,TURNER,SALESMAN,7698,2011-09-08,1500,0,30
7876,ADAMS,CLERK,7788,2017-07-13,1100,,20
7900,JAMES,CLERK,7698,2011-12-03,950,,30
7902,FORD,ANALYST,7566,2011-12-03,3000,,20
7934,MILLER,CLERK,7782,2012-01-23,1300,,10
上传文件
将文件上传至 HDFS
hdfs dfs -put test02.txt /wzk/hive_test/test02.txt
创建新表
CREATE TABLE emp (
empno int,
ename string,
job string,
mgr int,
hiredate DATE,
sal int,
comm int,
deptno int
)row format delimited fields terminated by ",";
我们将数据加载到Hive中
LOAD DATA LOCAL INPATH '/opt/wzk/hive_test/test02.txt'
INTO TABLE emp;
全表查询
SELECT * FROM emp;
可以看到数据已经按照我们的想法导入了:
部分字段查询
这与我们平常写SQL基本是一样的:
select ename, sal, comm from emp;
函数查询
select sum(sal) from emp;
select max(sal) from emp;
select min(sal) from emp;
select avg(sal) from emp;
限制条数
select * from emp limit 3;
WHERE
select * from emp
where sal > 2000;
逻辑运算
select null=null;
select null==null;
select null<=>null;
select * from emp where comm is null;
select * from emp where deptno in (20, 30);
GROUP BY
select deptno, avg(sal)
from emp
group by deptno;
ORDER BY
select * from emp order by deptno;
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)