hive中的droptable命令

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

我试图删除一个表并在 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 
7

问题是你正在删除外部表,所以每当我们在那个时候删除这个表的源文件仍然存在于该路径上,所以每当我们要创建一个具有相同表名的新外部表,那么数据可以直接从源路径中提取,为了解决这个问题,首先使用以下命令获取表的路径:

hive> describe formatted database_name.table_name;

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

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

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

hive> dfs -rmr /user/hive/warehouse/database_name.db/table_name;

hive> dfs -rm -r /user/hive/warehouse/database_name.db/table_name;

然后你可以使用 DROP TABLE 命令完全擦除它。

2

我不知道蜂巢,但如果它是任何像 Oracle(我,有点,知道),然后外部表指向一个文件存储在您的磁盘上。

因此,一旦你放弃了它,你就不能使用它(当然)。但是后来你创建了另一个 EXTERNAL TABLE(参见你的例子中的第 5 行),当然你可以再次从中选择。

因为,您没有删除作为该外部表的数据源的 FILE。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(727)
在Android11中的两个应用程序之间共享数据
上一篇
从 python中的流音频文件中删除白噪声和静态
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(29条)