You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark运行SparkPi示例时出现Cannot assign requested address错误的排查与解决尝试

解决Spark Pi运行时的Cannot assign requested address错误

我之前也碰到过完全一样的情况!从以太网切换到WiFi后,Spark的网络绑定逻辑就乱了,只设置SPARK_LOCAL_IP确实没法解决这个端口绑定失败的问题,核心是要明确指定Spark Driver的绑定地址。

问题根源

切换网络后,系统的主机名解析或者本地IP映射发生了变化,Spark Driver默认会尝试绑定到当前主机的某个可用地址,但找不到合适的端口/地址组合,就会抛出你看到的BindException。

快速临时解决方法

直接在运行示例的命令里加上spark.driver.bindAddress配置:

./bin/run-example SparkPi 10 --conf spark.driver.bindAddress=127.0.0.1

如果之后需要其他设备访问Spark的UI或者集群,也可以把127.0.0.1换成你当前WiFi的实际IP(可以用ip addr或者ifconfig命令查看)。

永久解决方法(无需每次加参数)

方法1:修改spark-env.sh配置

  1. 进入Spark的conf目录:cd spark/conf
  2. 如果没有spark-env.sh,先复制模板文件:cp spark-env.sh.template spark-env.sh
  3. 编辑spark-env.sh,添加一行:
export SPARK_DRIVER_BIND_ADDRESS=127.0.0.1
  1. 保存后重新运行示例即可。

方法2:修改spark-defaults.conf配置

  1. 同样进入conf目录,复制模板(如果没有的话):cp spark-defaults.conf.template spark-defaults.conf
  2. 编辑文件,添加一行:
spark.driver.bindAddress 127.0.0.1

关于非法反射警告的说明

你看到的那几条非法反射访问警告是Spark 3.1.1和Java 11的兼容问题,不会影响Spark的正常运行。要是觉得看着碍眼,可以在Spark的配置里添加JVM参数:

export SPARK_DRIVER_OPTS="--add-opens java.base/java.nio=ALL-UNNAMED"

不过这个不是导致你当前绑定错误的原因,可以不用优先处理。

内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 10:17:45