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

Azure Databricks Scala:无需Union/Join合并多类别Parquet至单DataFrame

批量读取多目录Parquet数据到单个DataFrame(Scala + Azure Databricks)

你不需要写循环,Spark原生支持通配符路径来批量读取数据,这比循环+Union高效得多,完全符合你的需求——不用Union/Join,还能自动适配未来Categories的增减。

核心解决方案:通配符路径读取

直接用*匹配India下的所有Categories目录,Spark会自动遍历所有匹配路径并合并成单个DataFrame:

// Databricks中SparkSession已自动初始化,无需手动创建
val allCategoriesDF = spark.read.parquet(
  "/mnt/adls/Centrallake/ExternalSources/Nilesh/BlobFileShare/India/*/Processed_Parquet"
)

// 查看数据和Schema
allCategoriesDF.show(5)
allCategoriesDF.printSchema()

处理Schema不一致的情况

如果不同Categories下的Parquet文件Schema有差异(比如新增/缺失列),可以开启Schema合并选项,自动兼容不同结构的数据:

val allCategoriesDF = spark.read
  .option("mergeSchema", "true")
  .parquet("/mnt/adls/Centrallake/ExternalSources/Nilesh/BlobFileShare/India/*/Processed_Parquet")

为什么不用循环?

循环读取每个目录再合并需要手动调用unionAll/union,不仅代码繁琐,性能也不如Spark原生的批量读取——Spark会对通配符路径做优化,一次性扫描所有文件,避免多次IO操作。而且通配符路径能自动适配Categories的增减,不需要修改代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:15:44