Skip to main content
 首页 » 编程设计

python之通过 Python 客户端进行 Hive 查询

2025年05月04日6JustinYoung

我在 AWS EMR 中运行的 hadoop 集群上安装了 hive 0.8。

我正在尝试进行一些数据质量检查,这涉及运行配置单元查询并将结果提取到包含更多逻辑的 python 中。

目前,这是通过将配置单元查询作为工作流步骤发送,将这些结果转储到主节点上的本地存储,将这些结果 SCP-ing 到我的本地机器,然后使用 python 加载文件并解析结果来实现的.总而言之,这不是一个非常有趣的过程。

理想情况下,我能够以类似于以下的方式执行此操作:

conn = hive.connect(ip, port, user, pw) 
cursor = conn.cursor() 
cursor.execute(query) 
rs = cursor.fetchall() 

看来这应该是可能的。 Hive 说它支持它 here .还有一个SO question看起来它正在做我想做的事情。

但是,我在查找文档时遇到了问题。特别是,我无法弄清楚从哪里获得这些示例中使用的包。如果有人能够提供有关如何让 python 客户端工作的详细说明,那将非常有帮助,但如果做不到这一点,那么知道从哪里获得这些包将很有帮助。

请您参考如下方法:

看起来像 hive_utils包裹里有你要找的东西。查看pypi页面,可以通过以下方式运行查询:

query = """ 
    SELECT country, count(1) AS cnt 
    FROM User 
    GROUP BY country 
""" 
hive_client = hive_utils.HiveClient( 
    server=config['HOST'], 
    port=config['PORT'], 
    db=config['NAME'], 
) 
for row in hive_client.execute(query): 
    print '%s: %s' % (row['country'], row['cnt']) 

安装它还应该安装所需的节俭包。