Droped和重新创建的hive外部表,但没有显示数据

时间:2017-11-16 18:22:26

标签: hive create-table select-query external-tables

首先创建一个配置单元外部表:

create external table user_tables.test
(col1 string, col2 string)
partitioned by (date_partition date);
插入

记录:

INSERT INTO TABLE user_tables.test
PARTITION (date_partition='2017-11-16') VALUES ('abc', 'xyz'), ('abc1', 'xyz1');

现在,表被删除并使用相同的脚本重新创建。 当我尝试 -

SELECT * FROM user_tables.test WHERE date_partition='2017-11-16';`

我得到Done. 0 results.

1 个答案:

答案 0 :(得分:1)

这是因为您创建的表是分区表。您运行的插入将为date_partition ='2017-11-16'创建一个分区。当您删除并重新创建表时,Hive会丢失有关该分区的信息,它只知道该表。

运行以下命令以使hive根据数据重新创建分区。

MSCK REPAIR TABLE user_tables.test;

现在,您将在运行SELECT时看到数据。

如果您想知道表中的分区,请运行以下语句:

SHOW PARTITIONS user_tables.test; 

在MSCK之前和之后运行此操作以查看效果。