我在AWS EMR中运行的hadoop集群上安装了hive 0.8。
我正在尝试做一些数据QA,它涉及运行一个配置单元查询并将结果提取到python中,其中包含更多逻辑。
目前,这是通过将hive查询作为作业流步骤发送,将这些结果转储到主节点上的本地存储,将这些结果发送到本地计算机,然后使用python加载文件并解析结果来实现的。 。总而言之,这不是一个非常有趣的过程。
理想情况下,我能够以类似于:
的方式做到这一点conn = hive.connect(ip, port, user, pw)
cursor = conn.cursor()
cursor.execute(query)
rs = cursor.fetchall()
似乎这可能是可能的。 Hive说它支持它here。还有另一个SO question看起来像是在做我想做的事。
但是,我找不到文档。特别是,我无法弄清楚在哪些地方获得这些例子中使用的包。如果有人能够提供有关如何使python客户端正常工作的详细说明,那将会非常有用,但如果失败了,那么知道从哪里获取这些包将会很有帮助。
答案 0 :(得分: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'])
安装它还应该安装所需的thrift包。
答案 1 :(得分:0)
如果您从源代码构建配置单元,则模块将位于此处(相对于hive-trunk目录):
./构建/ DIST / LIB /吡啶
如果在PYTHONPATH环境变量中包含该路径,或者使用sys模块在脚本中将该路径添加到python路径,则应该能够访问模块。
另请注意,不再有名为“hive”的模块。在示例代码中,您链接的“hive”应替换为“hive_service”。