我试图在本地服务器上的一个spark示例的jupyterlab笔记本中运行这个简单的pythonpi程序。
我遇到以下错误:
python worker出错:/usr/bin/python:没有名为threading的模块
/usr/bin/python是我安装的python的2.7版本,但是我已经在sparkconf函数中明确地将其设置为python3,但是works不知何故没有“监听”这个配置。。。
注意:我没有用笔记本选项启动pyspark(出于技术原因),因此,尝试直接从笔记本配置spark。。。。
这是我的密码:
import sys
from random import random
from operator import add
import pyspark
from pyspark import SparkConf, SparkContext
from pyspark.sql import SparkSession
config = SparkConf().setAll([('spark.pyspark.python','python3')
])
sc = pyspark.SparkContext(appName="PythonPi", conf=config)
sc.getConf().getAll()
partitions = 2
n = 100000 * partitions
def f(_):
x = random() * 2 - 1
y = random() * 2 - 1
return 1 if x**2 + y**2 <= 1 else 0
count = sc.parallelize(range(1, n + 1), partitions).map(f).reduce(add)
print("Pi is roughly %f" % (4.0 * count / n))
这是我遇到的第一行错误
py4jjavaerror:调用z:org.apache.spark.api.pythonrdd.collectandserve时出错:org.apache.spark.sparkexception:作业因阶段失败而中止:阶段0.0中的任务0失败1次,最近的失败:阶段0.0中的任务0.0丢失(tid 0,localhost,executor driver):org.apache.spark.sparkexception:来自python worker的错误:/usr/bin/python:没有名为threading pythonpath的模块:/opt/spark/python/lib/pyspark.zip:/opt/spark/python/lib/py4j-0.10.7-src.zip:/opt/spark-2.4.6-bin-hadoop2.7/jars/spark-core_.11-2.4.6.jar:/opt/spark/python:/opt/spark/py4j-0.10.7-src.zip::/usr/local/src/org.apache.spark.sparkexception:pyspark.daemon的标准输出中没有端口号org.apache.spark.api.pythonworkerfactory.startdaemon(pythonworkerfactory。scala:204)
证明python3不在/usr/bin/python
$ which python3
/usr/local/bin/python3
我是否缺少用于工人的python的一些配置?在spark(我正在使用2.4.5)的文档中找不到任何提及,spark.pyspark.python应该同时用于驱动程序和工作程序,它在那里声明。。。
如果我从命令行用spark submit运行同一个程序,我对这个程序没有问题,所以我的设置是正确的,只有当我在jupyter笔记本上运行这个程序时才有问题,我在那里运行那些单元格。。。
以下是测试结果 sc.getConf().getAll()
命令:
[('spark.app.name', 'PythonPi'),
('spark.driver.port', '43671'),
('spark.rdd.compress', 'True'),
('spark.app.id', 'local-1593289449892'),
('spark.serializer.objectStreamReset', '100'),
('spark.master', 'local[*]'),
('spark.executor.id', 'driver'),
('spark.submit.deployMode', 'client'),
('spark.driver.host',
'bbench.tst-testplatform-w11029897.tst-testplatform-w11029897.svc.cluster.local'),
('spark.ui.showConsoleProgress', 'true'),
('spark.pyspark.python', '/usr/local/bin/python3')]
暂无答案!
目前还没有任何答案,快来回答吧!