Hive数据类型

Hive数据类型

整型:TINYINT、SMALLINT、INT、BIGINT(Hive常用)
浮点:FLOAT、DOUBLE(Hive常用)
布尔类型:BOOL (False/True)
字符串:STRING(Hive常用)
时间类型:
时间戳 timestamp
Timestamp 格式:(年-月-日 时-分-秒.毫秒)
“YYYY-MM-DD HH:MM:SS.fffffffff”(9位小数位精度)

举例时间戳标准格式:
	2022-02-19 14:24:57.200
日期 date
DATE值描述特定的年/月/日
格式:
	YYYY-MM-DD
	
举例日期标准格式:
	2022-02-19

举例

#创建数据文件 touch testDate.txt;

#编辑数据文件内容 2022-02-19 14:24:57.200,2022-02-19

#建表
create table testdate(
    ts timestamp
    ,dt date
) row format delimited fields terminated by ',';

#加载数据
load data local inpath '/usr/local/soft/data/testDate.txt' into testdate;

#查询
select * from testdata;

#查询结果(如果不是标准格式,查询结果将会是NULL)
2022-02-19 14:24:57.2	2022-02-19
  • 时间戳与时间字符串转换
#from_unixtime 传入一个时间戳以及pattern(yyyy-MM-dd)可以将时间戳转换成对应格式的字符串
select from_unixtime(1630915221,'yyyy年MM月dd日 HH时mm分ss秒')

#unix_timestamp 传入一个时间字符串以及pattern(yyyy-MM-dd),可以将字符串按照pattern转换成时间戳
select unix_timestamp('20210906160021秒','yyyy年MM月dd日 HH时mm分ss秒');
select unix_timestamp('2021-01-14 14:24:57.200')

举例

使用from_unixtime将时间戳解析为字符串
(1)select from_unixtime(1630915701,'yyyy/MM/dd HH:mm:ss');
	解析结果:
		2021/09/06 16:08:21

使用unix_timestamp将字符串解析为时间戳
(1)select unix_timestamp('2021年09月06日 16时08分21秒');
	解析结果:
		NULL
(2)select unix_timestamp('2021年09月06日 16时08分21秒','yyyy年MM月dd日 HH时mm分ss秒');	//当在后面指定格式来解析,就可以解析出来 
	解析结果:
		1630915701
(3)select unix_timestamp('2021-09-06 16:08:21.2');
	解析结果:
		1630915701
复杂数据类型
array:有序集合
#建表
create table testArray(
    name string,
    weight array<string>	#指定array数据类型 
)row format delimited 
fields terminated by '\t'
COLLECTION ITEMS terminated by ',';

#加载数据
文件数据:加载到表中
杨老板	140,160,180
张志凯	160,200,180

#查询获取
select * from testArray;
杨老板	["140","160","180"]
张志凯	["160","200","180"]

select name,weight[0] from testArray;
杨老板 140
张志凯 160

select name,weight[3] from testArray;
杨老板 NULL
张志凯 NULL
map:<k,v>

key:value,key2:v2,k3:v3

#建表
create table scoreMap(
    name string,
    score map<string,int> 	#
)ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY ':';

#加载数据
小明	语文:91,数学:110,英语:40
小红	语文:100,数学:130,英语:140

#查询
select name,score from scoreMap;
小明	{“语文”:91,“数学”:110,“英语”:40}
小红	{“语文”:100,“数学”:130,“英语”:140}

select name,score['数学'] from scoreMap;
小明	110
小红	130

struct:结构体:可自定义属性
#建表
create table scoreStruct(
    name string,
    score struct<course:string,score:int,course_id:int,teacher:String> 
)ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ',';

#加载数据
小明	语文,91,000001,余老师
小红	数学,100,000002,体育老师

#查询
select * from scoreStruct;
小明	{"course":"语文","score":91,"course_id":1,"teacher":"余老师"}
小红	{"course":"数学","score":100,"course_id":2,"teacher":"体育老师"}

select name,score.teacher from scoreStruct;
小明	余老师
小红	体育老师

https://blog.csdn.net/woshixuye/article/details/53317009

posted @   阿伟宝座  阅读(503)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示