Ошибка Apache Superset 1.3 При подключении к Presto через SASL

#python-3.x #presto #apache-superset #trino #starburst

Вопрос:

Попытка подключить Apache Superset 1.3 с Trino/Presto с помощью Kerberos. Удалось успешно установить плагины с помощью pip install pyhive[‘presto’]==0.6.2, также пробовал другие версии.

При попытке выполнить тест подключения я получаю следующую ошибку

[СуперсетЕррор(сообщение='(встроенные.NoneType) Нетn(Предыстория этой ошибки по адресу: http://sqlalche.me/e/13/dbapi)’, error_type=GENERIC_DB_ENGINE_ERROR: ‘GENERIC_DB_ENGINE_ERROR’>, уровень=>ОШИБКА: «ошибка» >, extra={«имя движка»: «Presto», «коды выпуска»: [{«код»: 1002, «сообщение»: «Проблема 1002 — База данных вернула неожиданную ошибку.’}]})] 2021-09-03 10:22:54,708:ПРЕДУПРЕЖДЕНИЕ:superset.views.base:[Ошибка (сообщение='(встроенные.NoneType) Нетn(Предыстория этой ошибки по адресу: http://sqlalche.me/e/13/dbapi)’, тип ошибки=GENERIC_DB_ENGINE_ERROR: ‘GENERIC _DB_ENGINE_ERROR’>, уровень=>ОШИБКА: ‘ошибка’>, дополнительно={‘имя_программы’: ‘Presto’, ‘коды проблем’: [{‘код’: 1002, ‘сообщение’: ‘Проблема 1002 — База данных вернула неожиданную ошибку

Я попробовал эту конфигурацию в своих параметрах движка

  "kerberos_principal" : "myuser@MYDOMAIN.COM", "requests_kwargs": {"verify":""}}} 

 

В документации надмножества указано, что это проблема с внутренней базой данных, т. е. Presto https://superset.apache.org/docs/miscellaneous/issue-codes

Нет абсолютно никаких проблем с тем, чтобы это работало с LDAP, т. е. имя пользователя:пароль Проблема заключается только в использовании kerberos.

Чтобы отладить это дальше, с уровня python и SQLAlchemy, я попробовал эти шаги Безупречно Работают с LDAP

 >>> from sqlalchemy import *
>>> from sqlalchemy.engine import create_engine
>>> from sqlalchemy.schema import *
>>> engine = create_engine('presto://myuser:mypassword@presto-coordinator:8080/hive/default', connect_args={'protocol': 'https','port' : 8080,'auth':'Kerberos','Kerberos_Config_Path':'/etc/krb5.conf','Kerberos_Keyta
b_Path':'/opt/superset/mykeytab.keytab','Kerberos_Principal':'myuser@MYDOMAIN.COM','Kerberos_Remote_Service_Name':'presto'})
 

Тем не менее, один за другим мы продолжаем получать ошибки, в которых конкретные свойства kerberos «неизвестны», начинаются с «auth», а затем жалуются на все ключи kerberos, т. е. «kerberos_principal», «kerberos_config_path» и т. Д.

 Traceback (most recent call last):
  File "/opt/app-root/lib64/python3.8/site-packages/sqlalchemy/engine/base.py", line 1204, in _execute_context
    context = constructor(dialect, self, conn, *args)
  File "/opt/app-root/lib64/python3.8/site-packages/sqlalchemy/engine/default.py", line 1044, in _init_statement
    self.cursor = self.create_cursor()
  File "/opt/app-root/lib64/python3.8/site-packages/sqlalchemy/engine/default.py", line 1177, in create_cursor
    return self._dbapi_connection.cursor()
  File "/opt/app-root/lib64/python3.8/site-packages/sqlalchemy/pool/base.py", line 1000, in cursor
    return self.connection.cursor(*args, **kwargs)
  File "/opt/app-root/lib64/python3.8/site-packages/pyhive/presto.py", line 67, in cursor
    return Cursor(*self._args, **self._kwargs)
TypeError: __init__() got an unexpected keyword argument 'auth'
 

Может ли кто-нибудь поделиться, если у вас был подобный опыт ??