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

Spark通过变量传递多Parquet文件路径报错,手动粘贴正常求解决

问题分析与解决

核心问题

你拼接出的是带单引号和逗号的整体字符串,但spark.read.parquet()的正确用法是接收多个独立的路径参数,或是路径列表(通过*解包)。当你把拼接后的长字符串传入时,Spark会将其视为单个路径,而路径开头的单引号'属于非法URI字符,因此抛出URISyntaxException。

而手动复制时,你实际上是把每个带引号的路径作为独立参数传递(相当于spark.read.parquet('path1', 'path2', ...)),这符合方法的参数要求,所以能正常执行。

解决方案

直接收集路径到列表中,再传递给read.parquet():

代码修改

# 收集所有路径到列表,无需拼接字符串
paths = [row["path"] for index, row in files.iterrows()]

# 用*解包列表,将每个路径作为独立参数传入
sdf = spark.read.parquet(*paths)

另一种兼容写法

部分Spark版本也支持直接传入路径列表:

sdf = spark.read.parquet(paths)

补充说明

  • 避免手动拼接带引号的字符串,这种方式容易引入语法错误,且不符合Spark API的参数规范。
  • 所有文件schema一致的情况下,Spark会自动合并schema,无需额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:15:33