一、数据类型
在使用Hive建表时,需要对数据类型进行选择,并且不同的数据类型适用于不同类型的数据。
1.整型
整型(INT)适用于整数类型的数据,占用4个字节,可表示-2147483648~2147483647之间的整数。
CREATE TABLE student (
id INT,
name STRING,
age INT
);
2.浮点型
浮点型(FLOAT/DOUBLE)适用于小数类型的数据。
CREATE TABLE score (
id INT,
math FLOAT,
english DOUBLE
);
3.字符串型
字符串型(STRING)适用于包含文本的数据,最大长度为2的31次方-1个字符。
CREATE TABLE employee (
id INT,
name STRING,
gender STRING,
address STRING
);
4.布尔型
布尔型(BOOLEAN)适用于表示真假的数据。
CREATE TABLE person (
id INT,
name STRING,
married BOOLEAN
);
二、表结构
在使用Hive建表时,需要根据需求设计表结构。
1.字段名
使用Hive建表时,需要为每个字段指定一个字段名,以便于查询时识别。
CREATE TABLE customer (
id INT,
name STRING,
address STRING,
email STRING,
phone STRING
);
2.字段类型
每个字段都需要指定数据类型。
CREATE TABLE employee (
id INT,
name STRING,
age INT,
gender STRING,
salary FLOAT
);
3.字段约束
字段约束可以设置字段的默认值、非空约束等。
CREATE TABLE student (
id INT,
name STRING,
age INT DEFAULT 18,
gender STRING,
class STRING NOT NULL
);
三、存储格式
Hive支持多种存储格式,可以根据不同的需求选择不同的存储格式。
1.文本格式
文本格式(TEXTFILE)适用于对数据的处理与查询,支持数据的自定义分割符。
CREATE TABLE order (
id INT,
date STRING,
customer STRING,
items ARRAY
,
amount FLOAT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '|';
2.序列文件格式
序列文件格式(SEQUENCEFILE)适用于较大的数据,可支持数据的高效读取与查询。
CREATE TABLE log (
id INT,
date STRING,
content STRING
)
STORED AS SEQUENCEFILE;
3.列式存储格式
列式存储格式(ORC/Parquet)适用于高效读取、压缩存储、高效查询的场景。
CREATE TABLE log (
id INT,
date STRING,
content STRING
)
STORED AS ORC;
四、分区表
分区表适用于数据量较大的情况,可以将一张大表按照某个字段进行划分,使查询速度更快。
CREATE TABLE user (
id INT,
name STRING,
gender STRING,
birthday STRING
)
PARTITIONED BY (birthday STRING);
五、外部表
外部表与Hadoop文件系统中的文件直接关联,可以避免数据的重复存储。
CREATE EXTERNAL TABLE log (
id INT,
date STRING,
content STRING
)
LOCATION '/user/hive/log';