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

标签 python hadoop hdfs

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

关于python - 如何在hadoop分布式文件系统(hdfs)上执行python文件(.py),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46934935/

相关文章:

scala - dataframereader 如何读取http?

scala - 如何列出 Spark Scala shell 中 HDFS 位置中的所有 csv 文件?

python - 在 python 中拟合 2D Y 数据

python - flask - 比@api.expect 更严格的输入数据?

python - Ctree Specializer 正在使用 for 循环索引进行计算,而不是实际的数组值

hadoop - Tez 容器是在 YARN 容器内部运行,还是代替 YARN 容器运行?

python - 将条件列表传递给要检查的函数

hadoop - 增加 map 数量并减少功能

nosql - 实时查询/聚合数百万条记录 - hadoop?数据库? Cassandra ?

hadoop - HDFS 可以复制到其他集群吗?