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

如何在Synapse Notebooks中获取指定路径Blob的上次修改日期

Synapse Notebook获取指定Blob路径下所有文件上次修改时间的实现方案

方案1:使用Azure Blob Storage Python SDK(适合全量、大数量文件场景,性能最优)

Synapse官方运行时已经预装了所需SDK,不需要额外安装包,直接用工作区托管身份鉴权即可,不需要硬编码存储密钥。
代码示例:

from azure.storage.blob import BlobServiceClient
from azure.identity import DefaultAzureCredential
import pandas as pd

# 替换为实际存储账号名称
STORAGE_ACCOUNT = "你的存储账号名"
CONTAINER_NAME = "foo"
TARGET_PATH_PREFIX = "fee/fii/" # 末尾必须加斜杠,避免匹配到同名前缀的无关文件

# 初始化客户端,使用Synapse托管身份自动鉴权
blob_service_client = BlobServiceClient(
    account_url=f"https://{STORAGE_ACCOUNT}.blob.core.windows.net",
    credential=DefaultAzureCredential()
)
container_client = blob_service_client.get_container_client(CONTAINER_NAME)

file_modified_records = []
# 自动分页递归遍历所有匹配前缀的Blob,包含所有层级子文件夹
for blob in container_client.list_blobs(name_starts_with=TARGET_PATH_PREFIX):
    # 跳过分层命名空间下的空目录占位节点
    if blob.size == 0 and blob.name.endswith("/"):
        continue
    file_modified_records.append({
        "file_full_path": blob.name,
        "last_modified_time": blob.last_modified
    })

# 转为DataFrame直接展示或后续处理
result_df = pd.DataFrame(file_modified_records)
display(result_df)

注意事项:

  • 该方案同时兼容普通Blob存储和开启分层命名空间的ADLS Gen2存储
  • 接口采用分页拉取元数据,即使路径下有百万级文件也不会出现内存溢出问题
  • 若无法使用托管身份,可将credential参数替换为存储账号连接字符串或访问密钥,生产环境不推荐硬编码密钥

方案2:使用PySpark内置接口(适合后续需要用Spark处理文件的场景,零额外配置)

如果后续逻辑需要用Spark处理路径下的文件,直接用Spark内置的文件读取接口就能拿到修改时间,不需要额外配置鉴权。
代码示例:

# 替换为实际路径
TARGET_FULL_PATH = "abfss://foo@你的存储账号名.dfs.core.windows.net/fee/fii/"

# 读取路径下所有文件元数据,默认递归遍历所有子文件夹
spark_file_df = spark.read.format("binaryFile").load(TARGET_FULL_PATH)
# 只保留需要的路径、修改时间字段,不加载实际文件内容
result_spark_df = spark_file_df.select("path", "modificationTime")
display(result_spark_df)

注意事项:

  • 该方案不会返回空目录节点,所有记录均为实际存储的文件
  • 文件量级在十万级以上时,性能弱于SDK方案,优势是和Spark生态无缝衔接

常见踩坑点

  • 遍历路径时必须给前缀末尾加斜杠,否则会匹配到同前缀的其他无关文件,比如前缀写fee/fii会把fee/fii_backup/xxx、fee/fii_test.txt这类不属于目标路径的内容也拉取出来
  • 不要不加前缀遍历整个容器,会产生不必要的接口调用,拉取效率极低
  • Blob存储本身没有真实文件夹结构,所有层级都是文件名的前缀,官方没有比前缀匹配更高效的指定路径遍历方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:42:31