我是hive的新手,我遇到复杂的数据映射检索问题,当我尝试检索特定的键值对时,它也从记录中拉出null。
描述我的桌面电话
name string
ph map<string,int>
这是我的查询
select ph["yy"] from phone;
这是我的数据
gua {"p":123456}
xxx {"yy":7987897}
执行查询后的结果是
hive> select ph["yy"] from phone;
OK
NULL
7987897
我想知道为什么它会抛出空值。
请帮助我非常感谢。
答案 0 :(得分:1)
这是内置的。这对于Array类型列也是有效的。要避免使用NULL,请使用WHERE子句。
- 使用Hive进行编程:
ARRAY索引是基于0的,就像在Java中一样。这是一个选择下级数组的第一个元素的查询:
hive> SELECT name, subordinates[0] FROM employees;
John Doe Mary Smith
Mary Smith Bill King
Todd Jones NULL
Bill King NULL
请注意,引用不存在的元素会返回NULL。此外,不再引用提取的STRING值!