python - 从 python 脚本调用 hive -e

标签 python hive cloudera-cdh

我想从我的 python 脚本中运行一个非常简单的配置单元命令。我正在尝试使用 hive -e,但出现错误

def hive():
    cmd = "hive -e \"msck repair table dashboard_report\""
    print(cmd)
    check_call(cmd)

这是我遇到的错误

hive -e "msck repair table dashboard_report"
Traceback (most recent call last):
File "/home/yosi/work/source/slg/tiger/src/main/resources/python/tiger.py", line 59, in <module>
hive()
File  "/home/yosi/work/source/slg/tiger/src/main/resources/python/tiger.py", line 57, in hive
check_call(cmd)
File "/usr/lib/python2.7/subprocess.py", line 535, in check_call
retcode = call(*popenargs, **kwargs)
File "/usr/lib/python2.7/subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory

最佳答案

您的 check_call 函数正在调用 subprocess.Popen。如果您想将参数传递给该函数,则必须将它们传递到列表中。

可能:

cmd = ["hive", "-e", "\"msck repair table dashboard_report\""]
check_call(cmd)

会起作用。也许需要对调用堆栈进行一些重构以接受列表而不是字符串。

关于python - 从 python 脚本调用 hive -e,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30186341/

相关文章:

python - 如何从 Python 代码生成 PDF 报告。奥杜 16

hive - 如何在 hive 中使用多个分隔符

amazon-web-services - 无法在AWS中使用Elephant-Bird和Hive对Protobuf(2.6.1)数据进行反序列化

hadoop - 执行前配置单元查询执行估计的强度

hadoop - 在 CDH 4.7 中设置 share_jobs 的 hue.ini 位置

Python selenium 将屏幕截图保存在新创建的文件夹中

python - 以列表理解作为值的字典理解

python - 过滤每小时数据python

mysql - SQL 所有列除外

api - 通过cloudera manager API重启jobtracker