使用带有kerberos身份验证的impyla客户端连接到impala

j0pj023g  于 2021-05-29  发布在  Hadoop
关注(0)|答案(7)|浏览(623)

我在w8机器上,在那里我使用python(anaconda发行版)连接到hadoop集群中使用impyla包的impala。我们的hadoop集群是通过kerberos来保护的。我已经遵循了api参考如何配置连接。

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

我们将kerberos gssapi与sasl一起使用

auth_mechanism='GSSAPI'

我已经成功地为win8安装了python sasl库,但是仍然遇到了这个错误。

Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found (code THRIFTTRANSPORT): TTransportException('Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found',)

我想知道我是否还缺少一些依赖性。

yiytaume

yiytaume1#

要使用python连接impala,可以执行以下步骤,
为impala安装coludera odbc驱动程序。
使用64位odbc驱动程序创建dsn,输入您的服务器详细信息,下面是相同的示例屏幕截图

使用下面的代码段进行连接
导入pyodbc
使用pyodbc.connect(“dsn=impala\u con”,autocommit=true)作为conn:。。。df=pd.read\u sql(“,conn)

4bbkushb

4bbkushb2#

尝试此操作以获取kerberized集群的表。就我而言,cdh-5.14.2-1。
运行此代码之前,请确保您拥有有效的票证。
用python 2.7 有下面的包裹。

thrift-0.9.3
thriftpy-0.3.8
thrift_sasl-0.3.0
impyla==0.14.2.2

工作代码

from impala.dbapi import connect
from impala.util import as_pandas

# 21000 is impala daemon port.

conn = connect(host='yourHost', port=21050, auth_mechanism='GSSAPI') 

cursor = conn.cursor()
cursor.execute("SHOW TABLES")

# After running .execute(), Impala will store the result sets on the server

# until it is fetched. Use the method .fetchall() to pull the entire result

# set over the network (you should only do it if you know dataset is small)

tables = cursor.fetchall()

print("Displaying list of tables")

# the result is a list of tuples

for t in tables:
    # we know that each row in SHOW TABLES result
    # should only contains one table name
    print(t[0])
    # exit() enable for only one table

print("eol >>>")
kognpnkq

kognpnkq3#

python无法连接hiveserver2
确保安装了cyrus sasl devel和cyrus sasl gssapi

rqmkfv5c

rqmkfv5c4#

我遇到了同样的问题,但我通过安装正确版本的必需库来修复它。
使用pip安装以下python库:

six==1.12.0
bit_array==0.1.0
thrift==0.9.3
thrift_sasl==0.2.1
sasl==0.2.1
impyla==0.13.8

下面的代码与 python 版本 2.7 以及 3.4 .

import ssl
from impala.dbapi import connect
import os
os.system("kinit")
conn = connect(host='hostname.io', port=21050, use_ssl=True, database='default', user='urusername', kerberos_service_name='impala', auth_mechanism = 'GSSAPI')
cur = conn.cursor()
cur.execute('SHOW DATABASES;')
result=cur.fetchall()
for data in result:
    print (data)
siv3szwd

siv3szwd5#

对我来说,安装这个软件包修复了它: libsasl2-modules-gssapi-mit

qvsjd97n

qvsjd97n6#

对我来说,以下连接参数起作用。我不必在python中安装任何附加包。

connect(host="your_host", port=21050, auth_mechanism='GSSAPI', timeout=100000, use_ssl=False, ca_cert=None, ldap_user=None, ldap_password=None, kerberos_service_name='impala')
mqkwyuun

mqkwyuun7#

安装 kerberos python包,它将修复您的问题。

相关问题