基本数据类型
- Hive的数据类型和Java是很相似的
对于 Hive 的 String 类型相当于数据库的 varchar 类型,该类型是一个可变的字符串,不 过它不能声明其中最多能存储多少个字符,理论上它可以存储 2GB 的字符数
集合数据类型
- 集合数据类型,这些数据类型都支持嵌套(例如:array里的元素可能也是个array)
- Hive 有三种复杂数据类型 ARRAY、MAP 和 STRUCT。ARRAY 和 MAP 与 Java 中的 Array 和 Map 类似,而 STRUCT 与 C 语言中的 Struct 类似,它封装了一个命名字段集合,复杂数据 类型允许任意层次的嵌套。
- 思考:当数据的格式如下时,该如何建表
songsong,bingbing_lili,xiao song:18_xiao xiao song:19,hui long guan_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 key terminated by ':'
lines terminated by '\n';
- 访问特殊类型的参数
- 访问name的语句:
select name from test;
- 访问friends的语句:
select friends[1] from test;
- 访问children的语句:
select children.['xiao song'] from test;
- 访问address的语句:
select address.street from test
类型的转换
隐式转换
- 如何整数类型都可以隐式转换成一个范围更广的类型,如TINYINT可以转换为INT、INT可以转换成BIGINT
- 所有整数类型、FLOAT和STRING类型都可以隐式转换成DOUBLE类型
- TINYINT、SMALLINT、INT都可以转换成FLOAT
- BOOLEAN不可以转换成如何类型
强制转换
- 可以使用cast操作显示进行数据类型转换
- 例如:将字符串1转换成整数1,如果强制类型转换失败,表达式返回null
select '1' + 2,cast('1' as int) + 2;