问题
当你试图在一个外部表蜂巢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。您可能希望有一个类似的版本在你的服务器端。