Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 快速对分区配置单元表进行增量更新_Hadoop_Hive_Etl_Partition - Fatal编程技术网

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

Hadoop 快速对分区配置单元表进行增量更新,hadoop,hive,etl,partition,Hadoop,Hive,Etl,Partition,我有两个蜂巢表T1和T2。T1是一个由列date1 hour1分区的外部表。它还有另一个日期列date2(与date1不同) T2是一个按date2分区的配置单元表 我将每小时递增地获取数据,并且我可以使用动态分区轻松地将其添加到表T1中 我想要一种有效的方法,从T1中选择数据,并将数据增量加载到T2中,按date2分区 这就是我现在正在做的 insert into T2 select *, date2 from ( select * from T1 wh

我有两个蜂巢表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为null”来模拟“where not in”。我这样做是为了避免重复数据,查询可以运行多次,我希望它是幂等的

问题

  • T2中的哪些分区将用于此查询?如何最小化使用的分区数

  • 进行这种幂等增量数据加载的最有效方法是什么

  • T2上的所有分区都应该受到影响,因为where条件不会过滤掉它们

  • 更典型的方法是在T2中创建与T1中的新分区相对应的新分区,并将T1中的数据插入这些分区上的T2中。您使用的策略不是为了速度而构建的,而是为了从T1中查找缺失的数据并插入这些数据。这可能不是进行大容量/批量插入的最佳方法