【问题标题】:Can't connect superset to dremio无法将超集连接到 dremio
【发布时间】:2022-11-03 18:34:21
【问题描述】:

我正在使用 docker-compose 按照此处的说明(https://superset.apache.org/docs/installation/installing-superset-using-docker-compose/)使用 docker-compose-non-dev.yml 运行 apache-superset。

我还在 superset/docker/requirements-local.txt 中添加了 sqlalchemy-dremio,以便添加此处提到的 dremio 支持 (https://superset.apache.org/docs/databases/docker-add-drivers)

对于 dremio,我在 dremio/dremio-oss 映像上运行了一个单独的容器,使用

docker run -p 9047:9047 -p 31010:31010 -p 45678:45678 -p 32010:32010 dremio/dremio-oss

然后使用 localhost:9047 的 Web 界面在 dremio 中创建一个帐户

但是当我尝试将 dremio 添加为超集中的数据库时,出现以下错误 在按下测试连接时,我收到以下错误

我正在使用的连接字符串是

dremio+flight://dremio:dremio123@host.docker.internal:32010/dremio;SSL=0

起初我以为可能是网络错误或dremio出错,但我可以在这里使用python脚本连接到dremio https://github.com/dremio-hub/arrow-flight-client-examples/blob/main/python/example.py

python example.py -host host.docker.internal -query 'SELECT 1'

该脚本使用 localhost 从容器外部从 host_os 以及使用 host.docker.internal 作为主机从 superset_app 容器内部成功运行。因此,我认为这不是网络配置问题,这也证实了 sqlalchemy-dremio 软件包已正确安装在超集容器中。

这是来自 superset_app 容器的此错误的 docker 日志

2022-09-30 16:34:09,635:WARNING:superset.views.base:SupersetErrorsException
Traceback (most recent call last):
  File "/app/superset/databases/commands/test_connection.py", line 123, in run
    raise DBAPIError(None, None, None)
sqlalchemy.exc.DBAPIError: (builtins.NoneType) None
(Background on this error at: https://sqlalche.me/e/14/dbapi)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1516, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1502, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "/usr/local/lib/python3.8/site-packages/flask_appbuilder/security/decorators.py", line 89, in wraps
    return f(self, *args, **kwargs)
  File "/app/superset/views/base_api.py", line 114, in wraps
    raise ex
  File "/app/superset/views/base_api.py", line 111, in wraps
    duration, response = time_function(f, self, *args, **kwargs)
  File "/app/superset/utils/core.py", line 1572, in time_function
    response = func(*args, **kwargs)
  File "/app/superset/utils/log.py", line 244, in wrapper
    value = f(*args, **kwargs)
  File "/app/superset/views/base_api.py", line 84, in wraps
    return f(self, *args, **kwargs)
  File "/app/superset/databases/api.py", line 708, in test_connection
    TestConnectionDatabaseCommand(item).run()
  File "/app/superset/databases/commands/test_connection.py", line 148, in run
    raise DatabaseTestConnectionFailedError(errors) from ex
superset.databases.commands.exceptions.DatabaseTestConnectionFailedError: [SupersetError(message='(builtins.NoneType) None\n(Background on this error at: https://sqlalche.me/e/14/dbapi)', error_type=<SupersetErrorType.GENERIC_DB_ENGINE_ERROR: 'GENERIC_DB_ENGINE_ERROR'>, level=<ErrorLevel.ERROR: 'error'>, extra={'engine_name': 'Dremio', 'issue_codes': [{'code': 1002, 'message': 'Issue 1002 - The database returned an unexpected error.'}]})]
***************
['UID=dremio', 'PWD=dremio123', 'HOST=host.docker.internal', 'PORT=32010', 'Schema=dremio', 'SSL=0']
***************

【问题讨论】:

    标签: apache-superset dremio


    【解决方案1】:

    确保您安装的是最新版本的 sqlalchemy_dremio。您可能需要从源代码安装,因为 setup.py 没有相应更新(在撰写本文时)。您还需要将一些SQLAlchemy 基本函数添加到sqlalchemy_dremio。看看以下问题:https://github.com/narendrans/sqlalchemy_dremio/issues/20

    【讨论】:

      猜你喜欢
      • 2021-04-17
      • 2018-04-22
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      • 2021-11-23
      • 2021-06-14
      • 2018-03-31
      相关资源
      最近更新 更多