我必须使用 python 脚本从我的本地服务器执行长时间运行(约 10 小时)的配置单元查询。我的目标配置单元服务器在 aws 集群中。
我尝试使用
pyhs2,执行('<command>
')
和
paramiko, exec_command('hive -e "<command>
"')
在这两种情况下,我的查询都将在配置单元服务器中运行并成功完成。但问题是即使在成功完成查询后我的父 python 脚本继续等待返回值并将无限期保持在可中断 sleep (Sl) 状态!
无论如何我可以使用 pyhs2 或 paramiko 使我的脚本正常工作吗? os 在 python 中还有其他更好的选择吗?
最佳答案
正如我之前提到的,即使我在基于性能的环境中也面临类似的问题。 我的用例是我使用 PYHS2 模块使用 HIVE TEZ 执行引擎运行查询。 TEZ 生成大量日志(基本上以秒为单位)。日志被捕获到 STDOUT 变量中,并在查询成功完成后提供给输出。 克服的方法是在生成时将输出流式传输,如下所示:
for line in iter(lambda: stdout.readline(2048), ""):
print line
但是为此,您必须使用 PARAMIKO 或 FABRIC 使用 native 连接到集群,然后通过 CLI 或 beeline 发出配置单元命令。
关于python - 从远程机器执行长时间运行的配置单元查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38894076/