Hive数据类型汇总

1 背景介绍

Hive是一个基于Hadoop的开源数据仓库工具,用于存储(HDFS)和处理(MapReduce或Spark)海量结构化数据,大多数公司都应用到Hive。

在实际数据开发过程中,同时会应用到编程语言Java以及数据库Mysql或者Oracle,大家都知道这几项大数据技术栈都存在数据类型,但是各自数据类型又大同小异,在实际建表的过程中经常容易混淆,因此需要弄清楚这些差异。

鉴于数仓建表时Hive使用频率较高,今天重点介绍Hive数据类型,便于大家更好的掌握。

2 Hive数据类型

2.1 基本数据类型

在这里插入图片描述
相关说明:

1). 本文重点介绍与Java数据类型对应关系,具体对应关系参考上图。
2). 在实际创建Hive表时,一般数值类型用int(不存在小数)或者decimal(存在小数),字符串类型用string,时间类型用timestamp,日期类型用date,其他Hive类型使用较少。
3). DECIMAL类型用于表示任意精度的小数,主要用来表示货币数值。精度指明非标度值的位数,标度指小数点右侧的位数。如DECIMAL(5,2) 范围区间-999.99到999.99,DECIMAL(5)范围区间-99999 到 99999。精度省略,默认值为10,即DECIMAL等价于DECIMAL(10,0)。
4). STRING是一个无最大长度声明的变长字符串,理论上最多存储2GB的字符数;VARCHAR需要声明最大长度(范围在1到65355之间);CHAR是固定长度字符串,如有必要则以空格填充尾部,当CHAR值被用于字符串比较操作时,忽略尾部空格。

2.2 集合数据类型

在这里插入图片描述
相关说明:

1). 集合数据类型在实际工作中使用较少。

2.3 类型转换

Hive的原子数据类型是可以进行隐式转换的,类似于Java的类型转换,例如某表达式使用INT类型,TINYINT会自动转换为INT类型,但是Hive不会进行反向转化,例如,某表达式使用TINYINT类型,INT不会自动转换为TINYINT类型,它会返回错误,除非使用CAST操作。

2.3.1.隐式类型转换规则如下
(1)任何数值类型都可以隐式地转换为一个范围更广的类型或者文本类型(STRING、VARCHAR、CHAR),如TINYINT可以转换成INT,INT可以转换成BIGINT。
(2)所有整数类型、FLOAT和文本类型都可以隐式地转换成DOUBLE。
(3)TINYINT、SMALLINT、INT都可以转换为FLOAT。
(4)BOOLEAN类型不可以转换为任何其它的类型。
(5)TIMESTAMP和DATE可以被隐式转换为文本类型。

2.3.2.可以使用CAST操作显示进行数据类型转换
例如CAST(‘1’ AS INT)将把字符串’1’ 转换成整数1;如果强制类型转换失败,如执行CAST(‘X’ AS INT),表达式返回空值 NULL。

3 总结

以上就是对hive数据类型的完整总结,需要结合实际业务场景选择对应数据类型,希望对大家有所帮助!


版权声明:本文为weixin_44868723原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。