Hive支持的数据类型

Posted 魏大宾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive支持的数据类型相关的知识,希望对你有一定的参考价值。

Hive支持原始数据类型和复杂类型,原始类型包括数值型,Boolean,字符串,时间戳。复杂类型包括array,map,struct,union。

一,原始数据类型

类型名称大小示例
TINYINT1字节整数45Y
SMALLINT2字节整数12S
INT4字节整数10
BIGINT8字节整数244L
FLOAT4字节单精度浮点数1.0
DOUBLE8字节双精度浮点数1.0
DECIMAL任意精度带符号小数DECIMAL(4, 2)范围:-99.99到99.99
BOOLEANtrue/falseTRUE
STRING字符串,长度不定“a”, ‘b’
VARCHAR字符串,长度不定,有上限“a”, ‘b’
CHAR字符串,固定长度“a”, ‘b’
BINARY存储变长的二进制数据 
TIMESTAMP时间戳,纳秒精度122327493795
DATE日期‘2016-07-03’

说明: 
1,关于整数和小数类型,整数默认情况下为INT,如果要声明为其他类型,通过后缀来标识(Y、S、L)。小数默认为DOUBLE类型,DECIMAL小数点左边允许的最大位数为38位,直接写DECIMAL默认等同于DECIMAL(10,0)。同时任意数值类型都可以隐式转换成更宽的数值类型(不丢精度)或者文本类型。 
2,关于文本类型,STRING存储变长的文本,对长度没有限制。理论上将STRING可以存储的大小为2GB,但是存储特别大的对象时效率可能受到影响。VARCHAR与STRING类似,但是长度上只允许在1-65355之间,超过最大长度会被截断。CHAR则用固定长度来存储数据,最大255。 
3,关于时间和日期类型,Hive提供了一些内置函数用于在TIMESTAMP与Unix时间戳(秒)和字符串之间做转换:

类型转换结果
cast(date as date)相同的日期。
cast(timestamp as date)基于本地时区确定timestamp的年月日作为值返回。
cast(string as date)如果字符串的格式为’YYYY-MM-DD’, 则对应的年月日返回。如果字符串不是该格式,则返回NULL。
cast(date as timestamp)基于本地时区,返回日期对应午夜时间。
cast(date as string)日期被转换为’YYYY-MM-DD’格式的字符串。

二,复杂类型

类型名称大小示例
ARRAY存储同类型数据ARRAY< data_type>
MAPkey-value,key必须为原始类型,value可以是任意类型MAP< primitive_type, data_type>
STRUCT类型可以不同STRUCT< col_name : data_type [COMMENT col_comment], …>
UNION在有限取值范围内的一个值UNIONTYPE< data_type, data_type, …>

说明: 
关于元素的访问,ARRAY[1]访问第二个元素; 
map访问元素格式为map[‘key’]; 
STRUCT元素的访问使用点号; 
UNION类型声明语法为UNIONTYPE< data_type,data_type,…>,每个UNION类型的值都通过一个整数来表示其类型,这个整数就是索引,从0开始。例如:

 
  1. CREATE TABLE union_test(u UNIONTYPE<int, double, array<string>,struct<a:int,b:string>>);

  2. SELECT u FROM union_test;

  3. 0:1

  4. 1:2.0

  5. 2:["three","four"]

  6. 3:"a":5,"b":"five"

  7. 2:["six","seven"]

  8. 3:"a":8,"b":"eight"

  9. 0:9

  10. 1:10.0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在该例子中,union包含四种类型,分别为int、double、array和struct。从查询结果来看,第一个冒号前面的数字代表union中某种数据类型,比如0代表union的第一个数据类型int,1代表第二个数据类型double,以此类推。

以上是关于Hive支持的数据类型的主要内容,如果未能解决你的问题,请参考以下文章

HIVE数据类型INT溢出,INT转BIGINT

数据仓库工具——Hive入门篇

Hive支持的数据类型

Hive支持的数据类型

HIVE数据类型INT溢出,INT转BIGINT

Hive的数据类型