2

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

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

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

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

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

这似乎是可能的。Hive 说它在这里支持它。还有另一个SO question看起来它正在做我想做的事情。

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

4

2 回答 2

1

看起来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'])

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

于 2013-09-05T20:58:28.100 回答
0

如果从源代码构建 hive,模块将位于此处(相对于 hive-trunk 目录):

./build/dist/lib/py

如果您在 PYTHONPATH 环境变量中包含该路径,或者使用 sys 模块将该路径添加到脚本中的 python 路径,您应该能够访问这些模块。

另请注意,不再有名为“hive”的模块。在示例代码中,您链接的“hive”应替换为“hive_service”。

于 2013-07-31T15:25:24.513 回答