Windows环境下PySpark任务无法显示在Spark History Server的问题求助
我之前在Windows环境下搭建Spark History Server时也碰到过一模一样的问题,结合你的操作步骤,给你几个具体的排查和解决方向:
检查事件日志路径的正确性
你之前尝试的file:///D:///tmp///spark-events路径有多余的斜杠,Windows下正确的格式应该是file:///D:/tmp/spark-events。另外务必确认D:/tmp/spark-events这个文件夹已经手动创建,并且你的Windows用户对该文件夹有读写权限(右键文件夹→属性→安全选项卡,确保当前用户有写入权限)。验证Spark应用是否生成了事件日志
运行完PySpark程序后,直接打开D:/tmp/spark-events文件夹,查看是否生成了以app-开头的日志文件(比如app-20240520123456-0000)。如果没有任何日志文件,说明你的Spark应用并没有成功写入事件日志,问题出在应用配置上:- 可能是
spark-defaults.conf没有被正确加载(比如Spark读取的是其他路径下的配置文件),建议在PySpark代码中显式配置事件日志参数,确保应用启动时启用日志:from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("TestHistoryServer") \ .config("spark.eventLog.enabled", "true") \ .config("spark.eventLog.dir", "file:///D:/tmp/spark-events") \ .getOrCreate() # 你的业务代码... spark.stop() # 务必调用stop()确保应用正常结束,生成完整日志 - 注意:Spark只有在应用完全结束后才会生成完整的事件日志,运行中的应用只能在
localhost:4040查看,结束后才会同步到History Server。
- 可能是
确认History Server读取的日志路径正确
查看History Server启动时的日志,寻找类似Logging events to directory的条目,确认它读取的路径和你配置的spark.eventLog.dir一致。如果不一致,说明启动History Server时没有加载到正确的spark-defaults.conf:- 确保你是在
SPARK_HOME目录下执行启动命令,或者显式指定配置文件路径:spark-class org.apache.spark.deploy.history.HistoryServer --properties-file C:\path\to\spark\conf\spark-defaults.conf
- 确保你是在
检查History Server的扫描机制
如果日志文件已经存在但History Server没显示,可以尝试重启History Server,或者检查日志中是否有Scanning directory相关的报错,比如路径无法访问的提示。另外,Windows下有时候会因为文件锁定问题导致History Server无法读取日志,确保没有其他程序占用该文件夹下的日志文件。
内容的提问来源于stack exchange,提问作者Madhuchaitanya Joshi

