目录
一、数据类型
1.基本数据类型
2.集合数据类型
二、数据存储
1.DB(Database)
2.内部表(Table)
3.外部表(External Table)
4.分区(Partition)
5.分桶(Bucket)
6.Hive视图
一、数据类型
1.基本数据类型
- 数值型:
- TINYINT、SMALLINT、INT、BIGINT
- FLOAT、DOUBLE
- 字符型:STRING、VARCHAR、CHAR
- 时间戳:TIMESTAMP
- 布尔型:BOOLEAN
- 二进制类型:BINARY
2.集合数据类型
- MAP:是一种(key-value)键值对类型
map(key1, value1, key2, value2,…) 比如:map('math',90,'english',92)
- ARRAY:是一种数组类型,其中存放相同类型的数据
array(val1, val2,…) 比如:array(90,92)
- STRUCT:是一种集合类型
struct(val1, val2, val3,…) 比如 struct(1,'genius')
二、数据存储
1.DB(Database)
在HDFS中表现为hive.metastore.warehouse.dir目录下的一个文件夹
2.内部表(Table)
DB目录下一个文件夹。Hive的每个表都有自己的存储目录,除外部表,所有表数据都存放配置在hive-site.xml文件的${hive.metastore.warehouse.dir}/table_name目录下
- 创建内部表语句:
CREATE TABLE IF NOT EXISTS student_scores
( user_no STRING COMMENT '学号'
,name STRING COMMENT '姓名'
,subject STRING COMMENT '科目'
,score STRING COMMENT '分数'
) COMMONT '学生成绩表'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORE AS TEXTFILE
;
3.外部表(External Table)
只会删除元数据,不会删除表的数据
- 创建外部表语句:
CREATE EXTERNAL TABLE IF NOT EXISTS student_scores
( user_no STRING COMMENT '学号'
,name STRING COMMENT '姓名'
,subject STRING COMMENT '科目'
,score STRING COMMENT '分数'
) COMMONT '学生成绩表'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORE AS SEQUENCEFILE
LOCATION '/usr/test/data/score.txt'
;
4.分区(Partition)
Table目录下一子目录,每一个分区对应表下一个目录,所有的分区数据都存储在对应的目录中。
/datawarehouse/table/province=Beijing/city=Beijing/dt=2023-04-15
注意:分区中定义的变量名和字段名不可以相同
- 建表创建分区语句:
CREATE TABLE IF NOT EXISTS student_scores
( user_no STRING COMMENT '学号'
,name STRING COMMENT '姓名'
,subject STRING COMMENT '科目'
,score STRING COMMENT '分数'
) COMMONT '学生成绩表'
PARTITIONED BY (
province STRING COMMENT '省份'
,city STRING COMMENT '城市'
,dt STRING COMMENT '日期')
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORE AS TEXTFILE
;
5.分桶(Bucket)
同一个表目录下根据Hash散列之后的多个文件,对指定列进行Hash计算,根据Hash值进行切分,将数据按照字段划分到多个文件中去
- 建表创建分桶语句:
CREATE TABLE IF NOT EXISTS student_scores
( user_no STRING COMMENT '学号'
,name STRING COMMENT '姓名'
,subject STRING COMMENT '科目'
,score STRING COMMENT '分数'
) COMMONT '学生成绩表'
PARTITIONED BY (
province STRING COMMENT '省份'
,city STRING COMMENT '城市'
,dt STRING COMMENT '日期')
CLUSTERED BY(user_no) SORTED BY(score) INTO 32 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORE AS TEXTFILE
;
6.Hive视图
Hive视图并不存储数据或者实例化,一旦创建确定Schema
底层表后续的更改并不会影响视图的Schema,但是如果将底表删除,视图查询时会fail
- 创建视图语句:
CREATE VIEW temp_student_score AS
SELECT name
,subject
,score
FROM student_scores;
- 更改视图属性语句:
ALTER VIEW temp_student_scores
SET TBLPROPERTIES ('comment' = 'This is a view');
- 重新定义视图语句:
ALTER VIEW temp_student_score AS
SELECT * from student_score_2 ;
- 查询CREATE语句创建的视图:
SHOW CREATE TABLE 语句
DESC FORMATTED TABLE 语句
- 删除视图语句:
DROP VIEW temp_student_score;