我正在处理一个与networkx有关的EMR YARN群集。 我想运行映射器内的networkx包内的算法之一,并收到错误说没有模块名称“装饰器”,并立即失败,与下面的错误:在pyspark中的映射器内导入错误
文件“./networkx- 1.11-py2.7.egg/networkx/utils/init .py“,第2行,在 文件”./networkx-1.11-py2.7.egg/networkx/utils/decorators.py“,第7行,在 导入错误:没有模块名为装饰
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)
当我跑步时在本地模式(确切的脚本,它工作正常withou t使用群集)。
我参加了以运行代码的步骤如下:
- wget的networkx包及其卵到集群。
- 在群集上安装了networkx。
- 使用以下命令运行我的脚本--py-files,以及蛋的路径: spark-submit --py-files path-to-egg/networkx-1.11-py2.7.egg --master yarn - 部署模式集群路径到文件/ NX.py
只有当我在集群模式下运行代码时才存在问题。似乎由于某种原因,networkx egg无法导入装饰器。
我该如何继续?我是否还需要为装饰者找到另一个蛋?有关如何在mapper内使用networkx包的其他想法?
非常感谢。
谢谢!它在我生成“decorator.egg”并将其添加到命令params后完美工作。 – sidodan