Hive 的数据类型

基本类型

整型
  • TINYINT: 1字节整数,范围从 -128 到 127。
  • SMALLINT: 2字节整数,范围从 -32,768 到 32,767。
  • INT: 4字节整数,范围从 -2,147,483,648 到 2,147,483,647。
  • BIGINT: 8字节整数,范围从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。
布尔型
  • BOOLEAN: 真(TRUE)或假(FALSE)。
浮点型
  • FLOAT: 单精度浮点数,通常用于不需要高精度的情况。
  • DOUBLE: 双精度浮点数,提供更高的精度。
定点数
  • DECIMAL: 用户定义的精度和小数位数,适合金融计算等需要精确数值的场景。
字符型
  • STRING: 可变长度的字符串。
  • VARCHAR: 可变长度的字符串,需要指定最大长度。
  • CHAR: 固定长度的字符串,需要指定长度。
日期时间型
  • TIMESTAMP: 包含日期和时间,但不包含时区信息。
  • TIMESTAMP WITH LOCAL TIME ZONE: 包含日期、时间和时区信息。
  • DATE: 只包含日期部分。
二进制型
  • BINARY: 字节序列,适合存储二进制数据。

复合类型

结构体(Structs)
  • 结构体是由多个字段组成的数据类型,每个字段有自己的名称和类型。可以通过字段名访问结构体中的值。
映射(Maps)
  • 映射是一组键值对,键必须是唯一的。可以通过键访问映射中的值。
数组(Arrays)
  • 数组是一系列相同类型的元素集合。可以通过索引访问数组中的元素。

类型层次结构

Hive 的类型系统遵循一定的层次结构,允许某些类型之间的隐式转换:

  • Number 类型之间可以隐式转换(如 TINYINT 转换为 INT)。
  • STRING 可以隐式转换为 DOUBLE
  • BOOLEAN 可以隐式转换为 Number

时间戳注意事项

  • TIMESTAMP 不包含时区信息,适用于不需要考虑时区的场景。
  • TIMESTAMP WITH LOCAL TIME ZONE 包含时区信息,适用于需要精确时区的场景。、

假设我们有一个用户表 users,其结构如下:

sql 复制代码
CREATE TABLE users (
    id BIGINT,
    name STRING,
    gender CHAR(1),
    active BOOLEAN,
    created_at TIMESTAMP,
    attributes MAP<STRING, STRING>,
    address STRUCT<street: STRING, city: STRING, zip: STRING>
);

在这个表中:

  • id 是一个 8 字节的整数。
  • name 是一个可变长度的字符串。
  • gender 是一个固定长度为 1 的字符串。
  • active 是一个布尔值。
  • created_at 是一个时间戳。
  • attributes 是一个映射,键和值都是字符串。
  • address 是一个结构体,包含街道、城市和邮政编码。

下面是如何向 users 表中插入数据:

插入单行/多行数据

sql 复制代码
INSERT INTO users (id, name, gender, active, created_at, attributes, address)
VALUES (
    1,
    'John Doe',
    'M',
    TRUE,
    '2023-10-01 12:34:56',
    MAP('age', '30', 'email', 'john.doe@example.com'),
    NAMED_STRUCT('street', '123 Main St', 'city', 'Anytown', 'zip', '12345')
);
sql 复制代码
INSERT INTO users (id, name, gender, active, created_at, attributes, address)
VALUES 
    (1, 'John Doe', 'M', TRUE, '2023-10-01 12:34:56', MAP('age', '30', 'email', 'john.doe@example.com'), NAMED_STRUCT('street', '123 Main St', 'city', 'Anytown', 'zip', '12345')),
    (2, 'Jane Smith', 'F', FALSE, '2023-10-02 13:45:00', MAP('age', '28', 'email', 'jane.smith@example.com'), NAMED_STRUCT('street', '456 Elm St', 'city', 'Othertown', 'zip', '67890'));

注意事项

  1. 时间戳格式 :确保时间戳的格式正确,通常为 'YYYY-MM-DD HH:MM:SS'
  2. MAP 和 STRUCT :使用 MAPNAMED_STRUCT 函数来创建映射和结构体。
  3. 布尔值 :布尔值使用 TRUEFALSE
相关推荐
William Dawson20 小时前
【踩坑实录|Hive1\.2\.1数据服务接口5大疑难问题调试与全方位优化方案】
java·hive·spring boot
牛奶咖啡138 天前
大数据Hadoop运维应用实践——HIVE与Hadoop实现整合_Hive的配置安装与使用
大数据·hive·hive的配置与安装·metastore服务的配置·hiveserver2服务配置·hive的常用sql操作·beeline的使用
向夏威夷 梦断明暄10 天前
基于Tez引擎的 Hive SQL 性能优化
hive·sql·性能优化
humbinal17 天前
同时支持 gui & cli 的 parquet 文件查看工具,高性能小清新!
hive·python·rust·spark·开源·github·parquet
吾AI科技19 天前
基于Tez引擎的 Hive SQL 性能优化
大数据·hive·性能优化·tez
abcy07121320 天前
hive 执行器原理
hive
香山上的麻雀100822 天前
Hive内部表(MANAGED_TABLE)的“批量删除分区”特性详解
数据仓库·hive·hadoop
jjjava2.024 天前
SpringMVC入门指南:从零掌握核心要点
数据仓库·hive·hadoop
AllData公司负责人1 个月前
数据库同步平台|AIIData数据中台实现OceanBase、达梦数据库、OpenGauss、人大金仓、Hive、TDengine 一键接入Doris
大数据·数据库·hive·mysql·oceanbase·tdengine
AllData公司负责人1 个月前
数据同步平台|AIIData数据中台实现MySQL、Hive、Kafka 一键接入Doris
大数据·数据库·hive·mysql·kafka·实时同步