Hive MSCK修复配置单元外部表

Hive MSCK修复配置单元外部表,hive,Hive,我每天都在HDFS中接收数据。 从数据到HDFS,我生成按日期分区的配置单元外部表。 我的问题如下:我是否应该在每次数据摄取后运行MSCK REPAIR TABLE tablename,在这种情况下,我必须每天运行该命令。 或者在创建表时只运行一次就足够了。 非常感谢你的回答 致以最诚挚的问候当外部表的结构或分区更改时,您只运行MSCK修复表。此命令更新表的元数据 一个经常发生的例子,例如 您可以使用表示日期的字段dt,对表进行分区 昨天,您插入了一些数据,这些数据是dt=2018-06-12

我每天都在HDFS中接收数据。 从数据到HDFS,我生成按日期分区的配置单元外部表。 我的问题如下:我是否应该在每次数据摄取后运行MSCK REPAIR TABLE tablename,在这种情况下,我必须每天运行该命令。 或者在创建表时只运行一次就足够了。 非常感谢你的回答


致以最诚挚的问候

当外部表的结构分区更改时,您只运行
MSCK修复表
。此命令更新表的元数据

一个经常发生的例子,例如

您可以使用表示日期的字段
dt
,对表进行分区

  • 昨天,您插入了一些数据,这些数据是
    dt=2018-06-12
    ,然后您应该运行
    MSCK REPAIR TABLE
    来更新元数据,告诉hive注意一个新分区
    dt=2018-06-12
  • 今天,您插入了一些数据,这些数据是
    dt=2018-06-13
    ,然后您应该运行
    MSCK REPAIR TABLE
    ,以更新元数据,告诉hive注意一个新分区
    dt=2018-06-13

因此,如果我为新的一天摄取添加了一个新分区,我必须运行此命令,您可以确认吗?只有在创建表时使用
day
字段对表进行分区,您是否在语句中添加了
PARTITIONED BY
?是的,我确实在创建表的hql文件中提到了PARTITIONED BY date,不,如果要在创建时只运行一次,我会犹豫在这个文件末尾的ton pout MSCK REPAIR TABLE,或者将它放在第二个hql文件中,因为它将在每天添加一个新分区后执行。只要有新分区,就应该运行它。i、 e.本案中的新日期。