【Hive基础】

一、Hive中的数据库

(1)创建数据库

Hive会为每个数据库在HDFS创建一个目录。 数据库中的表将会以这个数据库目录的子目承形式存储。有一个例外就是自带的default数据库,这个数据库没有自己的目录。

代码如下(示例):

CREATE DATABASE school;
CREATE DATABASE IF NOT EXISTS school;

IF NOT EXISTS子句是可选的,如果数据库school已经存在的话,那么会抛出一个错误信息。加入IF NOT EXISTS子句可以避免这种情况下抛出错误信息。

(2)查看Hive中包含的数据库

代码如下(示例):

SHOW DATABASES;
(3)USE命令

USE命令用于将某个数据库设置为用户当前的工作数据库,和在文件系统中切换工作目录是一个概念。
代码如下(示例):

USE school;
(4)删除数据库

代码如下(示例):

DROP DATABASE school;
DROP DATABASE IF EXISTS school;
DROP DATABASE IF EXISTS school CASCADE;

IF EXISTS子句是可选的,如果加了这个子句,就可以避免因数据库school不存在而抛出的警告信息。
另外Hive是不允许删除一个包含有表的数据库。用户要么先删除数据库中的表再删除数据库,要么在删除命令的最后加上CASCADE关键字,CASCADE关键字可以使Hive自行先删除数据库中的表,再删除数据库。

二、Hive中的表

1、数据类型

数据类型长度例子
TINYINT1byte有符号整数10
SMALINT1byte有符号整数10
INT1byte有符号整数10
BIGINT1byte有符号整数10
BOOLEAN布尔类型TRUE、FALSE
FLOAT单精度浮点数1.0
DOUBLE双精度浮点数1.0
STRING字符串“abcd”
TIMESTAMP日期,时间戳或者字符串13584697223或者2021-12-25 1:12:23
ARRAY一组有序字段,类型必须相同Array(1,2)
MAP一组无序的键值对Map(‘a’,1,‘b’,2)
STRUCT一组命名的字段,字段类型可以不同Struct(‘a’,1,1,2)

2、分隔符

分隔符描述
\n行分隔符
^A列分隔符
^BARRAY、MAP、STRUCT中元素之间的分隔符
^CMAP中KEY和VALUE之间的分隔符

3、建表语句

(1)建表语句

代码如下(示例):

CERAT TABLE student;
(2)自定义行分隔符

代码如下(示例):

LINES TERMINATED BY '\n'
(3)列分隔符

列分隔符要放到以下子句后边
子句(示例):

ROW FORMAT DELIMITED

自定义列分隔符
代码如下(示例):

FIELDS TERMINATED BY ' '  (设置空格为列分隔符)

自定义集合分隔符
代码如下(示例):

COLLECTION TERMINATED BY ' '  (设置空格为集合分隔符)

自定义Map分隔符
代码如下(示例):

MAP TERMINATED BY ' '  (设置空格为Map分隔符)
(4)整理

完整建表代码(示例):

CREATE TABLE IF NOT EXISTS student(
  id INT COMMENT '序号',
  name STRING COMMENT '名字'
) ROW FORMAT DELIMITED
FIELDS TERMINATED BY ' ';

4、装载数据

把HDFS的数据装载进表
代码如下(示例):

LOAD DATA INPATH '/hive/student.txt' INTO TABLE student;

在LOAD后添加LOCAL关键字,那么这个路径就是本地(Linux) 文件系统路径,文件将会被上传到表目录中。(本地数据装载进表)
代码如下(示例):

LOAD DATA LOCAL INPATH '/home/hadoop/hive/teacher.txt' INTO TABLE teacher;

在INTO后添加OVERWRITE关键字,那么表目录中的数据会先被删除。也就是说没有OVERWRITE时装载数据是进行追加操作,有OVERWRITE时装载数据时进行覆盖操作。(本地数据覆盖进表)
代码如下(示例):

LOAD DATA LOCAL INPATH '/home/hadoop/hive/teacher.txt' INTO TABLE OVERWRITE teacher;

三、查询语法

1、SELECT…FROM…WHERE…语句

SELECT是HiveQL中的查询语句,FROM子句标识了从哪个表选择记录,WHERE子语句通过谓词表达式设置过滤条件。

Hive中的谓词操作符
操作符支持的数据类型描述
A=B基本数据类型如果 A 等于 B则返回TRUE否则返回FALSE
A<>B,A!=B基本数据类型如果 A 不等于 B则返回TRUE否则返回FALSE
A>B,A<B,A>=B,A<=B基本数据类型如果 A 大于/小于/大于等于/小于等于 B则返回TRUE否则返回FALSE
A IS NULL所有数据类型如果 A 等于NULL则返回TRUE否则返回FALSE
A IS NOT NULL所有数据类型如果 A 不等于NULL则返回TRUE否则返回FALSE
A BETWEEN B AND C基本数据类型如果 A 大于等于 B 并且小于等于 C 则返回TRUE否则返回FALSE
A IN (B,C)所有数据类型如果 A 等于 B 或 C 则返回TRUE否则返回FALSE

对于字符串类型可以使用LIKE进行模糊查询,其中%匹配任意个字符,_匹配一个字符。'x%'表示以字母x开头; '%x’表示以字母x结尾; '%x%'表示包含字母x。
多个查询条件之间可以使用AND或者OR拼接,AND表示并且,OR表示或者。
所有的查询条件都可以使用NOT进行取反操作。

案例
代码如下(示例):

SELECT * FROM student;
SELECT * FROM student WHERE age > 20;
SELECT * FROM student WHERE age != 20;
SELECT * FROM student WHERE name LINK 'a%';
SELECT * FROM student WHERE age >= 20 AND age <=21;
SELECT * FROM student WHERE age BETWEEN 20 AND 21;

2、聚合函数

常用的Hive的内置聚合函数
返回值类型函数描述
BIGINTcount(*)计算总行数,包含NULL值的行
DOUBLEsum(col)计算指定行的值的和
DOUBLEavg(col)计算指定行的值的平均数
DOUBLEmin(col)计算指定行的最小值
DOUBLEmax(col)计算指定行的最大值

案例
代码如下(示例):

SELECT COUNT(*) FROM student;
SELECT AVG(age) FROM student;
SELECT MIN(age) FROM student;
SELECT MAX(age) FROM student;

3、排序

ASC 升序(默认),DESC 降序
ORDER BY:全局排序

代码如下(示例):

SELECT * FORM student ORDER BY age ASC;
SELECT * FROM student ORDER BY age DESC;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值