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

Spark Streaming运行报错:期望HDFS路径而非本地目录,求解决方案

问题解决:Spark Streaming 本地运行路径错误修复

错误根源

报错核心是org.apache.hadoop.fs.InvalidPathException:Spark 默认将本地临时检查点路径C:\Users\...\Temp\...拼接至HDFS URIhdfs://0.0.0.0:19000/下,形成了非法路径hdfs://0.0.0.0:19000/C:/Users/...。这是因为Spark配置默认指向HDFS,但本地运行时需使用本地文件系统。

两种修复方案

方案1:显式指定本地检查点目录

在writeStream阶段添加本地检查点路径配置,强制Spark使用本地文件系统存储检查点数据:

from pyspark.sql import SparkSession

if __name__ == "__main__":
    print("Application started")

    spark = SparkSession \
        .builder \
        .appName("Socket streaming demo") \
        .master("local[*]")\
        .getOrCreate()

    stream_df = spark\
        .readStream\
        .format("socket")\
        .option("host","localhost")\
        .option("port","1100")\
        .load()

    print(stream_df.isStreaming)
    stream_df.printSchema()

    write_query = stream_df \
        .writeStream\
        .format("console")\
        # 新增:指定本地检查点目录,替换为你本地可读写的路径
        .option("checkpointLocation", "file:///D:/PySparkProject/checkpoint")
        .start()

    write_query.awaitTermination()

    print("Application Completed")

方案2:全局配置默认文件系统为本地

创建SparkSession时,添加配置项修改默认文件系统为本地:

spark = SparkSession \
    .builder \
    .appName("Socket streaming demo") \
    .master("local[*]")\
    # 新增:设置默认文件系统为本地
    .config("fs.defaultFS", "file:///")
    .getOrCreate()

注意事项

  • 确保指定的检查点目录具备读写权限,Windows本地路径格式为file:///C:/xxx,Linux/macOS为file:///home/xxx
  • 测试场景优先选方案1,避免修改全局配置影响其他Spark任务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:48:36