Blog
hive-03 数据类型
基本数据类型
- 字符串"2020-01-01" 进行日期操作 会自动转换日期类型进行操作
- String类型 相当于数据库中的varchar 理论上可以存储2GB的字符数
- 允许任意层次的嵌套
- 定义Array需要定义元素之间分隔符
- 定义Map需要定义键值对之间分隔符和一组k-v分隔符
- STRUCT需要定义javaBean类似结构
样例数据
{
"name": "songsong",
"friends": ["bingbing", "lili"], // 列表array
"children": { // 键值Map
"xiao song": 18,
"xiaoxiao song": 19
},
"address": {
"street": "hui long guan",
"city": "beijing"
}
}
create table test(
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 ':' -- 字典kv之间分隔符
lines terminated by '\n'; -- 每条数据分隔符
访问数组方式
select friends[0] from test;
map访问方式
select children["xiao song] from test;
struct访问方式
select address.street from test01;
类型转换
- 隐式类型转换
- 任何整数类型都可以饮食地转换为一个范围更广的类型
- 所有整数类型、float和string类型都可以隐式转换成double
- tinyint smallint int 都可以转换为float
- boolean类型不可以转换为其他类型
- 可以使用CAST操作显示进行数据类型转换
CAST('1' AS INT) -- 将字符串1 转换成整数1