从python脚本调用配置单元-e
我想在python脚本中运行一个非常简单的配置单元命令。我正在尝试使用hive-e,但出现了一个错误从python脚本调用配置单元-e,python,hive,cloudera-cdh,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): Fi
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
hive-e“msck维修表仪表板报告”
回溯(最近一次呼叫最后一次):
文件“/home/yosi/work/source/slg/tiger/src/main/resources/python/tiger.py”,第59行,在
蜂巢()
文件“/home/yosi/work/source/slg/tiger/src/main/resources/python/tiger.py”,第57行,在hive中
检查呼叫(cmd)
文件“/usr/lib/python2.7/subprocess.py”,第535行,在check_调用中
retcode=call(*popenargs,**kwargs)
文件“/usr/lib/python2.7/subprocess.py”,第522行,在调用中
返回Popen(*popenargs,**kwargs)。等待()
文件“/usr/lib/python2.7/subprocess.py”,第710行,在__
错误读取,错误写入)
文件“/usr/lib/python2.7/subprocess.py”,第1327行,在执行子进程中
引发子对象异常
OSError:[Errno 2]没有这样的文件或目录
您的check\u call函数正在调用subprocess.Popen
。如果要将参数传递给该函数,必须在列表中传递参数
可能:
cmd = ["hive", "-e", "\"msck repair table dashboard_report\""]
check_call(cmd)
会有用的。可能需要在调用堆栈中进行一些重构,以接受列表而不是字符串。如果您使用的是python2.7,那么下面的代码片段将起作用
import subprocess
command = [""" hive -e "msck repair table dashboard_report" """]
print subprocess.check_output(command,shell=True)
check\u call
具体做什么?创建一个新进程并检查其返回代码。请发布代码吗?首先从命令行运行命令。从启动Python程序的同一目录执行此操作。这行吗?