我正在尝试在Colab上安装PySpark。
!apt-get install openjdk-8-jdk-headless -qq > /dev/null
!wget -q https://www-us.apache.org/dist/spark/spark-2.4.1/spark-2.4.1-bin-hadoop2.7.tgz
!tar xf spark-2.4.1-bin-hadoop2.7.tgz
!pip install -q findspark
安装完上述内容后,我将环境设置为:
import os
os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64"
os.environ["SPARK_HOME"] = "/content/spark-2.2.1-bin-hadoop2.7"
在那之后,我尝试如下初始化pyspark并最终出错。
import findspark
findspark.init()
错误:
IndexError Traceback (most recent call last)
<ipython-input-24-4e91d34768ac> in <module>()
1 import findspark
----> 2 findspark.init()
/usr/local/lib/python3.6/dist-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
答案 0 :(得分:1)
确保您的Java和Spark路径(包括版本)正确:
os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64"
os.environ["SPARK_HOME"] = "/content/spark-2.4.4-bin-hadoop2.7"
然后尝试通过打印路径来检查路径是否正确
print(os.listdir('./sample_data'))
如果您获得了示例文件列表,则代码将初始化而不会出现“索引超出范围”错误
答案 1 :(得分:0)
您可以尝试设置
os.environ["SPARK_HOME"] = "/content/spark-2.2.1-bin-hadoop2.7"
与上述安装版本相同的Spark版本?您的情况将是2.4.1而不是2.2.1。
os.environ["SPARK_HOME"] = "/content/spark-2.4.1-bin-hadoop2.7"