运行独立 pyspark 时出现 Windows 错误解决办法

  • Post category:Python

首先,我们需要明确运行独立 PySpark 的目的。运行独立 PySpark 是为了在本地计算机上搭建 PySpark 环境,便于开发和测试 PySpark 应用程序。但有时在 Windows 系统上运行独立 PySpark 的过程中,会遇到一些错误,例如:

Exception in thread "main" java.lang.IllegalArgumentException: Solution path must be specified
    at org.apache.spark.deploy.worker.WorkerArguments.(WorkerArguments.scala:42)
    at org.apache.spark.deploy.worker.Worker$.main(Worker.scala:959)
    at org.apache.spark.deploy.worker.Worker.main(Worker.scala)

这个错误表示 Solution path 必须被指定,我们需要通过下面的步骤来解决这个问题。

第一步:安装 Java 开发环境(JDK)

在 Windows 系统中,需要先安装 Java 开发环境(JDK)。我们可以到 Oracle 官网下载最新的 JDK 安装包,并按照安装提示进行安装。在安装完成后,需要配置环境变量,可以按照如下步骤:

  1. 打开“我的电脑”(或“此电脑”,或“计算机”)。
  2. 右键单击“属性”。
  3. 点击“高级系统设置”。
  4. 点击“环境变量”。
  5. 在“系统变量”下方找到“Path”,双击进行编辑。
  6. 在编辑对话框中,添加 JDK 安装路径的 bin 文件夹路径(例如:C:\Program Files\Java\jdk-14.0.2\bin)。
  7. 确认修改并关闭窗口。

第二步:安装 PySpark

  1. 下载 PySpark 安装包。可以在 PySpark 官方网站(https://spark.apache.org/downloads.html)中下载。
  2. 解压缩 PySpark 安装包,并将其放置在任意目录中。
  3. 打开 PySpark 安装目录的 conf 子目录,并复制一份 spark-env.sh.template 文件,并将其重命名为 spark-env.sh 文件。
  4. 在 spark-env.sh 中增加两行代码:
export PYSPARK_PYTHON=python3
export PYSPARK_DRIVER_PYTHON=python3

这两行代码表示使用 Python3 作为 PySpark 的默认 Python 环境。

第三步:运行 PySpark

在 Windows 系统中,我们可以运行 PySpark REPL 来测试 PySpark 环境是否搭建成功。打开 cmd 命令行,并进入 PySpark 的安装目录:

$ cd /path/to/pyspark

然后运行 PySpark:

$ ./bin/pyspark

如果一切正常,应该可以看到 PySpark REPL 的欢迎信息并进入 PySpark REPL 环境。

示例

C:\Spark\conf>copy spark-env.sh.template spark-env.sh
        1 个文件被复制。

C:\Spark\conf>
C:\Spark\conf>echo export PYSPARK_PYTHON=python3 >> spark-env.sh

C:\Spark\conf>echo export PYSPARK_DRIVER_PYTHON=python3 >> spark-env.sh

C:\Spark\conf>type spark-env.sh
export SPARK_DIST_CLASSPATH="/path/to/hadoop/share/hadoop/mapreduce/*:/path/to/hadoop/share/hadoop/mapreduce/lib/*:/path/to/hadoop/share/hadoop/common/*:/path/to/hadoop/share/hadoop/common/lib/*:/path/to/hadoop/share/hadoop/yarn/*:/path/to/hadoop/share/hadoop/yarn/lib/*:/path/to/hadoop/share/hadoop/hdfs/*:/path/to/hadoop/share/hadoop/hdfs/lib/*"
export PYSPARK_PYTHON=python3
export PYSPARK_DRIVER_PYTHON=python3

C:\Spark\conf>