在Hive中交换分区时,用户查询会发生什么?

时间:2018-06-12 15:07:39

标签: hive hive-partitions

在Apache Hive中交换分区时的用户体验是什么? 它是原子的还是离散的,包括多个步骤,如:

partition rename 
data copy
old partition drop
table repair

1 个答案:

答案 0 :(得分:1)

由于我的研究将我带到了这里,所以我认为我会分享自己为其他Google员工而学到的东西,即使我没有确切的答案。

EXCHANGE PARTITION更合适的名称是MOVE PARTITION,它的名称为only works when the destination partition does not exist

EXCHANGE PARTITION命令会将分区从源表移动到目标表,并更改每个表的元数据。 [...]

执行命令时,HDFS中源表的分区文件夹将被重命名以将其移动到目标表的分区文件夹。 Hive元存储将被更新以相应地更改源表和目标表的元数据。 [...]

目标表不能包含要交换的分区。

因此,对针对“目标”表的长期查询的影响应类似于ought to be "continues to work just fine", but isn't - at least on certain versions的添加分区的影响。

这与Samson的评论大体上一致,除了我不明白为什么会发生“ FileNotFoundException”(除非我们正在谈论针对“源”而不是“目标”表的查询)。