【问题标题】:drop table command in hive在 hive 中删除表命令
【发布时间】:2018-06-27 03:22:10
【问题描述】:

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

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 

【问题讨论】:

    标签: hadoop hive bigdata


    【解决方案1】:

    我不知道 Hive,但如果它是 任何东西,比如 Oracle(我大概知道),那么 外部表 指向一个 文件存储在您的磁盘上。

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

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

    【讨论】:

    • 感谢您的回复。
    【解决方案2】:

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

    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 命令将其完全擦除。

    【讨论】:

    • 感谢您的解决方案。
    猜你喜欢
    • 2018-11-11
    • 1970-01-01
    • 2021-09-23
    • 2011-03-29
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    相关资源
    最近更新 更多