Hadoop提供了直接在集群上运行Java应用程序的可能性,使用
hadoop jar <jar>
现在我有一个python脚本而不是java应用程序。
下面是没有所有功能的.py文件的结构,只是留下了"从文件夹中删除文件"部分
import os.path
def transform():
inputfolder = "input"
for filename in os.listdir(inputfolder):
path = inputfolder + "\" + filename
os.remove(path)
def main():
transform()
if __name__ == "__main__": main()
有没有办法像执行.jar文件一样执行.py文件?
我是Python和Hadoop的新手。如果我的方法似乎完全错误并且没有意义,我很乐意得到任何形式的澄清!
如果你只是想在集群中分发你的python脚本,那么你需要使用Hadoop Streaming。
该命令的基本语法如下所示(来自 https://hadoop.apache.org/docs/r1.2.1/streaming.html):
$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar
-input myInputDirs
-output myOutputDir
-mapper myPythonScript.py
-file myPythonScript.py
这基本上为您的 python 脚本创建了一个 map-reduce 作业