Superset无法连接Apache Drill:‘Final Drill query state is FAILED HTTP ERROR: None’报错
SHOW DATABASES失败的问题 针对你遇到的Superset添加Drill数据源时执行SHOW DATABASES报错(sqlalchemy.exc.DatabaseError: ... Final Drill query state is FAILED HTTP ERROR: None),且连接字符串在Drill中正常的情况,可按以下步骤排查修复:
检查sqlalchemy-drill驱动版本兼容性
最新版Superset可能对驱动版本有要求,确保安装适配的sqlalchemy-drill版本。建议卸载现有版本后安装最新稳定版:pip uninstall sqlalchemy-drill -y pip install sqlalchemy-drill>=1.1.0安装完成后重启Superset服务。
修正连接字符串格式
尝试调整连接字符串,明确指定Drill的查询端点路径,比如:drill+sadrill://localhost:8047/dfs?use_ssl=False&endpoint=/query.json或者针对你的API数据源:
drill+sadrill://localhost:8047/http/nugenesis?use_ssl=False&endpoint=/query.json部分Drill部署的REST查询端点默认是
/query.json,未指定可能导致请求失败。查看Drill服务器日志定位具体错误
报错中HTTP ERROR: None说明Superset未收到明确错误信息,直接去Drill的日志目录(默认在<drill-install-dir>/logs)查看drillbit.log,搜索FAILED关键字,找到对应查询的详细失败原因,比如权限不足、数据源配置问题等。手动用SQLAlchemy测试连接
写一个简单的Python脚本,绕过Superset直接测试驱动与Drill的交互,确认是否是Superset配置问题:from sqlalchemy import create_engine # 替换成你的连接字符串 engine = create_engine('drill+sadrill://localhost:8047/dfs?use_ssl=False') with engine.connect() as conn: result = conn.execute("SHOW DATABASES") for row in result: print(row)如果脚本执行失败,说明问题出在驱动或Drill配置;如果成功,则需要检查Superset的数据源配置(比如额外权限限制、代理设置等)。
检查Drill的权限与配置
确认Drill用户是否有执行SHOW DATABASES的权限,同时检查Drillbit配置文件drill-override.conf,确保HTTP服务正常启用,且默认端口8047未被防火墙或其他进程占用。
内容的提问来源于stack exchange,提问作者Catalin Ristache

