删除并重新创建配置单元外部 table,但未显示数据
Droped and recreated hive external table, but no data shown
首先创建一个外部配置单元 table:
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');
现在,table 被删除并使用相同的脚本重新创建。
当我尝试-
SELECT * FROM user_tables.test WHERE date_partition='2017-11-16';`
我得到Done. 0 results.
这是因为您创建的 table 是分区的 table。您 运行 的插入会为 date_partition='2017-11-16' 创建一个分区。当您删除并重新创建 table 时,Hive 会丢失有关分区的信息,它只知道 table。
运行 下面的命令让配置单元根据数据重新创建分区。
MSCK REPAIR TABLE user_tables.test;
现在您将在 运行 SELECT 时看到数据。
如果你想知道table中的分区运行下面的语句:
SHOW PARTITIONS user_tables.test;
运行这个前后MSCK看效果
首先创建一个外部配置单元 table:
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');
现在,table 被删除并使用相同的脚本重新创建。 当我尝试-
SELECT * FROM user_tables.test WHERE date_partition='2017-11-16';`
我得到Done. 0 results.
这是因为您创建的 table 是分区的 table。您 运行 的插入会为 date_partition='2017-11-16' 创建一个分区。当您删除并重新创建 table 时,Hive 会丢失有关分区的信息,它只知道 table。
运行 下面的命令让配置单元根据数据重新创建分区。
MSCK REPAIR TABLE user_tables.test;
现在您将在 运行 SELECT 时看到数据。
如果你想知道table中的分区运行下面的语句:
SHOW PARTITIONS user_tables.test;
运行这个前后MSCK看效果