【发布时间】:2017-06-17 09:44:50
【问题描述】:
我正在开发一个 EMR YARN 集群,但遇到了 networkx 问题。 我正在尝试在映射器内的 networkx 包中运行其中一种算法,并收到一条错误消息,指出没有模块名称“装饰器”,并立即失败,并出现以下错误:
文件“./networkx-1.11-py2.7.egg/networkx/utils/init.py”,第 2 行,在 文件“./networkx-1.11-py2.7.egg/networkx/utils/decorators.py”,第 7 行,在 ImportError: No module named decorator
at org.apache.spark.api.python.PythonRunner$$anon$1.read(PythonRDD.scala:193)
at org.apache.spark.api.python.PythonRunner$$anon$1.<init>(PythonRDD.scala:234)
at org.apache.spark.api.python.PythonRunner.compute(PythonRDD.scala:152)
at org.apache.spark.api.python.PythonRDD.compute(PythonRDD.scala:63)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:319)
当我在本地模式下运行确切的脚本时它工作正常(不使用集群)。
我为运行代码所采取的步骤如下:
- wget networkx 包和它的 egg 到集群。
- 在集群上安装了 networkx。
- 使用命令 --py-files 运行我的脚本,并带有 egg 的路径: spark-submit --py-files path-to-egg/networkx-1.11-py2.7.egg --master yarn --deployed-mode cluster path-to-file/NX.py
仅当我在集群模式下运行代码时才存在此问题。似乎由于某种原因,networkx egg 无法导入装饰器。
我该如何进行?我是否还需要为装饰者寻找另一个彩蛋?关于如何在映射器中使用 networkx 包的任何其他想法?
非常感谢。
【问题讨论】:
标签: mapreduce pyspark hadoop-yarn networkx amazon-emr