Hive之数据类型

(本文是基于多篇文章根据个人理解进行的整合,参考的文章见末尾的整理)

数据类型

Hive支持两种数据类型,一类叫原子数据类型,一类叫复杂数据类型。原子数据类型包括数值型、布尔型和字符串类型,具体如下表所示:
原子数据类型包括数值型、布尔型和字符串类型,具体如下表所示:

基本数据类型

类型

描述

示例

TINYINT

1个字节(8位)有符号整数

1

SMALLINT

2字节(16位)有符号整数

1

INT

4字节(32位)有符号整数

1

BIGINT

8字节(64位)有符号整数

1

FLOAT

4字节(32位)单精度浮点数

1.0

DOUBLE

8字节(64位)双精度浮点数

1.0

BOOLEAN

true/false

true

STRING

字符串

xia’,”xia”


  hive不支持日期类型,在hive里日期都是用字符串来表示的,而常用的日期格式转化操作则是通过自定义函数进行操作。
  hive是用java开发的,hive里的基本数据类型和java的基本数据类型也是一一对应的,除了string类型。有符号的整数类型:TINYINTSMALLINTINTBIGINT分别等价于javabyteshortintlong原子类型,它们分别为1字节、 2字节、4字节和8字节有符号整数。Hive的浮点数据类型FLOATDOUBLE,对应于java的基本类型floatdouble类型。而hiveBOOLEAN类型相当于java的基本数据类型boolean
  对于hiveString类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。
  Hive支持基本类型的转换,低字节的基本类型可以转化为高字节的类型,例如TINYINTSMALLINTINT可以转化为FLOAT,而所有的整数类型、FLOAT以及STRING类型可以转化为DOUBLE类型,这些转化可以从java语言的类型转化考虑,因为hive就是用java
编写的。当然也支持高字节类型转化为低字节类型,这就需要使用hive的自定义函数CAST了。
  复杂数据类型包括数组(ARRAY)、映射(MAP)和结构体(STRUCT),具体如下表所示:

复杂数据类型

类型

描述

示例

ARRAY

一组有序字段。字段的类型必须相同

Array(1,2)

MAP

一组无序的键/值对。键的类型必须是原子的,值可以是任何类型,同一个映射的键的类型必须相同,值得类型也必须相同

Map(‘a’,1,’b’,2)

STRUCT

一组命名的字段。字段类型可以不同

Struct(‘a’,1,1,0)


SQL 覆盖范围: SQL 92 with Extensions

http://static.oschina.net/uploads/space/2013/0901/134105_E6jf_568818.png

 

参考:

Hive介绍 http://www.cnblogs.com/sharpxiajun/archive/2013/06/02/3114180.html
Hive的数据类型和数据模型 http://www.cnblogs.com/sharpxiajun/archive/2013/06/03/3114560.html
Hive内表与外表详述 http://www.aboutyun.com/thread-7458-1-1.html
Hive基础之分区和桶 http://my.oschina.net/leejun2005/blog/178631
Hive的体系结构 http://blog.csdn.net/zhoudaxia/article/details/8855937
Hive的元数据库配置,metadata相关 http://www.2cto.com/database/201411/352706.html
Hadoop Hive SQL语法详解 http://blog.csdn.net/hguisu/article/details/7256833
Hive几种数据导入方式 http://www.iteblog.com/archives/94
Hive专栏 http://www.iteblog.com/archives/category/hive
Hive专栏 http://my.oschina.net/leejun2005/blog?catalog=384549
 
posted @ 2014-12-25 15:15  syx_1987  Views(5513)  Comments(0Edit  收藏  举报