python - Python 中导入的 Spark 问题

标签 python apache-spark pyspark caffe pycaffe

我们正在 python 脚本上运行一个 spark-submit 命令,该脚本使用 Spark 在 Python 中使用 Caffe 并行进行对象检测。如果在纯 Python 脚本中运行,脚本本身运行得非常好,但在与 Spark 代码一起使用时会返回导入错误。我知道 spark 代码不是问题,因为它在我的家用机器上运行良好,但在 AWS 上运行不佳。我不确定这是否与环境变量有关,就好像它没有检测到它们一样。

设置了这些环境变量:

SPARK_HOME=/opt/spark/spark-2.0.0-bin-hadoop2.7
PATH=$SPARK_HOME/bin:$PATH
PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
PYTHONPATH=/opt/caffe/python:${PYTHONPATH}

错误:

16/10/03 01:36:21 WARN TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0, 172.31.50.167): org.apache.spark.api.python.PythonException: Traceback (most recent call last):
 File "/opt/spark/spark-2.0.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/worker.py", line 161, in main
   func, profiler, deserializer, serializer = read_command(pickleSer, infile)
 File "/opt/spark/spark-2.0.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/worker.py", line 54, in read_command
   command = serializer._read_with_length(file)
 File "/opt/spark/spark-2.0.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/serializers.py", line 164, in _read_with_length
   return self.loads(obj)
 File "/opt/spark/spark-2.0.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/serializers.py", line 422, in loads
   return pickle.loads(obj)
 File "/opt/spark/spark-2.0.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/cloudpickle.py", line 664, in subimport
   __import__(name)
ImportError: ('No module named caffe', <function subimport at 0x7efc34a68b90>, ('caffe',))

有谁知道为什么这会成为一个问题?

这个来自 Yahoo 的包通过将 Caffe 作为 jar 依赖项来管理我们试图做的事情,然后在 Python 中再次使用它。但我还没有找到任何关于如何构建和导入它的资源。

https://github.com/yahoo/CaffeOnSpark

最佳答案

您可能还没有在 AWS 环境中编译 caffe python 包装器。出于完全逃避我(和其他几个人,https://github.com/BVLC/caffe/issues/2440)的原因,pycaffe 不能作为 pypi 包使用,您必须自己编译它。如果您在 AWS EB 环境中,您应该遵循此处的编译/制作说明或使用 ebextensions 使其自动化:http://caffe.berkeleyvision.org/installation.html#python

关于python - Python 中导入的 Spark 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39824381/

相关文章:

python - matplotlib,如何压缩x轴的部分

python - open()函数python默认目录

python - 使用 PySpark 将复杂 RDD 转换为扁平化 RDD

scala - reduceByKey 以 case 类实例为键

python - 使用 pyspark 仅选择嵌套 MapType col 中的特定键

apache-spark - 如何使用 pyspark 从列表中获取最后一项?

dataframe - pyspark 属性错误 : 'DataFrame' object has no attribute 'toDF'

python - 如何在 Django 中将纯文本转换为散列密码

python - 如何确定按下了哪个按钮?

sql - Pyspark Dataframes 作为 View