您的位置:

Hive建表语句详解

一、数据类型

在使用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';