gpt4 book ai didi

python-2.7 - 来自 python 脚本的 Hadoop 命令?

转载 作者:可可西里 更新时间:2023-11-01 16:48:01 24 4
gpt4 key购买 nike

我有多个要运行的 hadoop 命令,这些命令将从 python 脚本中调用。目前,我尝试了以下方式。

import os
import xml.etree.ElementTree as etree
import subprocess

filename = "sample.xml"
__currentlocation__ = os.getcwd()
__fullpath__ = os.path.join(__currentlocation__,filename)
tree = etree.parse(__fullpath__)
root = tree.getroot()
hivetable = root.find("hivetable").text
dburl = root.find("dburl").text
username = root.find("username").text
password = root.find("password").text
tablename = root.find("tablename").text
mappers = root.find("mappers").text
targetdir = root.find("targetdir").text
print hivetable
print dburl
print username
print password
print tablename
print mappers
print targetdir

p = subprocess.call(['hadoop','fs','-rmr',targetdir],stdout = subprocess.PIPE, stderr = subprocess.PIPE)

但是,代码不工作。它既不抛出错误也不删除目录。

最佳答案

我建议您稍微改变一下您的方法,否则我就是这样做的。我使用 python 库 import commands,这取决于您将如何使用它 (https://docs.python.org/2/library/commands.html)。这是一个简单的演示:

import commands as com
print com.getoutput('hadoop fs -ls /')

这会为您提供类似的输出(取决于您在 HDFS 目录中的内容)

/usr/local/Cellar/hadoop/2.7.3/libexec/etc/hadoop/hadoop-env.sh: line 25: /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home: Is a directory
Found 2 items
drwxr-xr-x - someone supergroup 0 2017-03-29 13:48 /hdfs_dir_1
drwxr-xr-x - someone supergroup 0 2017-03-24 13:42 /hdfs_dir_2

注意:lib commands 不适用于 python 3(据我所知),我使用的是 python 2.7。注意:注意命令

的限制

如果您将使用 subprocess,它等同于 python 3 的 commands,那么您可能会考虑找到一种正确的方法来处理您的“管道”。我发现这个讨论在这个意义上很有用:( subprocess popen to run commands (HDFS/hadoop) )

希望这个建议对你有帮助!

最好的

关于python-2.7 - 来自 python 脚本的 Hadoop 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35136228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com