問題
有時你不能刪除一個表的數據磚UI。使用%的sql或spark.sql刪除表不工作。
導致
中存儲的元數據(表模式)metastore損壞。當您運行刪除表命令,火花檢查表是否存在或不刪除表之前。從表的元數據損壞火花不能刪除表和失敗後例外。
% scala com.databricks.backend.common.rpc.DatabricksExceptions $ SQLExecutionException: org.apache.spark.sql。AnalysisException:元數據損壞
解決方案
使用蜂巢客戶放棄表自蜂巢客戶機不檢查表存在像火花一樣。刪除一個表:
- 創建一個函數在蜂巢包。
% org.apache.spark.sql scala包。蜂巢{org.apache.spark.sql.hive進口。HiveUtils org.apache.spark進口。SparkContext對象跑龍套{def dropTable (sc: SparkContext dbName:字符串,表名:字符串,ignoreIfNotExists: Boolean、清洗:布爾型):單位= {HiveUtils .newClientForMetadata (sc。getConf sc.hadoopConfiguration) .dropTable (ignoreIfNotExists dbName,表名,假)}}}
- 降低損壞表。
% scala org.apache.spark.sql.hive進口。跑龍套跑龍套。dropTable (sc、“默認”、“my_table”,真的,真的)