You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

PySpark应用无法连接Minikube中运行的Spark Master,执行脚本及spark-submit均报错求助

PySpark应用无法连接Minikube中运行的Spark Master,执行脚本及spark-submit均报错求助

看起来你遇到了两个核心问题:本地PySpark环境没配置到位,以及对Minikube中Spark集群的连接方式可能有点误解,我来一步步帮你排查解决:

一、先搞定spark-submit的报错问题

你执行spark-submit --version时出现的错误,本质是本地机器没有正确安装和配置Spark运行环境。PySpark不是光装个Python库就能跑的,它必须依赖本地的Spark安装包来获取核心JAR包和底层运行组件。

解决步骤:

  1. 从Spark官方渠道下载对应你Python版本的预编译Spark包(建议选带Hadoop集成的版本,比如Spark 3.5.0搭配Hadoop 3.x)
  2. 把压缩包解压到本地任意目录,比如C:\spark
  3. 配置系统环境变量:
    • 新增环境变量SPARK_HOME,值设为你的Spark解压路径(比如C:\spark
    • %SPARK_HOME%\bin添加到系统的PATH变量里
  4. 重启你的终端和Python IDE,再执行spark-submit --version,如果能正常显示Spark版本号,说明环境配置成功了

二、解决PySpark脚本连接Minikube Spark集群的问题

就算本地环境配置好了,直接用spark://127.0.0.1:7077连接可能还是有问题——因为Minikube里的Spark Master是在K8s的虚拟网络中,本地端口映射只是把7077端口转到了Master Pod,但Worker节点需要能访问到你的本地机器来拉取任务代码,这涉及到跨网络的互通问题。这里给你两个靠谱的方案:

方案1:用Spark on Kubernetes模式提交(推荐)

既然你的Spark集群本身就跑在Minikube的K8s上,用K8s原生的提交方式是最适配的,不需要依赖端口映射来连接spark://地址。

示例提交命令:

# 先执行minikube ip获取Minikube的IP,比如得到192.168.49.2
spark-submit \
  --master k8s://https://192.168.49.2:8443 \
  --deploy-mode cluster \
  --name pyspark-example \
  --conf spark.kubernetes.namespace=spark \
  --conf spark.kubernetes.container.image=apache/spark-py:3.5.0 \
  --conf spark.executor.instances=2 \
  file:///C:/Users/dlrla/workspace/python/spark-test/pythonProject/main.py

提示:你需要把命令里的Minikube IP换成自己的,脚本路径也要改成你本地的绝对路径;如果是Windows终端,注意路径分隔符的转换

方案2:调整本地连接方式(适合快速测试)

如果你只是想在本地测试连接集群,需要做以下调整:

  1. 先获取Minikube中Spark Master的内部地址:
    执行kubectl exec -n spark spark-master-<你的pod-id> -- printenv SPARK_MASTER_URL,一般会得到spark://spark-master:7077
  2. 把Minikube的IP和spark-master域名映射到本地:
    打开C:\Windows\System32\drivers\etc\hosts文件,添加一行:192.168.49.2 spark-master(IP替换成你的Minikube IP)
  3. 修改PySpark脚本的Master地址:
    spark = SparkSession.builder \
            .appName("Pyspark example") \
            .master("spark://spark-master:7077") \
            .getOrCreate()
    
  4. 确保本地防火墙没有阻止Spark相关端口的通信(7077、4040等)

三、关于你当前脚本的报错

你运行Python脚本时出现的"The system cannot find the path specified.",本质也是因为本地Spark环境没配置好,PySpark找不到对应的核心运行文件,所以先解决第一部分的环境配置,再调试连接问题。

备注:内容来源于stack exchange,提问作者Kimin Lee

火山引擎 最新活动