Pinotdb 错误 (pinotdb.exceptions.DatabaseError) {'errorCode': 150... 尝试从 apache-superset 初始化 apache-pinot db 时

问题描述 投票:0回答:1

在设置 Apache-Superset 时(我通过 pypi 在 Ubuntu 22.04 上安装了 Superset,对于使用 pinotdb 的连接器,将 Superset 连接到 apache-pinot 数据库。)执行以下命令后遇到以下错误:

superset db upgrade

2024-07-05 08:39:44,620:ERROR:flask_appbuilder.security.sqla.manager:DB Creation and initialization failed: (pinotdb.exceptions.DatabaseError) {'errorCode': 150,
 'message': 'SQLParsingError:\n'
            'org.apache.pinot.sql.parsers.SqlCompilationException: Caught '
            'exception while parsing query: CREATE TABLE ab_permission (\n'
            '\tid NUMERIC NOT NULL, \n'
            '\t"name" VARCHAR NOT NULL, \n'
            '\tPRIMARY KEY (id), \n'
            '\tUNIQUE ("name")\n'
            '...\n'
            'Caused by: org.apache.pinot.sql.parsers.parser.ParseException: '
            'Encountered "" at line 1, column 1.\n'
            '\tat '
            'org.apache.pinot.sql.parsers.parser.SqlParserImpl.generateParseException(SqlParserImpl.java:38633)\n'
            '\tat '
            'org.apache.pinot.sql.parsers.parser.SqlParserImpl.jj_consume_token(SqlParserImpl.java:38430)\n'
            '\tat '
            'org.apache.pinot.sql.parsers.parser.SqlParserImpl.SqlStmt(SqlParserImpl.java:931)\n'
            '\tat '
            'org.apache.pinot.sql.parsers.parser.SqlParserImpl.SqlStmtsEof(SqlParserImpl.java:1017)'}
[SQL:
CREATE TABLE ab_permission (
        id NUMERIC NOT NULL,
        "name" VARCHAR NOT NULL,
        PRIMARY KEY (id),
        UNIQUE ("name")
)

]
(Background on this error at: https://sqlalche.me/e/14/4xp6)

尝试以下命令时也会出现错误:

superset init
superset fab create-admin

flask flask-sqlalchemy apache-superset sql-parser apache-pinot
1个回答
0
投票

Superset 允许配置两种类型的数据库连接:

  • 元数据数据库(Superset的内部配置,例如用户和权限),在config.py中配置
  • 用于查询数据集和仪表板数据的数据库,这些数据库在数据库设置 UI 中配置。

支持的元数据后端有 SQLite、MySQL 和 PostgreSQL。看起来好像您已将 pinotdb 配置为元数据数据库。

我建议在 config.py 中将元数据数据库 URL 保留为其默认值:

# to enforce single-threaded access, which may be problematic in some edge cases
SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db?check_same_thread=false'

一旦超集启动并运行,就通过 UI 配置 pinotdb 连接。

© www.soinside.com 2019 - 2024. All rights reserved.