hive的数据类型

1 基本数据类型

Hive 数据类型Java 数据类型长度例子
TINYINTbyte1byte 有符号整数20
SMALINTshort2byte 有符号整数20
INTint4byte 有符号整数20
BIGINTlong8byte 有符号整数20
BOOLEANboolean布尔类型,true 或者 falseTRUE FALSE
FLOATfloat单精度浮点数3.14159
DOUBLEdouble双精度浮点数3.14159
STRINGstring字符系列。可以指定字 符集。可以使用单引号或者双 引号。‘ now is the time ’ “for all good men”
TIMESTAMP时间类型
BINARY字节数组

hive是使用java写的,所以很多数据类型和java是一样的。不同的hive没有char类型,用上String类型来代替了,理论上它可以存储 2GB 的字符数。可以使用timestamp类型来表示时间,binary类型来表示字节数组,用来存储二进制文件等。

语法使用:

col_name col_typle,

主键id 姓名 年龄 性别 存款 出生日期 大头照

create table people(
	key bigint,
 	name string,
 	gender tinyint,
 	wages double,
 	birthday timestamp,
 	images binary
  )

2 集合数据类型

数据类型描述语法示例
STRUCT和 c 语言中的 struct 类似,都可以通过“点”符号访 问元素内容。例如,如果某个列的数据类型是 STRUCT{first STRING, last STRING},那么第 1 个元素可以通过字段.first 来 引用。struct() 例 如 struct<street:string, city:string>
MAPMAP 是一组键-值对元组集合,使用数组表示法可以 访问数据。例如,如果某个列的数据类型是 MAP,其中键 ->值对是’first’->’John’和’last’->’Doe’,那么可以 通过字段名[‘last’]获取最后一个元素map() 例如 map<string, int>
ARRAY数组是一组具有相同类型和名称的变量的集合。这些 变量称为数组的元素,每个数组元素都有一个编号,编号从 零开始。例如,数组值为[‘John’, ‘Doe’],那么第 2 个 元素可以通过数组名[1]进行引用。Array() 例如 array

java的集合类型分为三类,一种存储collection,一种存储map,一种存储c的struct或者java对象中的对象的属性。

2.1 array类型

array可用用于存储java中的数据对象,collectiond对象(list,set容器)。他的特点是:所有元素的数据类型是相同的。

比如有一个文档的数据是

梅花,桃花,菊花,荷花,樱花 三叶草,小草,嫩草,绿草
苹果花,牡丹花 香草,水草

可以认为是每条数据由两个不同类别的变量表示,一个表示花,一个表示草;并且每个类别的数据类型是一样的,因此可以定义两个数组来进行存储该数据。

CREATE TABLE IF NOT EXISTS db_hive.table_arraytext1(
    floors ARRAY<string>,
    grass ARRAY<string>
)
row format delimited fields terminated by '\t'
collection items terminated by ','
lines terminated by '\n';
2.2 map类型

map数据类型,数据采用K-V的形式进行。

比如一下文档,很明显的使用k-v的形式进行数据存储,我们就可以使用map的类型来进行存储

qq:944869,微信:123456,电话:123456 T桖:7,外衣:10,裤子:20
email:123@123.com,电话:456123 运动服:10,羽绒服:5

CREATE TABLE IF NOT EXISTS db_hive.table_maptext1(
    contact map<string,string>,
    clothes map<string,string>
)
row format delimited fields terminated by '\t'
collection items terminated by ','
map keys terminated by ':'
lines terminated by '\n';
2.3 struct类型

在面向对象中,对象的属性就可以认为是一个struct的类型

比如一下文档,能感觉到,这个文档中存储的信息前面是一个人的信息,后面是一个宠物的信息。这里可以认为存储的是两个对象的属性,就可以使用struct的类型来存储。

张三,18,男,学生,团员 大黄,狗子,2
李四,20,男,学生,预备党员 橘座,猫咪,2

CREATE TABLE IF NOT EXISTS db_hive.table_structtext1(
    people struct<name:string,age:int,indenty:string>,
    pet struct<name:string,style:string,age:int>
)
row format delimited 
fields terminated by '\t'
collection items terminated by ','
map keys terminated by ':'
lines terminated by '\n';

3 例子

现在有一个文档

张三 18 男 扫地,做饭,洗碗 2000.20 2000-02-10 12:04:00 云南,昆明市,五华区 qq:9469444,微信:184681
李四 20 男 逛街,打球,打LOL 123122.80 1993-12-10 12:04:00 云南,昆明市,嵩明,杨林 qq:4869444,微信:1846829,电话:123456789

定义他的数据类型

CREATE TABLE IF NOT EXISTS db_hive.table_person1(
    name string COMMENT '名字', 
    age int COMMENT '年龄',    
    gender string COMMENT '性别',
    hobby array<string> COMMENT '爱好',
    wagger double,
    birthday timestamp,
    address struct<pro:string,city:string,area:string,twon:string>,
    contact map<string,string>
)
row format delimited 
fields terminated by '\t'
collection items terminated by ','
map keys terminated by ':'
lines terminated by '\n';

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值