📅  最后修改于: 2023-12-03 15:31:08.706000             🧑  作者: Mango
Hive 数据类型用于在 Hive 中定义表的列和存储数据。Hive 支持大部分的基本数据类型,以及一些复杂的数据类型。
Hive 支持的基本数据类型如下:
| 数据类型 | 描述 |
| --- | --- |
| BOOLEAN
| 布尔类型,true 或 false。 |
| TINYINT
| 8 位有符号整数类型。 |
| SMALLINT
| 16 位有符号整数类型。 |
| INT
| 32 位有符号整数类型。 |
| BIGINT
| 64 位有符号整数类型。 |
| FLOAT
| 单精度浮点数类型。 |
| DOUBLE
| 双精度浮点数类型。 |
| STRING
| 字符串类型。 |
| TIMESTAMP
| 时间戳类型,时间戳表示从 1970 年 1 月 1 日 00:00:00 开始的秒数。 |
| DATE
| 日期类型,表示日期。 |
使用示例:
CREATE TABLE example_table (
id INT,
name STRING,
age TINYINT
);
Hive 支持的复杂数据类型如下:
数组是一组相同数据类型的元素的集合。
语法:ARRAY<data_type>
示例:
CREATE TABLE example_table (
id INT,
interests ARRAY<STRING>,
scores ARRAY<INT>
);
结构体是一个复合数据类型,它是由多个字段组合而成的。
语法:STRUCT<field_name_1:data_type_1, field_name_2:data_type_2, ...>
示例:
CREATE TABLE example_table (
id INT,
person STRUCT<name:STRING, address:STRING, phone_number:STRING>
);
Map 是一个关联数组,它包含键值对,其中键和值都是相同的数据类型。
语法:MAP<key_type, value_type>
示例:
CREATE TABLE example_table (
id INT,
attributes MAP<STRING, STRING>
);
在查询 Hive 表格时,经常需要将一种数据类型转换为另一种数据类型。Hive 提供了多个转换函数,以便将数据类型进行转换。其中一些转换函数如下:
| 数据类型 | 转换函数 | 描述 |
| --- | --- | --- |
| BOOLEAN
| CAST(expr AS BOOLEAN)
| 将表达式转换为布尔类型。 |
| TINYINT
| CAST(expr AS TINYINT)
| 将表达式转换为 8 位有符号整数类型。 |
| SMALLINT
| CAST(expr AS SMALLINT)
| 将表达式转换为 16 位有符号整数类型。 |
| INT
| CAST(expr AS INT)
| 将表达式转换为 32 位有符号整数类型。 |
| BIGINT
| CAST(expr AS BIGINT)
| 将表达式转换为 64 位有符号整数类型。 |
| FLOAT
| CAST(expr AS FLOAT)
| 将表达式转换为单精度浮点数类型。 |
| DOUBLE
| CAST(expr AS DOUBLE)
| 将表达式转换为双精度浮点数类型。 |
| STRING
| CAST(expr AS STRING)
| 将表达式转换为字符串类型。 |
| TIMESTAMP
| CAST(expr AS TIMESTAMP)
| 将表达式转换为时间戳类型。 |
| DATE
| CAST(expr AS DATE)
| 将表达式转换为日期类型。 |
使用示例:
SELECT
CAST(3.14 AS INT),
CAST('2021-01-01' AS DATE)
FROM example_table;
以上就是 Hive 支持的数据类型以及转换函数的介绍。在创建和查询表格时,需要根据实际情况选择合适的数据类型,以便更好地存储和查询数据。