Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从python脚本调用配置单元-e_Python_Hive_Cloudera Cdh - Fatal编程技术网

从python脚本调用配置单元-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

我想在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
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程序的同一目录执行此操作。这行吗?