python查询kerberized配置单元与sql炼金术

kninwzqo  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(303)

我正在尝试用sql炼金术查询kerberizedHive集群。我可以使用pyhs2提交查询,它确认在通过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的气流使用sql炼金术,可以连接到kerberizedHive,因此我认为可以这样做:

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炼金术是使用pyhive连接到Hive。当前版本的pyhive v0.2.1不支持kerberos。
我注意到有来自yahoo的人创建了一个pull请求,提供对kerberos的支持。这个pr还没有被合并/发布,所以我只是将pr中的代码复制到 /usr/lib/python2.7/site-packages/pyhive/hive.py 在超集服务器上创建了如下连接:

engine = create_engine('hive://hadoop01:10500', connect_args={'auth': 'KERBEROS', 'kerberos_service_name': 'hive'})

希望pyhive的维护者能够合并/释放对kerberos的支持。

mm9b1k5b

mm9b1k5b1#

安装这些库
萨斯勒
节俭
节俭
脓疱
拿到你的机票然后;
engine=创建引擎hive://host:10500/db\u名称',
connect\u args={'auth':'kerberos','kerberos\u service\u name':'hive'})
ps:/db\u名称是可选的

相关问题