AnalysisException當刪除表Azure-backed metastore

學習如何克服AnalysisException當刪除一個表在一個Azure-backed metastore。

寫的亞當Pavlacka

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

問題

當你試圖在一個外部表蜂巢2.0或2.1版本metastore部署到Azure SQL數據庫,數據磚拋出以下異常:

com.databricks.backend.common.rpc.DatabricksExceptions SQLExecutionException美元:org.apache.spark.sql。AnalysisException: org.apache.hadoop.hive.ql.metadata。HiveException: MetaException(拋出的異常信息:當執行查詢:選擇“org.apache.hadoop.hive.metastore.model。MStorageDescriptor”NUCLEUS_TYPE、A0.INPUT_FORMAT A0.IS_COMPRESSED, A0.IS_STOREDASSUBDIRECTORIES, A0.LOCATION, A0.NUM_BUCKETS, A0.OUTPUT_FORMAT, A0。從SDS SD_ID A0 A0的地方。CD_ID = ?抵消0行僅獲取下一行);在org.apache.spark.sql.hive.HiveExternalCatalog.doDropTable org.apache.spark.sql.hive.HiveExternalCatalog.withClient (HiveExternalCatalog.scala: 107) (HiveExternalCatalog.scala: 483) org.apache.spark.sql.catalyst.catalog.ExternalCatalog.dropTable (ExternalCatalog.scala: 122) org.apache.spark.sql.catalyst.catalog.SessionCatalog.dropTable (SessionCatalog.scala: 638) org.apache.spark.sql.execution.command.DropTableCommand.run (ddl.scala: 212)

導致

這是一個已知的蜂巢的缺陷(蜂巢- 14698),另一個已知的缺陷造成的datanucleus-rdbms模塊在包。它是固定的datanucleus-rdbms4.1.16。然而,蜂巢2.0和2.1 metastores使用4.1.7版本,這些版本都受到影響。

解決方案

做下列之一:

tripwire蜂巢metastore升級到版本。這種方法還可以解決問題,由於其他固定在版本tripwire蜂巢bug。

進口以下筆記本工作區和遵循指令來取代datanucleus-rdbmsJAR。這筆記本寫升級metastore版本2.1.1。您可能希望有一個類似的版本在你的服務器端。

外部metastore升級筆記本

檢查外部metastore升級筆記本