正在为Azure Databricks设置Azure SQL外部元存储--列名"IS_REWRITE_ENAB



我正在尝试为Azure Databricks设置一个外部配置单元元存储。Metastore在Azure SQL中,Hive版本为1.2.1(包含在Azure HdIntight 3.6中(。

我已经按照Azure文档中"外部Apache Hive元存储"页面上的设置说明进行了操作。

我可以在元存储中看到所有的数据库和表,但如果我看一个特定的表,我会得到以下信息。

Caused by: javax.jdo.JDOException: Exception thrown when executing query : SELECT DISTINCT 'org.apache.hadoop.hive.metastore.model.MTable' AS NUCLEUS_TYPE,A0.CREATE_TIME,A0.LAST_ACCESS_TIME,A0.OWNER,A0.RETENTION,A0.IS_REWRITE_ENABLED,A0.TBL_NAME,A0.TBL_TYPE,A0.TBL_ID FROM TBLS A0 LEFT OUTER JOIN DBS B0 ON A0.DB_ID = B0.DB_ID WHERE A0.TBL_NAME = ? AND B0."NAME" = ?
NestedThrowables:
com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'IS_REWRITE_ENABLED'.

我本以为会看到与底层存储相关的错误,但这似乎是元存储的问题。

有人知道怎么了吗?

错误消息似乎表明列IS_REWRITE_ENABLED不存在于别名为A0的表TBLS上。

查看derby数据库的配置单元模式的脚本,它可以帮助您了解有问题的列是否存在。

元存储脚本定义

如果您具有对Azure SQL数据库的管理员访问权限,则可以更改表并添加列:

ALTER TABLE TBLS
ADD IS_REWRITE_ENABLED char(1) NOT NULL DEFAULT 'N';

我不相信这是真正的修复,但它确实可以解决错误。

最新更新