hive动态分区会更新所有分区吗?

时间:2017-01-06 05:09:57

标签: hive

我想使用hive动态分区来覆盖分区表" page_view":

INSERT OVERWRITE TABLE page_view PARTITION(date)
   SELECT pvs.viewTime FROM page_view_stg pvs

我的问题是:如果表" page_view_stg"只有" date = 2017-01-01"的数据,但是dest表" page_view"有一个分区" date = 2017-01-02"。所以在运行此查询后,分区" date = 2017-01-02"是否掉线?如果没有,我应该如何使用动态分区处理这种情况?

由于

1 个答案:

答案 0 :(得分:0)

使用动态分区查询将仅覆盖源数据集中存在的分区。在您的情况下,如果源表不包含此类日期,partition "date=2017-01-02"将保持不变。如果要删除它,最快的方法是执行alter table drop partition语句,因为这是元数据操作。您从目标表中选择源中不存在的分区,并使用shell生成drop语句。或插入新表,删除旧目标,然后重命名。