gpt4 book ai didi

python - 使用 SQL Alchemy 查询 Kerberized Hive

转载 作者:行者123 更新时间:2023-12-05 07:45:47 41 4
gpt4 key购买 nike

我正在尝试使用 SQL Alchemy 查询 Kerberized Hive 集群.我可以使用 pyhs2 提交查询这确认在通过 Kerberos 身份验证时可以连接和查询 Hive:

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's Airflow使用 SQL Alchemy 并且可以连接到 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 复制到创建的 Superset 服务器上的 /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 的支持。

最佳答案

安装这些库

  • 安全
  • 节俭
  • 节俭-sasl
  • PyHive

获取您的 kerberos 票证,然后;

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

ps:/DB_NAME 是可选的

关于python - 使用 SQL Alchemy 查询 Kerberized Hive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41328652/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com