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

为什么PySpark创建SparkSession时找不到spark-submit文件?

问题根因

你遇到的报错核心由.bashrc配置的两处错误导致,和Java权限无关:

  • SPARK_HOME赋值时用单引号包裹了带波浪线~的路径,单引号会阻止shell对家目录展开符~做解析,Spark实际读取到的是字面量为~/Spark/spark-3.1.2-bin-hadoop3.2的路径,系统无法识别字面量带~的路径,因此抛出文件不存在的错误。
  • PATH变量中仅添加了$SPARK_HOME,未添加Spark可执行文件所在的$SPARK_HOME/bin目录,导致全局调用Spark命令时无法找到对应程序。

加sudo可以正常执行的原因是:在bin目录下执行sudo ./spark-shell是直接指定当前目录的可执行文件运行,不会读取当前普通用户的SPARK_HOME环境变量,因此可以正常运行。你提到的路径中多出来的./不是问题诱因,只要前面的根路径正确,该拼接路径本身是有效的。

解决步骤
  1. 编辑~/.bashrc文件,修改对应配置:
    • 将SPARK_HOME的赋值改为无单引号的写法,或者直接替换为绝对路径(将路径中的squid替换为你的实际用户名):
    # 写法1:去掉单引号让波浪线正常展开
    export SPARK_HOME=~/Spark/spark-3.1.2-bin-hadoop3.2
    # 写法2:直接写绝对路径,兼容性更好
    # export SPARK_HOME=/home/squid/Spark/spark-3.1.2-bin-hadoop3.2
    
    • 将PATH配置中的$SPARK_HOME替换为$SPARK_HOME/bin:
    export PATH=$SPARK_HOME/bin:$PATH:~/.local/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
    
  2. 保存.bashrc后执行以下命令让配置生效:
    source ~/.bashrc
    
  3. 验证配置:
    • 执行echo $SPARK_HOME,确认输出为不带~的完整绝对路径
    • 无需加sudo直接执行spark-shell --version,确认可以正常输出版本信息
    • 重启Jupyter Notebook后再初始化SparkSession即可正常运行

内容的提问来源于stack exchange,提问作者impulsive squid squealer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 23:09:02