一、python2版本
1. docker基础镜像
tobyhferguson/impyla_tester
2. 安装相关包及配置
2.1 安装包
参考python3.6.5基于kerberos认证的hive和hdfs连接调用
yum install libsasl2-dev
yum install gcc-c++ python-devel.x86_64 cyrus-sasl-devel.x86_64
yum install python-devel
yum install krb5-devel
yum install python-krbV
pip install krbcontext==0.9
pip install thrift==0.9.3
pip install thrift-sasl==0.2.1
pip install impyla==0.14.1
pip install hdfs[kerberos]
pip install pykerberos==1.2.1
可能中间有些失败或pip升级的问题,再次安装就行了(比如使用yum安装包的时候明明安装了krb5-devel,使用pip安装包的时候还是遇到gssapi.h找不到的问题,重新安装krb5-devel)
2.2 配置krb5.conf
安装了kerberos相关的包,/etc下面有个krb5.conf文件,换成自己集群的krb5.conf文件
2.3 配置/etc/hosts
将主机和ip的映射信息加入/etc/hosts
最后使用docker commit生成镜像
3. 连接hive的示例代码:
from krbcontext import krbcontext
from impala.dbapi import connect
with krbcontext(using_keytab=True,
principal='b_l.a.w/dev@NODE.SXX.TXX',
keytab_file='/root/l.a.w.keytab'):
conn = connect(host='node5.sxx.txx',
port=21050,
database='xx_rz_demo',
auth_mechanism= 'GSSAPI',
kerberos_service_name='impala')
query="show tables"
cur = conn.cursor()
cur.execute(query)
res = cur.fetchall()
print(res)
二、python3版本
1. docker基础镜像
docker pull ksatjp/py36centos:7
2. 安装相关包及配置
和上面的一样,但是pip换成pip3.6
3. 示例代码
同上,可能报错:
thriftpy.transport.TTransportException: TTransportException(type=1, message="Could not start SASL: b'Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found'")
参考:Python连接hive报错Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available,安装sasl相关的包可解决:
yum install cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-md5
三、相关链接
- python3.6.5基于kerberos认证的hive和hdfs连接调用
- python3.6如何连接hive?
- gssapi/gssapi.h: No such file or directory
- python连接hive配置
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)