.NET Spark连接被目标计算机拒绝问题求助(Windows 11环境)
.NET Spark 连接被拒绝(127.0.0.1:xxxx)问题排查与解决
问题根源分析
.NET Spark后端服务未启动/关联失败
.NET Spark依赖专属的dotnet-spark后端服务实现与Spark集群的通信。如果该服务未启动,或启动时端口配置与应用不一致,即使手动修改端口环境变量,也会触发连接拒绝错误。本地Spark集群未正常运行
Windows本地模式下,必须确保Spark master和worker节点已启动。若集群未运行,应用无法建立通信链路,换端口也无法解决根本问题。系统权限或防火墙拦截
Windows 11的UAC权限限制、防火墙规则可能拦截.NET Spark的网络请求,导致连接被拒绝。
解决步骤
启动并关联.NET Spark后端服务
打开命令提示符,执行以下命令启动后端服务(替换为你的应用路径):dotnet spark submit --master local[*] --class org.apache.spark.deploy.dotnet.DotnetRunner path/to/your/MySparkApp.dll或在Visual Studio项目属性中,设置调试启动命令为
dotnet spark submit,并配置对应参数,确保后端服务与应用同步启动。验证本地Spark集群状态
访问Spark Web UI(默认地址http://localhost:4040)确认集群正常运行。若未启动,进入Spark安装目录执行:.\bin\spark-shell.cmd等待集群初始化完成后再运行应用。
调整系统权限与防火墙设置
- 右键Visual Studio选择「以管理员身份运行」,避免UAC权限限制;
- 检查Windows防火墙规则,允许
dotnet.exe和java.exe(Spark依赖Java)的网络连接,或临时关闭防火墙测试。
统一端口配置
取消代码中Environment.SetEnvironmentVariable的注释,同时确保后端服务使用相同端口:Environment.SetEnvironmentVariable("DOTNETBACKEND_PORT", "56511");在命令行启动时同步设置环境变量:
set DOTNETBACKEND_PORT=56511 dotnet spark submit --master local[*] --class org.apache.spark.deploy.dotnet.DotnetRunner path/to/your/MySparkApp.dll或在Visual Studio项目属性→调试→环境变量中添加
DOTNETBACKEND_PORT=56511,保证应用与后端服务端口一致。
用户提供的代码
using Microsoft.Spark.Sql; using System; using Newtonsoft.Json.Linq; using static Microsoft.Spark.Sql.Functions; namespace MySparkApp { class Program { static void Main(string[] args) { //Environment.SetEnvironmentVariable("DOTNETBACKEND_PORT", "56511"); // Create Spark session SparkSession spark = SparkSession .Builder() .AppName("word_count_sample") .GetOrCreate(); // Create initial DataFrame string filePath = args[0]; DataFrame dataFrame = spark.Read().Text(filePath); //Count words DataFrame words = dataFrame .Select(Split(Col("value"), " ").Alias("words")) .Select(Explode(Col("words")).Alias("word")) .GroupBy("word") .Count() .OrderBy(Col("count").Desc()); // Display results words.Show(); // Stop Spark session spark.Stop(); } } }
内容的提问来源于stack exchange,提问作者jad
相关产品推荐
相关产品推荐

