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('2021年09月06日 16时00分21秒','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;
小明 余老师
小红 体育老师
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南