栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

【Hive基础】

【Hive基础】

Hive基础
  • 一、Hive中的数据库
          • (1)创建数据库
          • (2)查看Hive中包含的数据库
          • (3)USE命令
          • (4)删除数据库
  • 二、Hive中的表
      • 1、数据类型
      • 2、分隔符
      • 3、建表语句
          • (1)建表语句
          • (2)自定义行分隔符
          • (3)列分隔符
          • (4)整理
      • 4、装载数据
  • 三、查询语法
      • 1、SELECt…FROM…WHERe…语句
      • 2、聚合函数
      • 3、排序

一、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则返回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;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/583417.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号