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

如何通过Spark Connect从笔记本连接树莓派Docker部署的Spark

树莓派Docker版Spark+Spark Connect远程连接简易指南

一、修正Docker Compose配置

你的Spark Connect服务默认只监听容器内部的localhost,外部设备根本连不上,得修改启动命令让它监听容器所有网卡:

找到spark-connect服务的command部分,替换成以下内容:

"/opt/spark/sbin/start-connect-server.sh --jars /opt/spark/jars/spark-connect_2.12-3.5.1.jar --host 0.0.0.0 --port 15002 && tail -f /dev/null"

新增的--host 0.0.0.0让服务对外部开放,--port 15002明确端口(和你配置的端口映射保持一致)。

改完后重启服务:

docker-compose down && docker-compose up -d

二、获取树莓派的局域网IP

在树莓派终端执行以下命令,拿到它的局域网IP(比如192.168.1.100):

hostname -I

注意:不能用localhost,这是你笔记本本地的地址,必须用树莓派的实际IP。

三、本地笔记本连接操作

  1. 确保本地PySpark版本和Spark服务器完全一致(都是3.5.1),版本不匹配会直接导致连接失败,安装时指定版本:
pip install pyspark==3.5.1
  1. 修改连接代码,把localhost替换成树莓派的IP:
from pyspark.sql import SparkSession

spark = SparkSession.builder.remote("sc://<树莓派IP>:15002").getOrCreate()

# 测试连接是否正常,执行简单命令验证
df = spark.range(10)
df.show()

将<树莓派IP>替换成你刚才获取到的实际地址。

四、常见问题排查

  • 端口不通:先在笔记本上ping树莓派IP确认网络可达,再用nc工具测试15002端口:
nc -zv <树莓派IP> 15002

如果不通,检查树莓派防火墙(比如ufw)是否开放15002端口,或者通过docker ps查看spark-connect容器的PORTS列,确认是否显示0.0.0.0:15002->15002/tcp。

  • 版本不匹配:本地PySpark的主版本和小版本必须和服务器完全一致,哪怕差0.0.1都可能出问题。
  • Jar包无需手动挂载:官方apache/spark:3.5.1镜像已经自带Spark Connect的依赖包,你可以尝试去掉volumes里的jar挂载配置,避免路径错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 21:13:20