我有一个带有struct数组的表:
CREATE TABLE test1(
key_value array<struct<
key:string, string_value:string
>>
);
填充它:
INSERT OVERWRITE TABLE test1
SELECT array(
named_struct('key','key0', 'string_value','some string 0'),
named_struct('key','key1', 'string_value','some string 1'),
named_struct('key','key2', 'string_value','some string 2'),
named_struct('key','key3', 'string_value','some string 3')
);
然后,我针对该表创建了一个视图,可以直接访问数组中第二个元素struct的“key”元素(不要问我为什么需要这个:)
CREATE VIEW v_test1 AS
SELECT
key_value[2].key
FROM test1;
当我查询这个视图时,我得到一个错误:
hive> SELECT * from v_test1;
FAILED: SemanticException Line 0:-1 . Operator is only supported on struct or list of struct types 'key' in definition of VIEW v_test1 [
SELECT
null.`key`
FROM `default`.`test1`
] used as v_test1 at Line 1:14
如您所见,由于某些原因,表达式键\u值[2]。键被转换为null。key
为什么会发生这种情况?我该如何解决?非常感谢!
升级版本:
$ hive --version
Hive 1.1.0-cdh5.7.2
1条答案
按热度按时间az31mfrm1#
复制和粘贴代码时
insert overwrite
这句话不适合我。我跑了:
以及
select * from v_test1
按预期工作key2
).当我用一个较短的数组填充表时-我得到了
NULL
.我正在使用hive版本1.2.1