连接到 Impala Kerberos Hadoop 的问题 - Windows/Python 3.6

Posted

技术标签:

【中文标题】连接到 Impala Kerberos Hadoop 的问题 - Windows/Python 3.6【英文标题】:Issues Connecting to Impala Kerberos Hadoop - Windows/Python 3.6 【发布时间】:2019-11-20 19:20:57 【问题描述】:

我进行了广泛的搜索,但没有什么对我有用。代码是这样的:

from impala.dbapi import connect
conn = connect(host = 'myhost', port = 21050, auth_mechanism = 'GSSAPI', kerberos_service_name = 'impala')

cursor = conn.cursor()

TTransportException: TTransportException(type=1, message="Could not start SASL: b'Error in sasl_client_start (-4) SASL(-4): no mechanism available: Unable to find a callback: 2'")

尝试了以下许多不同版本,但目前这里有任何可能的相关库:

Python 3.6.9

impyla 0.14.0

纯sasl 0.6.2

pysasl 0.5.0

sasl 0.2.1

节俭 0.13.0

thrift-sasl 0.3.0

thriftpy 0.3.9

thriftpy2 0.4.8

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我在 python 上尝试了多个库,但在尝试从 Windows 机器进行身份验证时失败。没有简单的方法。 Kerberos 库主要在 Linux 上运行。 Windows 的解决方法不起作用。那么有什么办法可以解决这个问题。 嗯……在罗马做个罗马人。试试 Python 中的 Windows 原生库。

import sys
import clr
from System.Net.Http import *
myClienthandler = HttpClientHandler()
myClienthandler.UseDefaultCredentials = True
myClient = HttpClient(myClienthandler)
x = myClient.GetStringAsync("putyourURLwithinthequoteshere")
myresult = x.Result
print(myresult)

请注意,此 python 脚本必须由有权访问您尝试访问的 URL 的用户运行。通过将UseDefaultCredentials 属性设置为True,您将传递已登录用户的Kerberos 票证。

【讨论】:

以上是关于连接到 Impala Kerberos Hadoop 的问题 - Windows/Python 3.6的主要内容,如果未能解决你的问题,请参考以下文章

连接到 Impala Kerberos Hadoop 的问题 - Windows/Python 3.6

如何使用 impyla 连接到 impala 或使用 pyhive 连接到 hive?

使用 keytab 文件连接到 Impala 的 jdbc URL

无法使用 Impala JDBC 驱动程序通过 Java 应用程序连接到 Impala

在 mac os x 上安装 cloudera impala shell 并连接到 impala 集群

使用 Kerberos 连接到 SMB 共享时出现 KrbException“消息流已修改 (41)”