hive的数据类型:
Hive
表中的列支持以下基本数据类型:
- integers(整型) : TINYINT:1字节的有符号整数; SMALLINT:2字节的有符号整数; INT:4字节的有符号整数; BIGINT:8字节的有符号整数
- Boolean(布尔型) : BOOLEAN:TRUE/FALSE
- Floating point numbers(浮点型) : FLOAT:单精度浮点型;
DOUBLE:双精度浮点型 - Fixed point numbers(定点数): DECIMAL:用户自定义精度定点数,比如 DECIMAL(7,2)
- String types(字符串): STRING:指定字符集的字符序列; VARCHAR:具有最大长度限制的字符序列; CHAR:固定长度的字符序列;
- Date and time types(日期时间类型): TIMESTAMP:时间戳; TIMESTAMP WITH LOCAL TIME ZONE:时间戳,纳秒精度; DATE:日期类型
- Binary types(二进制类型): BINARY:字节序列
注:TIMESTAMP和TIMESTAMP WITH LOCAL TIME ZONE的区别如下: TIMESTAMP WITH LOCAL TIME ZONE:用户提交TIMESTAMP给数据库时,会被转换成数据库所在的时区来保存。查询时,则按照查询客户端的不同,转换为查询客户端所在时区的时间。 TIMESTAMP :提交的时间按照原始时间保存,查询时,也不做任何转换。
Hive
的数据都是存储在HDFS
上的,默认有一个根目录,在Hive-site.xml
中可以进行配置数据的存储路径。Hive
数据模型的含义是,描述Hive
组织、管理和操作数据的方式。Hive
包含如下4种数据模型:
- 库
Mysql
中默认数据库是default
,用户可以创建不同的database
,在database
下也可以创建不同的表。Hive
也可以分为不同的数据(仓)库,和传统数据库保持一致。在传统数仓中创建database
。默认的数据库也是default
。Hive
中的库相当于关系数据库中的命名空间,它的作用是将用户和数据库的表进行隔离。
- 表
Hive
中的表所对应的数据是存储在HDFS
中,而表相关的元数据是存储在关系数据库中。Hive中的表分为内部表和外部表两种类型,两者的区别在于数据的访问和删除:
- 内部表的加载数据和创建表的过程是分开的,在加载数据时,实际数据会被移动到数仓目录中,之后对数据的访问是在数仓目录实现。而外部表加载数据和创建表是同一个过程,对数据的访问是读取
HDFS
中的数据; - 内部表删除时,因为数据移动到了数仓目录中,因此删除表时,表中数据和元数据会被同时删除。外部表因为数据还在
HDFS
中,删除表时并不影响数据。 - 创建表时不做任何指定,默认创建的就是内部表。想要创建外部表,则需要使用
External
进行修饰
复杂类型:
TRUCT | 类似于对象,是字段的集合,字段的类型可以不同,可以使用 | STRUCT('xiaoming', 12 , '2018-12-12') |
MAP | 键值对的集合,可以使用 | map('a', 1, 'b', 2) |
ARRAY | 数组是一组具有相同类型和名称的变量的集合,可以使用 | ARRAY('a', 'b', 'c', 'd') |
hive语句操作:
数据库的语法操作:
create database if not exists myhivebook;
use myhivebook;
show databases;
describe database default; --more details than ’show’, such as location
alter database myhivebook set owner user zs;
--级联删除,如果数据库下面有表的话,也可以删除
drop database if exists myhivebook cascade;
hive建表语句:
CREATE EXTERNAL TABLE IF NOT EXISTS employee_external (
name string,
work_place ARRAY<string>,
sex_age STRUCT<sex:string,age:int>,
skills_score MAP<string,int>,
depart_title MAP<STRING,ARRAY<STRING>>
)
COMMENT 'This is an external table'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY ':'
STORED AS TEXTFILE
LOCATION '/user/data/employee_data/';
--查看表结构
desc table
desc formatted table
show create table