在hive中删除表命令

Cha*_*ika 3 hadoop hive bigdata

我试图删除一个表并在Hive中重新创建它.删除表后,如果我在表上运行select查询,它会在删除之前显示表中的旧行.当表已经被删除时,这怎么可能?为什么即使在删除表并重新创建表之后它仍保留行?

hive> select * from abc;

A 30

B 40

hive> drop table abc;

hive> create external table abc ( name string, qty int);

hive> select * from abc;

A 30

B 40 
Run Code Online (Sandbox Code Playgroud)

Sah*_*sai 7

问题是您正在删除外部表,因此每当您删除该表时,该表的源文件仍然存在于该路径上,因此当您创建具有相同表名的新外部表时,数据可以直接从源路径中提取.因此,删除外部表首先使用以下命令获取表的路径:

hive> describe formatted database_name.table_name;
Run Code Online (Sandbox Code Playgroud)

然后复制出现在说明中的整个位置,例如:

/user/hive/warehouse/database_name.db/table_name

在此之后使用以下命令截断给定表中的所有数据:

hive> dfs -rmr /user/hive/warehouse/database_name.db/table_name;
Run Code Online (Sandbox Code Playgroud)

要么

hive> dfs -rm -r /user/hive/warehouse/database_name.db/table_name;
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用DROP TABLE命令完全擦除它.