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

Pyspark在ADLS中迭代移动多part文件仅成功1个的问题求解

问题根因
  • 核心触发原因为目标路径缺少末尾目录分隔符:若你的Target_Path是存放文件的目录,末尾未添加/时,第一次移动操作会直接将文件写入为名为Target_Path的单个文件,后续所有移动操作都会因目标路径冲突执行失败,最终仅保留1个移动成功的文件。
  • 其次排查拼写错误:示例代码中源路径写为Soure_Path(缺失字母c),若实际运行代码未修正该拼写,会导致读取的源文件列表数量异常。
  • 其他排查方向:ADLS目标路径无写入权限、路径未携带ADLS协议头(如abfss://、adls://)导致路径解析失败。
修复后代码
import os
cnt = 0 
# 替换为你实际的源路径
source_path = "Source_Path"
# 目标路径末尾必须加/ 标识为目录
target_dir = "Target_Path/"

file_list = [file.path for file in dbutils.fs.ls(source_path) 
  if os.path.basename(file.path).startswith("part-")]

# 调试用:确认读取到的文件数量符合预期
print(f"待移动文件数量:{len(file_list)}")

for i in file_list:
    cnt += 1
    target_full_path = f"{target_dir}Filename_{cnt}.csv"
    # 第三个参数为True表示允许覆盖已存在的文件,避免重复运行时报错
    dbutils.fs.mv(i, target_full_path, True)
额外注意事项
  • 若仍存在文件移动失败的情况,可在循环中添加打印语句,输出每次移动的源路径和目标路径,定位具体失败的文件
  • 涉及ADLS的路径建议使用完整绝对路径,携带存储账户、容器的协议前缀,避免相对路径解析异常
  • 批量移动大量文件时,可添加异常捕获逻辑,避免单个文件移动失败中断整个流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:12:00