Python连接到Hive使用pyhs2和Kerberos身份验证

问题描述:

我连接Hive使用pyhs2。但Hive服务器需要Kerberos身份验证。任何人都知道如何将JDBC字符串转换为pyhs2参数?像: jdbc:hive2://biclient2.server.163.org:10000/default;principal=hive/[email protected]?mapred.job.queue.name=defaultPython连接到Hive使用pyhs2和Kerberos身份验证

我认为这将是这样的:

pyhs2.connect(host='biclient2.server.163.org', 
        port=10000, 
        authMechanism="KERBEROS", 
        password="something", 
        user='[email protected]') 

我也在做同样的,我还没有成功,但至少有一个有意义的错误代码: (服务器蜂巢/ [email protected]在Kerberos数据库中找到)

+0

我成功地使用你所说的,并添加一个''配置'参数,如:'conn_config = {'krb_host':'app-20.photo.163.org','krb_service':'hive'}' – leeyiw

+0

从安全角度来看,在Kerberos身份验证中,用户名/密码应取自活动的Kerberos票据或密钥表中。请参阅下面的@ pele88答案,以前的选项。 – Tagar

+0

加一,但pyhs2不再维护http://*.com/a/38666630/470583 – Tagar

此连接字符串将只要运行该脚本的用户具有有效的Kerberos票据工作:

import pyhs2 

with pyhs2.connect(host='biclient2.server.163.org', 
        port=10000, 
        authMechanism="KERBEROS") as conn: 

    with conn.cursor() as cur: 
      print cur.getDatabases() 

通过KDC传递的用户名,密码和任何其他配置参数不是 。

+0

加一,但pyhs2不再维护http://*.com/a/38666630/470583 – Tagar

+0

@Ruslan是我知道,但没有任何替代方案与kerberised集群工作 - 我已经试过Impyla和PyHive。你有吗? – pele88