以下为Hive的建表语句,为啥第二句查询语句会查询到映射值是空……第三句就成功了
1.
create table movie(
name string,
movie map<string,int>
)row format delimited fields terminated by '\t'
collection items terminated by ','
map keys terminated by ':'
2.
select name,mov,movie[mov] from
(select name,mov,movie from movie
lateral view explode(map_keys(movie)) v as mov)a
3.
select mov,movie[mov] from movie a
join
(select name,mov from movie
lateral view explode(map_keys(movie)) v as mov) b
on a.name=b.name;
4.
lilei {"泰坦尼克":2,"阿凡达":1}
xiaohong {"阿凡达":3}
han {"金鱼姬":1,"阿凡达":1,"柯南":2}
有具体报错提示信息吗,发出来看下。
试试这个:
select name,mov,movie[mov] from
(select name,mov,movie[mov] from movie
lateral view explode(map_keys(movie)) v as mov)a