從metastore下降與損壞的元數據表

學習如何減少從metastore表包含的元數據。

寫的亞當Pavlacka

去年發表在:2022年5月16日

問題

有時你不能刪除一個表的數據磚UI。使用%的sqlspark.sql刪除表不工作。

導致

中存儲的元數據(表模式)metastore損壞。當您運行刪除表命令,火花檢查表是否存在或不刪除表之前。從表的元數據損壞火花不能刪除表和失敗後例外。

% scala com.databricks.backend.common.rpc.DatabricksExceptions $ SQLExecutionException: org.apache.spark.sql。AnalysisException:元數據損壞

解決方案

使用蜂巢客戶放棄表自蜂巢客戶機不檢查表存在像火花一樣。刪除一個表:

  1. 創建一個函數在蜂巢包。
    % 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,表名,假)}}}
  2. 降低損壞表。
    % scala org.apache.spark.sql.hive進口。跑龍套跑龍套。dropTable (sc、“默認”、“my_table”,真的,真的)
這篇文章有用嗎?