我对Hive和堆栈溢出是完全陌生的。我试图创建一个具有复杂数据类型“struct”的表,然后使用 INSERT INTO TABLE
在Hive里。
我使用以下代码:
CREATE TABLE struct_test
(
address STRUCT<
houseno: STRING
,streetname: STRING
,town: STRING
,postcode: STRING
>
);
INSERT INTO TABLE struct_test
SELECT NAMED_STRUCT('123', 'GoldStreet', London', W1a9JF') AS address
FROM dummy_table
LIMIT 1;
我得到以下错误:
编译语句时出错:失败:semanticexception[error 10044]:无法插入到目标中,因为列号类型与“struct\u test”不同:无法将列0从struct转换为array>。
我能够成功地使用类似的代码来创建和填充数据类型数组,但在使用struct时遇到了困难。我试过很多在网上找到的代码示例,但是没有一个适合我。。。我真的很感谢一些帮助,因为我已经坚持了很长一段时间了!谢谢。
4条答案
按热度按时间ars1skjm1#
有可能:
必须在dummy或其他表的语句中指定列名。
或者
2w2cym1i2#
无需创建任何虚拟表:只需使用命令:
hsgswve43#
不能直接在配置单元中插入复杂数据类型。要插入结构,必须使用名为\u struct的函数。您需要创建一个虚拟表,其中包含要插入到所需表的structs列中的数据。比如在你的例子中创建一个虚拟表
然后插入到所需的表中
qij5mzcb4#
您的sql错误。您应该使用sql: