hive 数据类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive 数据类型相关的知识,希望对你有一定的参考价值。
参考技术A 由于在实际项目中使用,这里主要讲一下数值型1、TINYINT
2、SMALLINT
3、INT/INTEGER
4、BIGINT
5、FLOAT
6、DOUBLE
7、DECIMAL
hive 数值型主要是以上7种组成。
这里主要讲一下Double 和Decimal
对于小数的显示,我在项目中考虑用Double还是Decimal,由于Double 不如Decimal精确,而且在数字过长的时候会有科学技术法表示,所以这块用的是Decimal去做的。
用的时候也出现过问题。Decmal的用法如下 Decimal(precision, scale)
precision 表示的是长度
scale 表示 小数位数
比如 -99.99 表示precision为4 (注意 正负号不包括在内) scale 为2
之前我以为是总体20位,小数有2位那么 整数就能有18位了 ,其实不是这样子,举个例子。一个小数333.07 导入表
而建立一个Decimal(20,17) 的话 便可以顺利导入
Hive--02---Hive数据类型
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
Hive数据类型
1.基本数据类型
DECIMAL
这里我们对DECIMAL类型做两点说明:
- DECIMAL(9,8)代表最多9位数字,后8位是小数。此时也就是说,小数点前最多有1位数字,如果超过一位则会变成null。
- 如果不指定参数,那么默认是DECIMAL(10,0),即没有小数位,此时0.82会变成1。
案例1
create table if not exists
datatype_test1(id int,col1 decimal,col2 decimal(9,8))
row format delimited fields terminated by ',';
2.字符串类型
3.日期与时间戳类型
案例2
4.集合类型
案例3
创建表:
create table if not exists
datatype_test4(
id int,
info struct<name:string,weight:double>,
score array<Int>,
info_map map<string,string>)
row format delimited fields terminated by ','
COLLECTION ITEMS TERMINATED BY ';'
MAP KEYS TERMINATED BY ':'
lines terminated by '\\n';
可以看到,我们定义了三种不同的集合类型字段,
-
并指定了列字段分隔符为",",即id, struct,array,map
-
并指定了集合类型的分隔符为";",即struct,array,以及map的不同kv之间用";"分割
-
同时定义了map的key和value之间用":"分割。
-
lines terminated by’\\n’; – 行分隔符
Array类型读取
可以通过下标进行访问,下标从0开始:
Map类型读取
可以通过[‘key’]来访问不同key的内容:
struct类型读取-----类似java bean
可以通过"."来访问不同的内容
5.类型转换
以上是关于hive 数据类型的主要内容,如果未能解决你的问题,请参考以下文章