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

如何用Spark递归读取多级子目录下指定名称的CSV文件?

解决方案

问题根源

你的代码存在两个关键问题:

  1. 参数名拼写错误:Spark的递归查找参数是**recursiveFileLookup**(注意Lookup的首字母L大写),你写成了recursiveFilelookup,导致参数未生效。
  2. 路径格式与参数冲突:当启用recursiveFileLookup时,无需在路径中添加/**/,否则会引发路径解析异常。

正确实现方式

方式一:修正参数名 + 简化路径

直接指定根目录,结合recursiveFileLookup递归遍历所有子目录下的X01.csv:

root_path = "rootpath"
df = spark.read.format("csv") \
    .option("recursiveFileLookup", "true") \
    .option("header", "true") \
    .load(f"{root_path}/X01.csv")

方式二:使用递归Glob路径(无需额外参数)

利用Spark支持的**递归通配符,直接匹配所有层级子目录下的目标文件:

df = spark.read.format("csv") \
    .option("header", "true") \
    .load("rootpath/**/X01.csv")

补充说明

  • 若需匹配所有以X开头的CSV文件(如X01.csv、X02.csv),只需将文件名通配符改为X*.csv即可。
  • 确保你的Spark版本为2.4及以上,该版本才支持recursiveFileLookup参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:15:51