如何在配置单元中插入uniontype

lvmkulzt  于 2021-06-28  发布在  Hive
关注(0)|答案(2)|浏览(338)

我读了一个关于Hive中的联合类型的著名例子

CREATE TABLE union_test(foo UNIONTYPE<int, double, array<string>, struct<a:int,b:string>>);
SELECT foo FROM union_test;

{0:1}
{1:2.0}
{2:["three","four"]}
{3:{"a":5,"b":"five"}}
{2:["six","seven"]}
{3:{"a":8,"b":"eight"}}
{0:9}

好 啊。。伟大的。配置单元sql中插入这些行的语法是什么?我尝试插入到union\u test values(1.0)semanticexception[error 10044]:行1:12无法插入到目标表中,因为列号/类型不同“union\u test”:无法将列0从字符串转换为uniontype,struct>。
另一方面,如果我用一个double来创建一个表,那么如何用union\u测试表来填充它呢?
当然有小费。谢谢

jq6vz3qz

jq6vz3qz1#

CREATE table testtable5(c1 integer,c2 uniontype<integer,string>);
INSERT INTO testtable5 VALUES(5,create_union(0,1,'testing'));
SELECT create_union(if(c1<0,0,1),c1,c2) from testtable5;
INSERT INTO testtable5 VALUES(1,cretae_union(1,1,'testing'));
SELECT create_union(if(c1<0,0,1),c1,c2) from testtable5;
clj7thdc

clj7thdc2#

你考虑过看文件吗?
直接从Hive语言手册自定义项,在“复杂类型构造函数”。。。 create_union (tag, val1, val2, ...) 使用标记参数所指向的值创建联合类型。
好吧,关于“标签参数”的解释很神秘。
举个例子,只要看看那篇博文的底部和/或hortonworks论坛上这个问题的答案。

相关问题