2024-09-30 20:26:04 发布
网友
我有一个脚本,可以使用hadoopcli将文件上载到HDFS
以下是片段:
def hdfs_put(file_path, topic): print(file_path) print(topic) call(["/usr/local/hadoop-2.5.1/bin/hadoop fs -put", file_path, "/" + topic] , shell=True , stderr=STDOUT)
以下是我得到的结果(注意参数不是null):
您误用了shell=True选项。在
如果为True,则命令按原样传递给shell。你不需要把它分成一个列表。在
def hdfs_put(file_path, topic): print(file_path) print(topic) call("/usr/local/hadoop-2.5.1/bin/hadoop fs -put " + file_path + " /" + topic , shell=True , stderr=STDOUT)
或者,如果要将参数作为列表,则必须删除Shell=True:
当shell=True时,args应该包含一个要在shell中运行的字符串。{1>你可以简单地删除你的命令:
shell=True
args
check_call(["/usr/local/hadoop-2.5.1/bin/hadoop", "fs", "-put", file_path, "/" + topic] , stderr=STDOUT)
我把它改为使用check_call,因为这是检查错误的简单方法。在
check_call
您误用了shell=True选项。在
如果为True,则命令按原样传递给shell。你不需要把它分成一个列表。在
或者,如果要将参数作为列表,则必须删除Shell=True:
^{pr2}$当
shell=True
时,args
应该包含一个要在shell中运行的字符串。{1>你可以简单地删除你的命令:我把它改为使用
check_call
,因为这是检查错误的简单方法。在相关问题 更多 >
编程相关推荐