从远程机器执行长时间运行的配置单元查询

时间:2016-08-11 10:40:39

标签: python hadoop ssh hive paramiko

我将使用python脚本从本地服务器执行长时间运行(~10小时)的hive查询。我的目标配置单元服务器位于aws集群中。

我试过用它来执行它 pyhs2,执行('<command>')

paramiko,exec_command('hive -e“<command>”')

在这两种情况下,我的查询将在hive服务器中运行并将成功完成。但问题是,即使在成功完成查询后,我的父python脚本继续等待返回值,并将保持在可中断睡眠(S1)状态无限时间!

无论如何我可以使用pyhs2或paramiko使我的脚本正常工作吗? os在python中还有其他更好的选择吗?

1 个答案:

答案 0 :(得分:0)

正如我之前提到的,即使我在基于性能的环境中遇到类似的问题。 我的用例是我使用PYHS2模块使用HIVE TEZ执行引擎运行查询。 TEZ生成大量日志(基本上以秒为单位)。日志在STDOUT变量中捕获,并在查询成功完成后提供给输出。 要克服的方法是将输出流生成为生成时,如下所示:

    for line in iter(lambda: stdout.readline(2048), ""):
    print line

但为此,您必须使用PARAMIKO或FABRIC使用本地连接到群集,然后通过CLI或直线发出hive命令。