Hive 3.x|第五天|Hive数据类型

基本数据类型

在这里插入图片描述

集合数据类型

在这里插入图片描述

集合实操示例

假设某表有如下一行,我们用 JSON 格式来表示其数据结构。在 Hive 下访问的格
式为

{
	 "name": "songsong",
	 "friends": ["bingbing" , "lili"] , //列表 Array, 
	 "children": { //键值 Map,
		 "xiao song": 18 ,
		 "xiaoxiao song": 19
	 }
	 "address": { //结构 Struct,
	 "street": "hui long guan",
	 "city": "beijing"
	 }
}
  1. 基于上述数据结构,我们在 Hive 里创建对应的表,并导入数据。创建本地测试文件 test.txt
songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long guan_beijing
yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijing
  1. Hive 上创建测试表 test1
    在这里插入图片描述
create table test1(
	name string,
	friends array<string>,
	children map<string, int>,
	address struct<street:string, city:string> 
)
row format delimited fields terminated by ','
collection items terminated by '_'
map keys terminated by ':'
lines terminated by '\n';

其中
row format delimited fields terminated by ‘,’:列分隔符
collection items terminated by ‘_’:MAP STRUCT 和 ARRAY 的分隔符
map keys terminated by ‘:’:-- MAP 中的 key 与 value 的分隔符
lines terminated by ‘\n’:行分隔符

  1. 导入文本数据到测试表
load data local inpath '/opt/module/hive/datas/test1.txt' into table test1;

在这里插入图片描述

  1. 访问三种集合列里的数据,以下分别是 ARRAY,MAP,STRUCT 的访问方式
select friends[1],children['xiao song'],address.city from 
test1
where name="ongsong";

在这里插入图片描述

类型转化

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

规则

  1. 任何整数类型都可以隐式地转换为一个范围更广的类型,如 TINYINT 可以转换成INT,INT 可以转换成 BIGINT。
  2. 所有整数类型、FLOAT和STRING 类型都可以隐式地转换成DOUBLE。
  3. TINYINT、SMALLINT、INT 都可以转换为 FLOAT。
  4. BOOLEAN 类型不可以转换为任何其它的类型。

CAST 进行数据类型转换

例如
CAST(‘1’ AS INT)将把字符串’1’ 转换成整数 1;
如果强制类型转换失败,如执行
CAST(‘X’ AS INT),表达式返回空值 NULL。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值