📜  Hive-数据类型(1)

📅  最后修改于: 2023-12-03 15:31:08.706000             🧑  作者: Mango

Hive 数据类型

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 是一个关联数组,它包含键值对,其中键和值都是相同的数据类型。

语法: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 支持的数据类型以及转换函数的介绍。在创建和查询表格时,需要根据实际情况选择合适的数据类型,以便更好地存储和查询数据。