Apache Hive 数据类型

1.原子数据类型
tinyint
smallint
int
bigint
boolean
float
double
string   -- 双引号和单引号都可以
timestamp
2.复杂数据类型
1)array 数组类型

array:用于存放相同数据类型的一组数据,使用该类型时一定要使用泛型 <泛型> array<string>

使用时需要指定分割符:

collection items ternaminated by ',' --  指定集合中的每一个元素之间的分隔符

数组中元素的访问:

字段名[索引] -- 查询的时候如果没有当前下标的元素,则返回null

示例:

建表

create table myarray(id int,name string,workadd array<string>) row format delimited fields terminated by '\t' collection items terminated by ',';

导入数据

load data local inpath '/home/hadoop/mkmg/myarray.txt' into table myarray;

只取第一个元素(工作地点):

hive> select id,name,workadd[0] as wd1 from myarray;
OK
1	tom	beijing
2	jim	shanghai
3	marry	guangzhou
4	john	hangzhou
2)map 映射类型

用于存放k-v键值对的一组数据的集合,map中的每一个元素都是k-v,在指定map集合的时候,需要指定k,v的泛型 <string,int>

使用时需要指定分割符:

collection items ternaminated by ','

map keys terminated by ''; -- 指定每一个key-value之间法人分隔符。

映射中元素的访问:

may_map["键"]

示例:

原始数据文件:

[hadoop@mycat01 mkmg]$ cat tb_map.txt
09504121001	zhangyanpeng	age:23,sex:1
09504121025	wangzheng	age:21,sex:1
09504121089	xiaoru	age:20,sex:0

建表语句

create table mymap(sid string,name string,infos map<string,int>) row format delimited fields terminated by '\t' collection items terminated by ',' map keys terminated by ':';

加载文件数据到表

load data local inpath '/home/hadoop/mkmg/tb_map.txt' into table mymap;

取年龄单独成一个字段

hive> select sid,name,infos['age'] as age  from mymap;
OK
sid	name	age
09504121001	zhangyanpeng	23
09504121025	wangzheng	21
09504121089	xiaoru	20
Time taken: 0.104 seconds, Fetched: 3 row(s)
3)struct 自定义类型

java 中的对象的结构,封装很多属性, struct<指定属性:类型,…>

info struct<name:String,age:int,address:stringg>

struct中元素访问:

mystructfield.name -- 即 对象.属性 的调用方式

原始文件数据:

09504121001	zhangyanpeng	17.50|100|beijing
09504121025	wangzheng	15.50|60|tianjing
09504121089	xiaoru	17.50|80|shandong

建表语句

create table mystruct(sid string,name string,perinfo struct<price:double,sum:int,place:string>) row format delimited fields terminated by '\t' collection items terminated by '|';

加载本地文件到表

load data local inpath '/home/hadoop/mkmg/tb_struct.txt' into table mystruct;

查询表数据

hive> select * from mystruct;
OK
mystruct.sid	mystruct.name	mystruct.perinfo
09504121001	zhangyanpeng	{"price":17.5,"sum":100,"place":"beijing"}
09504121025	wangzheng	{"price":15.5,"sum":60,"place":"tianjing"}
09504121089	xiaoru	{"price":17.5,"sum":80,"place":"shandong"}

查询该员工的编号,姓名和卖出的产品价格和工作地点

hive> select sid,name,perinfo.price price,perinfo.place workadd from mystruct;
OK
sid	name	price	workadd
09504121001	zhangyanpeng	17.5	beijing
09504121025	wangzheng	15.5	tianjing
09504121089	xiaoru	17.5	shandong
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值