当前位置: 首页 > article >正文

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,其结构如下:

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 表中插入数据:

插入单行/多行数据

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')
);
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使用 MAP 和 NAMED_STRUCT 函数来创建映射和结构体
  3. 布尔值:布尔值使用 TRUE 或 FALSE

http://www.kler.cn/a/387738.html

相关文章:

  • 【C++】new操作符的使用说明
  • macOS解决U盘装完系统容量变小的问题
  • 【Java SE】接口类型
  • Gsensor加速度传感器数据异常及概率性卡死
  • vxe-table 3.10+ 进阶高级用法(一),根据业务需求自定义实现筛选功能
  • uniapp 设置安全区域
  • 分布式中常见的问题及其解决办法
  • BUG: scheduling while atomic
  • 软考中级 软件设计师 上午考试内容笔记(个人向)Part.2
  • 道品科技智慧农业中的自动气象检测站
  • vue3+ts+element-ui实现的可编辑table表格组件 插入单行多行 组件代码可直接使用
  • 当AI遇上时尚:未来的衣橱会由机器人来打理吗?
  • 133.鸿蒙基础01
  • 在IntelliJ IDEA中创建带子模块的SpringBoot工程
  • Spring Boot 与 Vue 共筑高校网上订餐卓越平台
  • js实现各种经典排序算法
  • TG机器人链游开发项目:迈向去中心化游戏新时代
  • ffmpeg视频滤镜:缓入缓出-fade
  • Web安全之SQL注入---基础
  • 大厂社招3年-力扣热点高频刷题记录(已更新100+道热点题)
  • 【算法】排序算法
  • 使用layui过程中的问题
  • STM32各模块
  • 21. 评估架构
  • 快速上手Cellranger
  • 股票投资学习路线图