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

Databricks导入同结构多CSV文件合并为单表及路径问题排查

Databricks合并同结构CSV文件:路径错误修复与优化方案

常见路径错误原因

  • Databricks工作区路径必须使用绝对路径格式,正确前缀为/Workspace/(例如/Workspace/Users/your-email@domain.com/Data/),而非自定义的模糊路径描述
  • 路径大小写敏感,需严格匹配目录/文件名的大小写
  • 当前执行用户无目标目录的读取权限

修正后的代码(含效率优化)

from pyspark.sql import SparkSession
from pyspark.sql.functions import col

# Databricks环境下可省略SparkSession初始化,默认已提供
spark = SparkSession.builder.appName("CombineCSVFiles").getOrCreate()

# 替换为你的工作区绝对路径
workspace_path = "/Workspace/Users/your-email@domain.com/Data/"

# 直接读取整个目录下的CSV文件(Spark自动合并同结构文件,无需循环读取)
combined_df = spark.read.option("header", "true") \
    .option("inferSchema", "false")  # 若已知字段类型,建议手动指定Schema以避免推断错误
    .csv(workspace_path)

# 转换datetime列为Timestamp类型
combined_df = combined_df.withColumn("datetime", col("datetime").cast("timestamp"))

# 按datetime字段排序
sorted_df = combined_df.orderBy(col("datetime"))

# 预览合并结果
sorted_df.show()

# 保存为Delta表(添加overwrite模式避免重复运行时报错)
sorted_df.write.format("delta").mode("overwrite").saveAsTable("combined_sorted_table")

关键优化与验证说明

  1. 直接读取目录:Spark原生支持读取目录路径,自动遍历所有同结构CSV并合并,比循环读取+Union更高效,还能避免单个文件路径的拼写错误
  2. 路径验证:若仍不确定路径是否正确,可先执行以下代码确认目录内容:
display(dbutils.fs.ls(workspace_path))
  1. Schema控制:如果已知CSV的字段结构,建议手动定义Schema(例如.schema(your_custom_schema)),禁用自动推断可提升读取速度并保证类型一致性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 03:40:03