ImportError:运行火花时没有名为请求的模块

Posted

技术标签:

【中文标题】ImportError:运行火花时没有名为请求的模块【英文标题】:ImportError: No module named requests while running spark 【发布时间】:2016-12-12 20:19:52 【问题描述】:

我正在尝试使用名为“requests”的 python 包以及使用 pyspark 的程序。我已经下载了所需的包,并且可以通过包含“导入请求”将其用于普通的 python 程序,但它不适用于 pyspark 程序并显示“ImportError: No module named requests”。

代码

def get_text(s):
    import requests
    url = s
    data = requests.get(url).text
    return data

调用函数

newrdd=newrdd.map(get_text)

输出错误行

16/12/12 15:42:33 WARN scheduler.TaskSetManager: Lost task 0.0 in stage 1.0 (TID 48, node090.cm.cluster): org.apache.spark.api.python.PythonException: Traceback (most recent call last):
  File "/local/hadoop-2/tmp/hadoop-yarn/nm-local-dir/usercache/wdps1615/appcache/application_1480500761259_0178/container_1480500761259_0178_01_000003/pyspark.zip/pyspark/worker.py", line 172, in     main
    process()
  File "/local/hadoop-2/tmp/hadoop-yarn/nm-local-dir/usercache/wdps1615/appcache/application_1480500761259_0178/container_1480500761259_0178_01_000003/pyspark.zip/pyspark/worker.py", line 167, in process
    serializer.dump_stream(func(split_index, iterator), outfile)
  File "/local/hadoop-2/tmp/hadoop-yarn/nm-local-dir/usercache/wdps1615/appcache/application_1480500761259_0178/container_1480500761259_0178_01_000003/pyspark.zip/pyspark/serializers.py", line 133, in dump_stream
    for obj in iterator:
  File "/var/scratch/wdps1615/spark-2.0.2-bin-without-hadoop/python/lib/pyspark.zip/pyspark/rdd.py", line 1507, in func
  File "/var/scratch/wdps1615/Entitytext.py", line 45, in get_text
    import requests
ImportError: No module named requests

Link to error screenshot

【问题讨论】:

您可以在包含您的脚本的同一文件夹中运行pip freeze 吗? 是的,'requests==2.12.3' 在列表中。 【参考方案1】:

我遇到了同样的问题,这对我有用:

import sys
sys.path.append('/usr/local/lib/python3.5/dist-packages')
import requests

您也可以使用python2.7 而不是python3.5,但您必须确保 pip 包已安装并在该文件夹中可用。

【讨论】:

【参考方案2】:

看起来你已经在另一个python解释器上执行了你的pyspark应用程序,确保你已经为那个解释器安装了requests包,你可以检查requests是否安装在[PYSPARK_VENV]/lib/python2.7/site-packages/文件夹中。

运行命令并重新启动您的应用程序将解决问题:

/var/scratch/wdps1615/spark-2.0.2-bin-without-hadoop/pip install requests

【讨论】:

以上是关于ImportError:运行火花时没有名为请求的模块的主要内容,如果未能解决你的问题,请参考以下文章

ImportError:运行我的应用程序时没有名为“队列”的模块被 cx_freeze 冻结

ImportError:没有名为 utils 的模块

ImportError:在 Heroku 上部署时没有名为“解耦”的模块

pyqtgraph - ImportError:没有名为 pyqtgraph 的模块

ImportError:没有名为 Cython.Distutils 的模块

Python ImportError:没有名为串行的模块