我在 hive 里有两张table:
表a,其中包含一列“n”,属于数组类型
表b中未出现“n”列
表a和表b都包含“c”列。
我想这样把他们结合起来:
select g.* from
(select N, C from A
union all
select null as N, C from B
) g;
但这在hive中引发了一个错误:
FAILED:...Schema of both sides of union should match: Column N is of type array<string> on first table and type void on second table.
因此,我尝试转换数据类型:
select g.* from
(select N, C from A
union all
select cast(null as array) as N, C from B
) g;
这失败了 "cannot recognize input near 'array' ')' 'as' in primitive type specification.
我该怎么解决这个问题?感谢
1条答案
按热度按时间slsn1g291#
嗯,也许有一个更简单的方法,但我不知道怎么表达一个意思
NULL
配置单元中的数组常量。您可以使用sql进行此操作:换言之,我可能不知道如何表达头顶上的常量。但是,我可以安排从
A
--与一行不匹配。