一、hive常见字段类型总结
1.基本数据类型
1、字符串:string 对长度没有限制
2、数值类型:
- INT :4字节带符号整数,取值范围-2,147,483,648 to 2,147,483,647
- BIGINT:8字节带符号整数,取值范围-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
- FLOAT:4字节单精度浮点数
- DOUBLE:8字节双精度浮点数
- DECIMAL:17字节,如DECIMAL(9,8)代表最多9位数字,后8位是小数。此时也就是说,小数点前最多有1位数字,如果超过一位则会变成null。
3、 布尔类型:BOOLEAN true、false #生产用1/0代替
4、时间日期类型
-
DATE: yyyy-MM-dd格式
-
TIMESTAMP:支持传统的UNIX timestamp,可以达到纳秒精度,支持的string、int的转换
2.复合数据类型
1、STRUCT :相当于python的字典(确定键的)、Scala中的case class。可以自己再创建表时配置,如下
- hive中 student struct< id: string, name: string, age: int >
- python中 student ={id:xxx,name:xxxx,age:xxx}
- Scala中 case class student( id: String= “”, name: String = “”,age: Int=0)
可以通过"点"符号访问元素内容。如可以进行查询 select student.id from table_name 只查看id列
2、MAP 一组键-值对元素集合,使用key可以访问元素。
- score map<string,int>
可以将 ‘数学’:80,‘语文’:89,‘英语’:95 插入至其中。同时可以通过 select score[“语文”] from table_name 查看全部键为语文的值。创建map时需要指定分隔符如: collection items terminated by ‘,’ map keys terminated by ‘:’;
3、ARRAY 列表、数组
- city array<string,>
可以插入这种数据changchu,chengdu,wuhan。可以根据索引查询,如:select score[0] from table_name。
创建array时也需要指定分隔符COLLECTION ITEMS TERMINATED BY ‘,’;
这些符合类型也可以相互结合使用,如array<struct< id: string, name: string, age: int >>,即是一个学生信息的字典组成的列表
二、hive建表语句
create table ${table_name} (
字段名1 字段类型,
字段名2 字段类型,
.