【问题标题】:Setting up Azure SQL External Metastore for Azure Databricks — Invalid column name ‘IS_REWRITE_ENABLED’为 Azure Databricks 设置 Azure SQL 外部元存储 - 列名“IS_REWRITE_ENABLED”无效
【发布时间】:2020-10-29 16:39:54
【问题描述】:

我正在尝试为 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'.

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

有人知道怎么回事吗?

【问题讨论】:

  • 请提供Describe extended A0 and B0的输出?

标签: azure azure-sql-database databricks azure-hdinsight hive-metastore


【解决方案1】:

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

查看 derby db 的 hive-schema 脚本,它可以帮助您了解此处确实存在有问题的列。

metastore script definition

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 2020-06-16
    • 2019-06-21
    • 1970-01-01
    • 2020-07-25
    • 2019-06-09
    相关资源
    最近更新 更多