Hive 配置单元exchange分区与插入覆盖

Hive 配置单元exchange分区与插入覆盖,hive,Hive,我有两个表src和dest,模式相同。我想使用src表上更新的数据覆盖dest的分区 在hive上有两种不同的语句: 插入覆盖 交换分区 对于exchange partition,这是有问题的,因为一些分区已经存在。(如文档中所述,如果已经存在,则无法进行交换)。我还需要支持并发性和原子性,这意味着drop+exchange可能无法工作,但我对此不确定 对于insert overwrite,这是有问题的,因为它需要很多时间(复制了很多数据,分区没有热插拔) 有什么混合方法可以解决这个问题吗?像e

我有两个表
src
dest
,模式相同。我想使用
src
表上更新的数据覆盖
dest
的分区

在hive上有两种不同的语句:

  • 插入覆盖

  • 交换分区

  • 对于
    exchange partition
    ,这是有问题的,因为一些分区已经存在。(如文档中所述,如果已经存在,则无法进行交换)。我还需要支持并发性和原子性,这意味着drop+exchange可能无法工作,但我对此不确定

    对于
    insert overwrite
    ,这是有问题的,因为它需要很多时间(复制了很多数据,分区没有热插拔)


    有什么混合方法可以解决这个问题吗?像exchange覆盖之类的?如果配置单元不存在,是否有计划将该功能添加到配置单元。

    更改表分区位置…这不是一个好的选择。为什么?因为当您有很多分区时,很难管理每个分区的位置。您希望所有分区位于同一位置。增量更新您的意思是,只有选项1是可能的,我们必须处理将文件从一个表复制到另一个表的开销。如果两个模式具有相同的结构,有没有办法使用hdfs硬链接的优化?我不知道。更改分区位置很快。当然,使用不同位置的分区管理表并不方便。插入覆盖是逐行缓慢进行的。没有神奇的解决办法