为Azure Databricks设置Azure SQL外部元存储—无效的列名称“ IS_REWRITE_ENABLED”

问题描述

我正在尝试为Azure Databricks建立一个外部Hive元存储。 Metastore使用Azure SQL,Hive版本是1.2.1(包括在Azure HdInsight 3.6中)。

我已遵循Azure文档中“ External Apache Hive metastore”页面上的设置说明。

我可以看到元存储中的所有数据库和表,但是如果查看特定的表,则会得到以下内容。

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'.

我原本希望看到与基础存储有关的错误,但这似乎是元存储的问题。

有人知道怎么了吗?

解决方法

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

查看derby db的配置单元模式的脚本,它可以帮助指导您查看相关列是否存在。

metastore script definition

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

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

我不认为这是实际的解决方法,但确实可以解决该错误。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...