【问题标题】:How to execute a python file (.py) on hadoop distributed file system (hdfs)如何在hadoop分布式文件系统(hdfs)上执行python文件(.py)
【发布时间】:2021-02-15 23:18:27
【问题描述】:

Hadoop 提供了使用

在集群上直接运行 java 应用程序的可能性
hadoop jar <jar>

现在我有一个 python 脚本而不是一个 java 应用程序。

下面是 .py 文件的构造,没有所有功能,只剩下“remove-files-from-folder”部分

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 的新手。如果我的方法看起来完全不对劲并且没有意义,我很高兴得到任何澄清!

【问题讨论】:

  • hadoop jar 专门用于运行 MapReduce 作业。看起来您想使用 Python 操作 HDFS 上的文件?在这种情况下,您应该查看pypi.python.org/pypi/hdfs

标签: python hadoop hdfs


【解决方案1】:

如果您只是想在集群中分发您的 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 作业

【讨论】:

  • michael-noll.com/tutorials/… 提供了一个很好的教程。
  • 谢谢,它让我走上了正轨。我需要调整我的 python 脚本以作为 MapReduce 作业。
  • 没问题 Rob,只要记住 Hadoop 流式处理与 python 的工作原理是拉入标准输入并输出标准输出。
猜你喜欢
  • 1970-01-01
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 2018-08-25
  • 1970-01-01
相关资源
最近更新 更多