【问题标题】:executing long running hive queries from remote machine从远程机器执行长时间运行的配置单元查询
【发布时间】:2019-01-12 18:58:34
【问题描述】:

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

我尝试使用 pyhs2, 执行('<command>')

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

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

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

【问题讨论】:

  • 我不知道pyhs2,但是使用paramiko,函数exec_command()会立即返回,所以我不明白你的意思是什么继续等待返回值.
  • 即使我面临 pyhs2 和 pyhive 库的类似问题,有什么建议或解决方法吗?

标签: python hadoop ssh hive paramiko


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多