Docker环境下Spark Session构建无报错却卡顿求助
解决Docker环境下Spark Session构建停滞问题
明确Spark Master连接地址
Docker环境中,Spark Driver默认可能无法自动发现Master节点,显式指定Master地址能解决连接停滞问题:spark = ( pyspark.sql.SparkSession.builder .appName('AppName') .master('spark://spark-master:7077') # 替换为你的Spark Master实际容器地址 .config('spark.sql.crossJoin.enabled', 'true') .config('spark.sql.shuffle.partitions', 20) # 先降低分区数减少资源占用 .config('spark.debug.maxToStringFields', 1000) .getOrCreate())同时验证容器间网络连通性,在Driver容器内执行
ping spark-master(替换为你的Master容器名),确认能正常通信。降低资源密集型配置
你设置的spark.sql.shuffle.partitions=2000远超常规测试环境需求,会触发大量资源申请导致停滞。先将该值调整为20~100区间,后续根据实际任务规模再优化。另外可以补充内存配置避免资源耗尽:.config('spark.driver.memory', '2g') .config('spark.executor.memory', '2g')查看Spark日志定位根因
进入Spark Master或Driver容器,查看/opt/spark/logs目录下的日志文件,日志中会记录连接超时、资源不足、HDFS访问失败等具体原因,是排查停滞问题最直接的方式。校验Hadoop集成配置
如果Spark依赖HDFS,需确保Session中配置了正确的HDFS地址:.config('spark.hadoop.fs.defaultFS', 'hdfs://hadoop-namenode:9000') # 替换为你的HDFS NameNode地址同时确认HDFS服务正常运行,能通过容器访问到HDFS文件系统。
调整Docker宿主机资源分配
检查Docker给Spark、Hadoop容器分配的CPU和内存是否充足,宿主机资源不足会导致容器内进程无响应。可以通过Docker Desktop的资源设置调整,或启动容器时用--cpus 2 --memory 4g这类参数指定资源配额。
内容的提问来源于stack exchange,提问作者Pravin
相关产品推荐
相关产品推荐

