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

Azure Databricks:无需循环为DataFrame添加源文件名列

解决方案

要在批量读取目录下的JSON文件时为每条记录添加源文件完整路径,你需要使用Spark内置的input_file_name()函数,直接引用file.name会报错是因为该变量仅在数据源扫描阶段的特定上下文可用,无法在读取完成后的DataFrame操作中使用。

正确代码实现

from pyspark.sql.functions import input_file_name

filePath = '/mnt/mypath/'
# 批量读取目录下的多行JSON文件
dfReadFHIR_raw = spark.read.option("multiline", "true").json(filePath)
# 添加源文件路径列
df_with_source = dfReadFHIR_raw.withColumn("RecordSource", input_file_name())

说明

  • input_file_name()是Spark SQL提供的内置函数,会自动为每条记录关联其对应的源文件完整路径,无需循环处理单个文件,完全保留批量读取的性能优势。
  • 保持multiline="true"的配置,确保能正确解析每个文件中的多行JSON结构。

运行上述代码后,你将得到包含RecordSource列的DataFrame,其中每条记录的该列值对应其来源文件的完整路径,与你期望的输出格式一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:40:43