我将使用python脚本从本地服务器执行长时间运行(~10小时)的hive查询。我的目标配置单元服务器位于aws集群中。
我试过用它来执行它
pyhs2,执行('<command>
')
和
paramiko,exec_command('hive -e“<command>
”')
在这两种情况下,我的查询将在hive服务器中运行并将成功完成。但问题是,即使在成功完成查询后,我的父python脚本继续等待返回值,并将保持在可中断睡眠(S1)状态无限时间!
无论如何我可以使用pyhs2或paramiko使我的脚本正常工作吗? os在python中还有其他更好的选择吗?
答案 0 :(得分:0)
正如我之前提到的,即使我在基于性能的环境中遇到类似的问题。 我的用例是我使用PYHS2模块使用HIVE TEZ执行引擎运行查询。 TEZ生成大量日志(基本上以秒为单位)。日志在STDOUT变量中捕获,并在查询成功完成后提供给输出。 要克服的方法是将输出流生成为生成时,如下所示:
for line in iter(lambda: stdout.readline(2048), ""):
print line
但为此,您必须使用PARAMIKO或FABRIC使用本地连接到群集,然后通过CLI或直线发出hive命令。