【问题标题】: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 中删除数据。
所以你可以采取一些替代策略
- 使用 hadoop fs -rm -rf 命令手动删除 HDFS 中的数据
-
在要删除的表上更改表,将外部表更改为内部表,然后删除该表。
ALTER TABLE <table-name> SET TBLPROPERTIES('external'='false');
drop table <table-name>;
第一条语句将外部表转换为内部表,第二条语句将删除包含数据的表。