【问题标题】:drop table command is not deleting path of hive table which was created by spark-sqldrop table 命令不会删除由 spark-sql 创建的配置单元表的路径
【发布时间】:2018-07-20 22:38:18
【问题描述】:

我正在尝试删除创建 Spark-Sql 的表(内部)表,某些表被删除但表的位置仍然存在。谁能告诉我怎么做?

我尝试过 Beeline 和 Spark-Sql

    create table something(hello string)
    PARTITIONED BY(date_d string)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY "^"
    LOCATION "hdfs://path"
    )
    Drop table something;
No rows affected (0.945 seconds)

谢谢

【问题讨论】:

    标签: apache-spark hive apache-spark-sql beeline hive-query


    【解决方案1】:

    Spark 内部使用 Hive 元存储来创建表。如果表是从 spark 中创建为外部 hive 表,即 HDFS 中存在的数据,并且 Hive 提供了一个表视图,则 drop table 命令只会删除 Metastore 信息,不会从 HDFS 中删除数据。

    所以你可以采取一些替代策略

    1. 使用 hadoop fs -rm -rf 命令手动删除 HDFS 中的数据
    2. 在要删除的表上更改表,将外部表更改为内部表,然后删除该表。

      ALTER TABLE <table-name> SET TBLPROPERTIES('external'='false');

      drop table <table-name>;

    第一条语句将外部表转换为内部表,第二条语句将删除包含数据的表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 2021-02-04
      • 1970-01-01
      • 2016-08-23
      相关资源
      最近更新 更多