首页 > 解决方案 > 使用 Superset 在 Impala 上运行查询时出错

问题描述

我正在尝试将 impala 连接到超集,当我测试连接时打印:“看起来不错!”,当我尝试使用左侧的 SQL 编辑器查看 impala 上的数据库时,它显示所有数据库都没有问题。

数据库/表预览

但是当我编写查询并单击“运行查询”时,它会给出错误:“无法启动 SASL:sasl_client_start (-1) SASL(-1) 中的 b'Error:一般故障:GSSAPI 错误:未指定的 GSS 故障。次要代码可能会提供更多信息(票已过期)'"

运行查询时出错

我在 Kerberized Hadoop 集群中使用 SSL 和生产模式(使用 Gunicorn)和使用 SSL 的 Impala 运行超集,我的 impala 数据库配置是:

Impala 配置

在我放的额外内容中:

{
    "metadata_params": {},
    "engine_params":  {
        "connect_args": {
            "port": 21050,
                    "use_ssl": "True", 
                    "ca_cert": "path/to/my/ca_cert.pem",
                    "auth_mechanism": "GSSAPI"
         }
     },
    "metadata_cache_timeout": {},
    "schemas_allowed_for_csv_upload": []
}

我该如何解决这个错误?在我的超集日志中,它只显示:

Triggering query_id: 65
INFO:superset.views.core:Triggering query_id: 65
Query 65: Running query on a Celery worker
INFO:superset.views.core:Query 65: Running query on a Celery worker

版本:Superset 0.36.0、Impyla 0.16.2

标签: sslkerberosapache-supersetsupersetimpyla

解决方案


我能够通过以下步骤修复此错误:

1 - 为 celery-worker 创建服务用户,为他创建一个 kerberos 票证并创建一个 crontab 来更新票证。

2 - 从这个服务用户运行 celery worker,而不是从 root 运行。

3 - 杀死了一个在我集群的另一台机器上运行的 celery-worker

4 - 重新启动 Impala 和 Superset

我认为发生此错误是因为在某些查询中,不是在我的超集机器中使用 celery worker,而是在没有有效 kerberos 票证的情况下使用另一台机器中的 celery worker。我可以修复此错误,因为当我阅读 celery-worker log 时,它显示与其他机器中的 celery worker 的连接在查询运行时失败。


推荐阅读