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类型做两点说明:

  1. DECIMAL(9,8)代表最多9位数字,后8位是小数。此时也就是说,小数点前最多有1位数字,如果超过一位则会变成null。
  2. 如果不指定参数,那么默认是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.类型转换


开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

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

Hive的数据类型

hive数据类型

Hive支持的数据类型

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

大数据技术之Hive基本概念安装数据类型

大数据技术之Hive基本概念安装数据类型