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

如何在Databricks中用dbutils获取ADLS Gen2文件创建时间并添加至DataFrame

获取ADLS Gen2文件原始创建时间并添加到DataFrame

问题分析

你尝试的dbutils.fs.ls返回的是文件最后修改时间,os.stat的st_ctime是DBFS层的缓存修改时间,都无法获取ADLS Gen2上文件的原始创建时间(该时间不会随后续文件修改而变化)。以下是两种可行解决方案:


方案1:使用Azure Storage Blob SDK直接查询ADLS Gen2元数据

ADLS Gen2原生存储了文件的creation_time属性,可通过Azure SDK直接读取:

  1. 安装依赖(若未安装):
%pip install azure-storage-blob azure-identity
  1. 读取文件原始创建时间:
from azure.storage.blob import BlobServiceClient
from azure.identity import DefaultAzureCredential
import datetime

# 替换为你的ADLS Gen2信息
account_name = "你的ADLS账户名"
container_name = "你的容器名"
# 容器内的文件相对路径(非Mount路径)
file_relative_path = "path/to/target/file.csv"

# 初始化客户端
credential = DefaultAzureCredential()
blob_service_client = BlobServiceClient(
    account_url=f"https://{account_name}.dfs.core.windows.net",
    credential=credential
)

# 获取文件属性
blob_client = blob_service_client.get_blob_client(container=container_name, blob=file_relative_path)
blob_props = blob_client.get_blob_properties()

# 提取原始创建时间
original_creation_time = blob_props.creation_time
  1. 将创建时间添加到DataFrame:
from pyspark.sql.functions import lit

# 读取文件为DataFrame
df = spark.read.csv("/mnt/你的Mount路径/path/to/target/file.csv")

# 新增创建时间列
df_with_creation = df.withColumn("file_creation_time", lit(original_creation_time))

方案2:使用Hadoop Filesystem API获取元数据

无需额外安装SDK,利用Spark底层的Hadoop API读取ADLS Gen2的创建时间:

from pyspark.sql.functions import lit
from org.apache.hadoop.fs import Path
from org.apache.hadoop.conf import Configuration
import datetime

# 文件的DBFS/Mount路径
dbfs_file_path = "/mnt/你的Mount路径/path/to/target/file.csv"

# 获取Hadoop文件系统实例
conf = Configuration()
fs = Path(dbfs_file_path).getFileSystem(conf)

# 获取文件状态,提取原始创建时间
file_status = fs.getFileStatus(Path(dbfs_file_path))
original_creation_time = datetime.datetime.fromtimestamp(file_status.getCreationTime() / 1000)

# 添加到DataFrame
df = spark.read.csv(dbfs_file_path)
df_with_creation = df.withColumn("file_creation_time", lit(original_creation_time))

关键说明

  • ADLS Gen2的creation_time是文件首次上传/生成时的时间,后续修改文件内容或元数据不会改变该值。
  • 方案1需确保Databricks集群有权限访问ADLS Gen2(可通过MSI或服务 principal授权);方案2依赖集群已配置ADLS Gen2的挂载或直接访问权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 21:12:39