快速对分区配置单元表进行增量更新

pkwftd7m  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(348)

我有两个Hive表t1和t2。t1是一个按列date1(hour1)分区的外部表。它还有另一个名为date2的日期列(与date1不同)。
t2是按date2分区的配置单元表。
我将每小时以增量方式获取数据,并且我可以很容易地使用动态分区将其添加到表t1中。
我需要一种有效的方法从t1中选择数据,并将数据增量加载到t2中,按date2分区。
这就是我现在正在做的

insert into T2

select
    *,
    date2
from

    (
      select * from T1 where date1="a constant date" and hour1 = "a constant hour"
    ) T1SubQuery
left outer join
    T2
on
    T1SubQuery.idColumn = T2.idColumn
where
    T2.idColumn is null

我正在做一个左外连接和“where t1.idcolumn is null”来模拟“where not in”。我这样做是为了避免重复数据,查询可以运行多次,我希望它是幂等的。
问题
t2中的哪些分区将用于此查询?如何最小化使用的分区数?
进行这种幂等增量数据加载最有效的方法是什么?

pod7payv

pod7payv1#

所有分区都应该在t2上受到影响,因为where条件不会过滤掉它们
更典型的方法是在t2中创建与t1中的新分区相对应的新分区,并将t1中的数据插入到这些分区上的t2中。您所使用的策略并不是为了速度而构建的,而是为了从t1中找到丢失的数据并插入它们。这可能不是进行大批量插入的最佳方法。

相关问题