Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 配置单元中的drop table命令_Hadoop_Hive_Bigdata - Fatal编程技术网

Hadoop 配置单元中的drop table命令

Hadoop 配置单元中的drop table命令,hadoop,hive,bigdata,Hadoop,Hive,Bigdata,我正试图放下一张桌子,在蜂巢里重新创建它。删除表后,如果对表运行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;

我正试图放下一张桌子,在蜂巢里重新创建它。删除表后,如果对表运行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 

我不知道Hive,但如果它与Oracle类似(我知道),那么外部表将指向存储在磁盘上的文件

因此,一旦你扔了它,你就不能使用它(当然)。但随后您创建了另一个外部表(请参见示例中的第5行),当然您可以再次从中进行选择


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

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

hive> describe formatted database_name.table_name;
然后复制描述中显示的整个位置,例如:

/用户/hive/warehouse/database\u name.db/table\u name

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

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


然后您可以使用DROP TABLE命令将其完全擦除。

谢谢您的回复。谢谢您的解决方案。
hive> dfs -rm -r /user/hive/warehouse/database_name.db/table_name;