前提
在介绍Hive的数据类型前,首先需要弄清楚Hive是什么。
Hive是基于Hadoop的一个数据仓库工具,一个数据仓库分析系统,在Hadoop中用来处理结构化数据,可以将结构化的数据映射为一张数据库表,并提供HQL(hive SQL)查询功能,底层数据是存储在HDFS(Hadoop分布式文件系统)。
Hive 依赖于 HDFS 存储数据,Hive 将 HQL 转换成 MapReduce 执行。
所以说 Hive 是基于 Hadoop 的一个数据仓库工具,实质就是一款基于 HDFS 的 MapReduce 计算框架,对存储在 HDFS 中的数据进行分析和管理。
一、数值类型
1.Hive中的整型有四种:
类型 | 大小 | 后缀 |
---|---|---|
TINYINT | 1字节 | Y |
SMALLINT | 2字节 | S |
INT | 4字节 | - |
BIGINT | 8字节 | L |
整型数值默认按照INT处理,整型数值超出INT范围、数值后加Y/S/L后缀时,发生向其他整型类型的转换。
2.Hive的浮点型有两种:
类型 | 大小 |
---|---|
FLOAT | 4字节 |
DOUBLE | 8字节 |
3.小数点:
在Hive 小数类型与Java大十进制格式相同。它是用于表示不可改变任意精度。语法和示例如下:
DECIMAL(precision, scale)
decimal(10,0)
二、字符串类型
字符串类型的数据类型可以使用单引号(’’)或双引号(“”)来指定。它包含两个数据类型:VARCHAR和CHAR。Hive遵循C-类型的转义字符。
下表描述了Hive的字符串类型:
类型 | 长度 |
---|---|
CHAR | 1-255 |
DOUBLE | 1-65535 |
三、时间类型
- 时间戳:它支持传统的UNIX时间戳可选纳秒的精度。它支持的java.sql.Timestamp格式“YYYY-MM-DD HH:MM:SS.fffffffff”和格式“YYYY-MM-DD HH:MM:ss.ffffffffff”。
- 日期:DATE值在年/月/日的格式形式描述 {{YYYY-MM-DD}}。
四、其他类型
BOOLEAN(布尔类型):true false
BINARY (二进制)
五、复合类型
-
array数组类型 :一组有序字段,字段类型必须相同。ARRAY<data_type>
eg:array(“a”,”b”,”c”) -
Maps : Maps和Java中的Map相同,即存储K-V对的; 一组无序的键/值对,键的类型必须是原子的,值可以是任意类型,同一键映射的值得类型必须相同。
MAP<primitive_type, data_type>
eg:map(“a”,1,”b”,2) -
Structs:一组由任意数据类型组成的结构,一组命名的字段,字段类型可以不同。
STRUCT<col_name : data_type, …>
eg:struct(“a”,1,2,3)
例:
create table table_eg(
a1 ARRAY< INT>,
a2 MAP< STRING,INT>,
a3 STRUCT< a:STRING,b:INT,c:DOUBLE>);