1

我正在尝试删除创建 Spark-Sql 的表(内部)表,某些表是如何被删除的,但表的位置仍然存在。有人可以让我知道该怎么做吗?

我尝试了直线和 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)

谢谢

4

1 回答 1

5

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>;

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

于 2018-07-21T08:15:19.717 回答