我正在尝试使用SQL Alchemy查询Kerberized Hive集群。我能够使用pyhs2提交查询,这证实了在Kerberos身份验证时连接和查询Hive是可能的。
我不确定在
更新:
在底层,SQL Alchemy使用PyHive连接到Hive。当前版本的PyHive(v0.2.1)不支持Kerberos。
我注意到有人从Yahoo创建了一个pull request来提供对Kerberos的支持。该PR尚未合并/发布,因此我只是将代码从PR复制到
希望PyHive的维护者能够合并/发布对Kerberos的支持。
import pyhs2
with pyhs2.connect(host='hadoop01.woolford.io',
port=10500,
authMechanism='KERBEROS') as conn:
with conn.cursor() as cur:
cur.execute('SELECT * FROM default.mytable')
records = cur.fetchall()
# etc ...
我注意到Airbnb的Airflow使用SQLAlchemy并且可以连接到Kerberized Hive,因此我想这样做是可能的:
engine = create_engine('hive://hadoop01.woolford.io:10500/default', connect_args={'?': '?'})
connection = engine.connect()
connection.execute("SELECT * FROM default.mytable")
# etc ...
我不确定在
connect_args
字典中应该设置哪些参数。您能否看出需要添加什么才能使其工作(例如Kerberos服务名称、领域等)?更新:
在底层,SQL Alchemy使用PyHive连接到Hive。当前版本的PyHive(v0.2.1)不支持Kerberos。
我注意到有人从Yahoo创建了一个pull request来提供对Kerberos的支持。该PR尚未合并/发布,因此我只是将代码从PR复制到
/usr/lib/python2.7/site-packages/pyhive/hive.py
中,在Superset服务器上创建了一个连接,如下所示:engine = create_engine('hive://hadoop01:10500', connect_args={'auth': 'KERBEROS', 'kerberos_service_name': 'hive'})
希望PyHive的维护者能够合并/发布对Kerberos的支持。