您的位置:首页 > 其它

hive中使用map和array

2017-04-29 10:58 309 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: