python - Python findSpark 和 PySpark 不工作。显示 IndexError: 列表索引超出范围
问题描述
我按照几种方法安装了 findspark 和 PySpark。我正在使用 Python 3.6,java jdk 11.0。我确实在 .bashrc 文件中添加了以下 2 行代码:
export PATH=$PATH:/home/jbustost/.local/bin
export SPARK_HOME=/home/jbustost/spark-2.4.4-bin-hadoop2.7
我已经安装了 Jupyter Notebook,它运行良好,但是当我尝试使用 findspark 时会发生这种情况。
import findspark
findspark.find() # out[2]:'/home/jbustos/spark-2.4.4-bin-hadoop2.7'
findspark.init() # it crashes here. below is the traceback.
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-7-5f9243a09cec> in <module>
----> 1 findspark.init()
~/.local/lib/python3.6/site-packages/findspark.py in init(spark_home, python_path, edit_rc, edit_profile)
133 # add pyspark to sys.path
134 spark_python = os.path.join(spark_home, 'python')
--> 135 py4j = glob(os.path.join(spark_python, 'lib', 'py4j-*.zip'))[0]
136 sys.path[:0] = [spark_python, py4j]
137
IndexError: list index out of range
有人能指出我正确的方向吗?我错过了什么?我正在尝试在 linux mint 中安装它。谢谢!
解决方案
我认为 Spark 2.4.x 还不支持 JDK 11。我可以找到一张添加 Java 11 支持的票,但它仍处于开放状态。所以,我建议你现在使用 JDK 8。
除此之外,您还需要两件事。
- 需要添加
$SPARK_HOME/bin
到PATH
. - 需要添加 pyspark 驱动程序选项以将 jupyter 与 pyspark 链接。
您可以尝试将以下内容添加到 bashrc 吗?
export SPARK_HOME=/home/jbustost/spark-2.4.4-bin-hadoop2.7
export PATH=$SPARK_HOME/bin:/home/jbustost/.local/bin:$PATH
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'
您需要执行source ~/.bashrc
以使更改生效。
推荐阅读
- javascript - ECMAScript 从 './somwhere.js' 导入 { }
- php - Wordpress 错误警告“在第 28 行从......slideshow_layerslider.php 中的空值创建默认对象”
- amazon-rds - AWS AppSync RDS - json SQL 结果的直通输出解析器
- autofixture - AutoFixture AutoDataAttribute 自定义超越派生属性
- functional-programming - 简单机器学习标准中的递归
- git - 如何从其他人那里分叉我自己的存储库副本?
- javascript - Nodejs FS异步等待S3上传multer
- android - Jetpack Compose 中的 TextClock 等价物是什么?
- python - Mongo 获取一组键,包括嵌套的,以及相关的最近看到的日期
- automation - 如何在 Tosca 工具中对空值进行逐行比较