如何在MapReduce作业中导入自定义模块?

朋友

我在中定义了MapReduce作业main.py,该作业从中导入lib模块lib.py我使用Hadoop流将作业提交到Hadoop集群,如下所示:

hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar -files lib.py,main.py 
    -mapper "./main.py map" -reducer "./main.py reduce" 
    -input input -output output

在我的理解,这应该把两者main.pylib.py进入分布式缓存文件夹中的每个计算设备上,从而使模块lib可用main但这并没有发生:从日志中我看到文件确实被复制到了同一目录,但是main无法导入lib,抛出ImportError

为什么会发生这种情况,我该如何解决?

UPD。将当前目录添加到路径不起作用:

import sys    
sys.path.append(os.path.realpath(__file__))
import lib
# ImportError

但是,手动加载模块可以达到以下目的:

import imp
lib = imp.load_source('lib', 'lib.py')

但这不是我想要的。那么,为什么Python解释器会.py在同一目录中看到其他文件,却无法导入它们?请注意,我已经尝试将空__init__.py文件添加到同一目录中而没有任何效果。

朋友

我将问题发布到Hadoop用户列表中,最后找到了答案。事实证明,Hadoop并没有真正将文件复制到命令运行的位置,而是为其创建了符号链接反过来,Python无法使用符号链接,因此无法识别lib.py为Python模块。

简单的解决方法在这里是把两者main.pylib.py到同一个目录,使符号链接的目录放置到MR工作的工作目录,而这两个文件是物理上在同一个目录。所以我做了以下事情:

  1. main.pylib.pyapp目录。
  2. main.pylib.py直接使用的情况下,就是导入字符串只是

    导入库

  3. app带有-files选项的上目录

因此,最终命令如下所示:

hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar -files app 
       -mapper "app/main.py map" -reducer "app/main.py reduce" 
       -input input -output output 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Julia中导入自定义模块

来自分类Dev

如何在 Angular 4 中导入自定义模块?

来自分类Dev

如何在Android Studio中导入自定义图标?

来自分类Dev

无法在openERP中导入自定义模块

来自分类Dev

在Azure python函数中导入自定义模块

来自分类Dev

无法在openERP中导入自定义模块

来自分类Dev

如何在控制器Laravel中导入自定义类?

来自分类Dev

如何在XCode 6中导出/导入自定义代码段

来自分类Dev

如何在Material-UI主题中导入和使用自定义字体?

来自分类Dev

如何在Angular应用程序中导入PDFMake的自定义字体?

来自分类Dev

如何在Python自定义类中导入外部库

来自分类Dev

如何在 node-red 中导入自定义 jar

来自分类Dev

如何在 Ionic 4 中导入自定义 css 和 js

来自分类Dev

在AWS EMR上的MapReduce代码中导入自定义函数

来自分类Dev

在CakePHP中导入自定义类

来自分类Dev

部署到Heroku时,如何在Procfile中使用Gunicorn导入自定义模块?

来自分类Dev

如何在Python中创建和导入自定义模块

来自分类Dev

如何在Python中创建和导入自定义模块

来自分类Dev

在azure ml部署环境中导入自定义python模块

来自分类Dev

在python的父文件夹中导入自定义模块

来自分类Dev

导入PowerShell模块时如何执行自定义方法?

来自分类Dev

如何将JQuery导入自定义dnn模块

来自分类Dev

导入PowerShell模块时如何执行自定义方法?

来自分类Dev

如何在Python中导入liblas模块?

来自分类Dev

如何在Python中导入liblas模块?

来自分类Dev

如何在IPython集群中导入模块

来自分类Dev

如何在测试中导入测试模块?

来自分类Dev

导入自定义CommonJS模块失败

来自分类Dev

Python自定义模块和导入

Related 相关文章

热门标签

归档