hive中使用map和array

create table table1 (a array<int>, b array<string>) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY ',';

load data local inpath "/files/arraytest.txt"  overwrite into table table1;

arraytest.txt中的数据形式为:(不同数组间用\t分割,同一数组内不同元素用逗号分割)
b00,b01        b00,b01
b00,b01        b00,b01
b00,b01        b00,b01
b00,b01        b00,b01


Hive> select * from table1;

OK
["b00","b01"]   ["b00","b01"]
["b00","b01"]   ["b00","b01"]
["b00","b01"]   ["b00","b01"]
["b00","b01"]   ["b00","b01"]
Time taken: 0.056 seconds

hive> select a from table1;
OK
["b00","b01"]
["b00","b01"]
["b00","b01"]
["b00","b01"]
Time taken: 15.903 seconds

hive> select a[0] from table1;
OK
b00
b00
b00
b00
Time taken: 12.913 seconds

hive> select * from table1 where a[0] = b[0];
OK
["b00","b01"]   ["b00","b01"]
["b00","b01"]   ["b00","b01"]
["b00","b01"]   ["b00","b01"]
["b00","b01"]   ["b00","b01"]
Time taken: 11.803 seconds

关于map的操作说明:

hive> CREATE TABLE table2 (foo STRING , bar MAP<STRING, STRING>)
    > ROW FORMAT DELIMITED
    > FIELDS TERMINATED BY '\t'
    > COLLECTION ITEMS TERMINATED BY ','
    > MAP KEYS TERMINATED BY ':'
    > STORED AS TEXTFILE;

hive> load data local inpath "../hive/examples/files/maptest.txt"  overwrite into table table2;
maptest.txt中的文件格式为:(不同列之间用一个tab分割,map中key和value用冒号分割,不同K/V间用逗号分割)
a00        b0:b01,b1:b11
a01        b1:b11,b2:b12
a02        b2:b12,b3:b13
a03        b3:b13,b4:b14

hive> select bar from table2;
OK
{"b0":"b01","b1":"b11"}
{"b1":"b11","b2":"b12"}
{"b2":"b12","b3":"b13"}
{"b3":"b13","b4":"b14"}
Time taken: 19.237 seconds
怎么根据 key来查询value呢?
hive> select bar['b1'] from table2;
OK
b11
b11
NULL
NULL
Time taken: 11.65 seconds

查看map中的键值对个数:
hive> select 
size(bar) from table2;
OK
2
2
2
2
Time taken: 12.137 seconds

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值