gpt4 book ai didi

arrays - 如何在 HIVE 中合并具有不同模式的表?

转载 作者:行者123 更新时间:2023-12-04 14:11:12 25 4
gpt4 key购买 nike

我在 HIVE 中有两个表:

  • 表 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.
    我该如何解决这个问题?谢谢

    最佳答案

    嗯。可能有更简单的方法,但我不知道如何表达 NULL Hive 中的数组常量。您可以为此使用 SQL:

    select g.*
    from (select N, C from A
    union all
    select A.N, C
    from B join
    A
    on 1 = 0
    ) g;

    换句话说,我可能不知道如何表达我头顶上的常数。但是,我可以安排从 A 获取它-- 未能匹配到一行。

    关于arrays - 如何在 HIVE 中合并具有不同模式的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36749353/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com