Hive 0.13 数据类型

本文详细介绍了Hive支持的各种数据类型,包括数值类型、日期/时间类型、字符串类型、复合类型及列类型,并提供了每种类型的特性说明和使用示例。

hive支持的数据类型路下

数值类型 Numeric Types

  • TINYINT (1字节,数据范围: -128 to 127)
  • SMALLINT (2字节,数据范围: -32,768 to 32,767)
  • INT (4字节,数据范围:-2,147,483,648 to 2,147,483,647)
  • BIGINT (8字节,数据范围: -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807)
  • FLOAT (4字节, 单精度浮点数)
  • DOUBLE (8字节,双精度浮点数)
  • DECIMAL
    • Introduced in Hive 0.11.0 with a precision of 38 digits
    • Hive 0.13.0 introduced user definable precision and scale

日期/时间类型 Date/Time Types 

字符串类型 String Types

Misc Types

复合类型 Complex Types

  • arrays: ARRAY<data_type>
  • maps: MAP<primitive_type, data_type>
  • structs: STRUCT<col_name : data_type [COMMENT col_comment], ...>
  • union: UNIONTYPE<data_type, data_type, ...> (Hive 0.7.0以上支持)

列类型 Column Types

Integral Types (TINYINTSMALLINTINTBIGINT)

数值类型默认是int,如果数值超出int的范围,就会被解释为bigint。

 数值后面加上后缀表示:

Type

Postfix

Example

TINYINT

Y

100Y

SMALLINT

S

100S

BIGINT

L

100L

Strings

字符串可以用单引号(')或双引号(“)。Hive在字符串中使用C-Style的转义。

Varchar

Varchar types 创建的长度是 ( 1 到 65355), 在字符串中容许使用最大数量的字符. 如果string类型转换成varchar类型, 长度超过了最大值,将会被截断。 字符长度是由字符串所包含的数量决定.

Version

Icon

Varchar 类型在 Hive 0.12.0中支持 (HIVE-4844).

Char

最大固定长度255.

CREATE  TABLE  foo (bar  CHAR (10))

Version

Icon

Char类型在Hive 0.13.0中支持 (HIVE-5191).

Timestamps

 支持传统的unix时间戳,可选的纳秒级精度。

支持的转换:

  • 整型数值类型:解读为以秒为单位的UNIX时间戳
  • 浮动点数值类型:解读为以秒和小数精度为单位的UNIX时间戳
  • 字符串:JDBC兼容的java.sql.Timestamp格式“YYYY-MM-DD HH:MM:SS.fffffffff”(9位小数位精度)

时间戳被解释是与timezone无关,存储为从UNIX纪元的偏移量。提供便利的UDF和时区转换(to_utc_timestamp,from_utc_timestamp)。
所有现有datetime的UDF(月,日,年,小时,等)可以工作于TIMESTAMP数据类型。

Version

Icon

Timestamps在Hive 0.8.0支持 (HIVE-2272).

Dates

日期值描述一个特定的年/月/日的{ { YYYY - MM - DD } }. 

例, DATE '2013-­01-­01'. Date 类型没有时间.
Date 类型支持的范围是是 0000-­01-­01 to 9999-­12-­31, 依赖于原始的Java支持的日期类型.

Version

Icon

Dates 在 in Hive 0.12.0支持 (HIVE-4055).

转换 Dates

Date类型能和 Timestamp, String互相转换.

Valid casts to/from Date type

Result

cast(date as date)

Same date value

cast(timestamp as date)

The year/month/day of the timestamp is determined, based on the local timezone, and returned as a date value.

cast(string as date)

If the string is in the form 'YYYY-MM-DD', then a date value corresponding to that year/month/day is returned. If the string value does not match this formate, then NULL is returned.

cast(date as timestamp)

A timestamp value is generated corresponding to midnight of the year/month/day of the date value, based on the local timezone.

cast(date as string)

The year/month/day represented by the Date is formatted as a string in the form 'YYYY-MM-DD'.

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types

Hive中,表的字段(列)具有明确的数据类型,这些数据类型用于定义列中存储的数据种类。Hive支持多种基本数据类型和复杂数据类型。以下是Hive中常用的字段类型分类: --- ### 一、基本数据类型(Primitive Data Types) | 数据类型 | 描述 | 示例 | |----------|------|------| | `TINYINT` | 1字节整数(-128 ~ 127) | 127 | | `SMALLINT` | 2字节整数(-32768 ~ 32767) | 32767 | | `INT` / `INTEGER` | 4字节整数 | 100000 | | `BIGINT` | 8字节整数 | 9223372036854775807 | | `FLOAT` | 单精度浮点数 | 3.14 | | `DOUBLE` | 双精度浮点数 | 3.1415926535 | | `DECIMAL(precision, scale)` | 精确的十进制数,precision是总位数,scale是小数位数 | DECIMAL(10,2) | | `STRING` | 字符串,可变长度 | "hello world" | | `VARCHAR(n)` | 字符串,最大长度为n(Hive 13+ 支持) | VARCHAR(255) | | `CHAR(n)` | 固定长度字符串,不足补空格 | CHAR(10) | | `BOOLEAN` | 布尔值(true / false) | true | | `BINARY` | 二进制数据 | 0x1234ABCD | | `DATE` | 日期值(YYYY-MM-DD) | '2025-04-05' | | `TIMESTAMP` | 时间戳(含毫秒) | '2025-04-05 12:30:45.123' | | `INTERVAL` | 时间间隔 | INTERVAL '1' DAY | --- ### 二、复杂数据类型(Complex Data Types) | 数据类型 | 描述 | 示例 | |----------|------|------| | `ARRAY<data_type>` | 同类型元素的有序集合 | ARRAY<STRING> | | `MAP<primitive_type, data_type>` | 键值对集合,键必须是基本类型 | MAP<STRING, INT> | | `STRUCT<col_name : data_type [COMMENT col_comment], ...>` | 结构体,包含多个字段 | STRUCT<name STRING, age INT> | | `UNIONTYPE<data_type1, data_type2, ...>` | 联合类型,表示多个类型中的一种(Hive 0.13+) | UNIONTYPE<int, string> | --- ### 三、示例:创建一个包含各种字段类型的Hive表 ```sql CREATE TABLE employees ( id INT, name STRING, age TINYINT, salary DOUBLE, is_manager BOOLEAN, birth_date DATE, join_time TIMESTAMP, scores ARRAY<DOUBLE>, address STRUCT<street: STRING, city: STRING, zipcode: STRING>, metadata MAP<STRING, STRING>, tags ARRAY<STRUCT<tag_name: STRING, tag_value: STRING>> ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' COLLECTION ITEMS TERMINATED BY '|' MAP KEYS TERMINATED BY ':' LINES TERMINATED BY '\n' STORED AS TEXTFILE; ``` #### 解释: - `id`:整数类型,用于员工ID。 - `name`:字符串类型,用于员工姓名。 - `age`:TINYINT,节省存储空间。 - `salary`:浮点数类型,表示工资。 - `is_manager`:布尔值。 - `birth_date`:日期类型。 - `join_time`:时间戳。 - `scores`:数组类型,例如:[90.5, 85.3, 92.1]。 - `address`:结构体,嵌套字段。 - `metadata`:Map类型,例如:{"email":"a@b.com", "phone":"1234"}。 - `tags`:数组中包含结构体。 --- ### 四、查看表结构 使用如下命令查看已创建表的结构: ```sql DESCRIBE employees; -- 或者详细信息 DESCRIBE FORMATTED employees; ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值