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

本地运行PySpark时读取CSV文件失败,执行无响应

解决Spark本地Windows环境读取CSV卡死问题

可能的原因及修复步骤

1. 修正文件路径格式

Windows系统的路径分隔符为反斜杠\,单正斜杠的相对路径可能出现解析异常,建议改用以下两种方式:

  • 使用绝对路径:
staticDataFrame = spark.read.format("csv")
    .option("header", "true")
    .option("inferSchema", "true")
    .load("C:/your-full-path/data/retail-data/by-day/*.csv")
  • 使用原始字符串格式的相对路径:
staticDataFrame = spark.read.format("csv")
    .option("header", "true")
    .option("inferSchema", "true")
    .load(r".\data\retail-data\by-day\*.csv")

2. 禁用Schema自动推断

inferSchema参数需要扫描全量数据推断字段类型,Windows环境下可能因文件系统交互问题卡住。建议手动定义Schema跳过推断:

from pyspark.sql.types import StructType, StructField, StringType, IntegerType, DoubleType

# 示例Schema,可根据实际CSV字段调整
staticSchema = StructType([
    StructField("InvoiceNo", StringType(), True),
    StructField("StockCode", StringType(), True),
    StructField("Description", StringType(), True),
    StructField("Quantity", IntegerType(), True),
    StructField("InvoiceDate", StringType(), True),
    StructField("UnitPrice", DoubleType(), True),
    StructField("CustomerID", IntegerType(), True),
    StructField("Country", StringType(), True)
])

staticDataFrame = spark.read.format("csv")
    .option("header", "true")
    .schema(staticSchema)
    .load("./data/retail-data/by-day/*.csv")

3. 调整Spark及Java环境配置

  • 确认本地Spark使用的Java版本为8或11(Spark 3.x系列仅推荐这两个版本,高版本易出现兼容问题)。
  • 加大Spark驱动内存,避免内存不足导致假死:
from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("RetailDataLoad") \
    .config("spark.driver.memory", "4g") \
    .getOrCreate()

4. 检查文件状态

  • 确认CSV文件未被其他程序占用(如Excel打开文件),导致Spark无法读取。
  • 验证单个CSV文件是否损坏:用记事本打开文件,检查是否存在格式异常、超大行等问题。

5. 临时关闭Windows Defender实时保护

Windows Defender的实时扫描可能拦截Spark读取文件的操作,临时关闭后再测试程序运行情况。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 14:06:05