2

我在生产模式(使用 Gunicorn)下设置 Superset(0.36.0),并且我想在我的 Kerberized 集群上运行 Impala 查询时设置模拟,Superset 的每个用户都像他一样拥有表/数据库的特权在 Hive/Hue/HDFS 上。我试图在我的数据库配置中将“模拟登录用户”设置为 true,但它并没有改变运行查询的用户,它总是使用 celery-worker 用户。

我的数据库配置是:

顶级数据库配置 数据库配置结束

附加功能:

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

我在 Cloudera Manager (5.13) 中的查询简历:

在 CM 中查询

如何在我的 Superset 中正确启用模拟?也许与impala.doas.userHiveServer2 连接中的配置有关,但我不知道如何正确配置。

4

1 回答 1

0

我遇到了同样的问题,我要让它为蜂巢工作。问题似乎出在路径${YOUR_INSTALLATION_PATH}/superset/db_engine_specs下的文件hive.py中

如果您只是注释掉第 435 行,它应该可以工作。不幸的是,我对 python 的理解不够好,无法告诉你确切的原因。我通过运行源代码并放置日志语句蛮力发现了这一点


        if (
            backend_name == "hive"
            # comment this line
            # and "auth" in url.query.keys()
            and impersonate_user is True
            and username is not None
        ):
            configuration["hive.server2.proxy.user"] = username
        return configuration

或者,如果您不想修改源代码,可以在超集中创建数据源时修改 URL,如下所示:

hive://<url>/default?auth=NONE    ( when there is no security )
hive://<url>/default?auth=KERBEROS
hive://<url>/default?auth=LDAP
于 2020-06-12T14:59:47.277 回答