python 3.x-spark submit无法检测pip中的安装模数


0

我有一个python代码,它具有以下第三方依赖项:

import boto3
from warcio.archiveiterator import ArchiveIterator
from warcio.recordloader import ArchiveLoadFailed
import requests
import botocore
from requests_file import FileAdapter
....

我已经使用pip安装了依赖项,并通过命令pip列表确保它安装正确。然后,当我试图将 job提交给Spark时,我收到以下错误:

ImportError: No module named 'boto3'

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:323)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:287)
at org.apache.spark.api.python.PairwiseRDD.compute(PythonRDD.scala:395)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:323)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:287)
at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:96)
at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:53)
at org.apache.spark.scheduler.Task.run(Task.scala:108)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:335)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

没有一个名为“boto3”的模块的问题不仅发生在“boto3”上,也发生在其他模块上。

我试过以下方法:

    添加了sparkcontext.addpyfile(“.zip文件”)

软件信息:

    python版本:3.4.3

2 答案

0

在执行spark submit之前,请尝试转到python shell并尝试导入模块。

如果您能够在python shell中成功导入这些模块(与在spark submit中尝试使用的python版本相同),请检查以下内容:

您以何种方式提交申请?尝试独立或如果在 yarn 上,尝试客户端模式。


0

上面提到的所有检查都正常,但是设置pyspark_python为我解决了这个问题。


我来回答