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

如何将PySpark作为Python脚本运行?运行日志问题求助

正确运行PySpark Python脚本的解决方案

我来帮你一步步梳理问题,搞定这个PySpark+Flask脚本的运行:

先修正代码里的两个致命小问题

你的代码里有两处很容易忽略的错误,直接导致脚本跑不起来:

  • 笔误问题:if __name__ == '__main_': 这里少了一个下划线,必须写成 if __name__ == '__main__':,这是Python脚本入口的标准写法
  • 端口冲突:Flask设的8080端口正好是Spark Web UI的默认端口,两个服务会抢端口,建议改成5000、8081这类没被占用的端口

修正后的完整代码:

import findspark
# 如果findspark没自动找到Spark路径,可以手动指定
findspark.init("D:/opt/spark/spark-2.2.0-bin-hadoop2.7")
from pyspark import SparkContext
sc = SparkContext('local', appName='FlaskPySparkDemo')  # 给Spark任务起个名字,方便日志识别
from flask import Flask, request
app = Flask(__name__)

@app.route('/', methods=['POST'])
def toyFunction():
    return 'HELLO WORLD'

if __name__ == '__main__':  # 修复下划线笔误
    app.run(port=5000)  # 修改端口避免冲突

正确的运行步骤

  1. 打开命令提示符,切换到你的脚本app.py所在的目录
  2. 直接执行命令:python app.py

关于日志输出的说明

你看到的Using Spark's default log4j profile: org/apache/spark/log4j-def...是正常的Spark初始化日志,说明PySpark已经成功加载了,不是错误哦!如果觉得日志太啰嗦,可以去Spark安装目录的conf文件夹里,修改log4j.properties文件,把日志级别调低(比如从INFO改成WARN)。

额外小建议(Spark 2.0+版本适用)

在Spark 2.0及以上版本,官方更推荐使用SparkSession作为统一的入口,比单独用SparkContext更灵活,读写DataFrame也更方便,替换后的代码片段:

import findspark
findspark.init("D:/opt/spark/spark-2.2.0-bin-hadoop2.7")
from pyspark.sql import SparkSession
# 初始化SparkSession,同时也会创建SparkContext
spark = SparkSession.builder.master("local").appName("FlaskPySparkDemo").getOrCreate()
sc = spark.sparkContext  # 如果你还需要用到SparkContext的话

这样调整后,你的脚本就能正常运行了,用POST请求访问http://localhost:5000就能收到返回的HELLO WORLD啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:32:16