如何在Hadoop分布式文件系统(hdfs)上执行python文件(.py)



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 作业

最新更新