在azure支持的亞metastore上刪除表時出現AnalysisException

學習如何在刪除一個基於azure的metastore的表時克服AnalysisException。

寫的亞當Pavlacka

最後發布日期:2022年5月16日

問題

當您試圖刪除部署在Azure SQL數據庫上的外部Hive 2.0或2.1 metastore中的表時,Databricks拋出以下異常:

com.databricks.backend.common.rpc.DatabricksExceptions$SQLExecutionException: org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(消息:執行查詢時拋出異常:SELECT 'org.apache.hadoop.hive.metastore.model. SELECT 'MStorageDescriptor' AS NUCLEUS_TYPE,A0. input_format,A0. is_compressed,A0. is_storedassubdirectories,A0. location,A0. num_buckets,A0. output_format,A0. input_format。Sd_id從SDS a0到a0。Cd_id = ?偏移0行僅獲取下一行);at org.apache.spark.sql.hive.HiveExternalCatalog.withClient(HiveExternalCatalog.scala:107) at org.apache.spark.sql.hive.HiveExternalCatalog.doDropTable(HiveExternalCatalog.scala:483) at org.apache.spark.sql. catalystal .catalog. externalcatalog . droptable (ExternalCatalog.scala:122) at org.apache.spark.sql. catalystal .catalog. sessioncatalog . droptable (SessionCatalog.scala:638) at org.apache.spark.sql. execute . command.droptable .run(ddl.scala:212)

導致

這是一個已知的Hive bug (蜂巢- 14698),由另一個已知的錯誤引起datanucleus-rdbms包中的模塊。它是固定的datanucleus-rdbms4.1.16.然而,Hive 2.0和2.1亞穩態使用4.1.7版本,這些版本受到影響。

解決方案

做以下其中一件事:

升級Hive metastore到2.3.0版本。這也解決了任何其他Hive bug在2.3.0版本中修複的問題。

將以下筆記本導入您的工作區,並按照說明替換datanucleus-rdbmsJAR。編寫本筆記本是為了將metastore升級到2.1.1版本。您可能希望在服務器端有一個類似的版本。

外部metastore升級筆記本

檢查外部metastore升級筆記本