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

Microsoft Fabric预览版Notebook会话中Lakehouse数据刷新问题

解决Microsoft Fabric Notebook中PySpark无法获取Lakehouse文件实时修改时间的问题

问题原因

你使用os.stat()或os.path.getmtime()获取的是Spark会话启动时缓存的文件元数据。Fabric会将Lakehouse的Files目录挂载到Spark本地文件系统视图,这个视图是静态缓存的,不会随文件更新自动刷新,导致脚本始终读取会话启动时的旧数据。

解决方案

直接通过Spark底层的Hadoop FileSystem API访问OneLake存储,获取文件的实时状态:

from pyspark.sql import SparkSession

# 获取当前Spark会话实例
spark = SparkSession.builder.getOrCreate()

# 初始化Hadoop文件系统对象
hadoop_fs = spark._jvm.org.apache.hadoop.fs.FileSystem.get(spark._jsc.hadoopConfiguration())

# 替换为你的Lakehouse文件路径,格式:abfss://<工作区名称>@onelake.dfs.fabric.microsoft.com/<Lakehouse名称>/Files/test.csv
target_file_path = "abfss://your_workspace@onelake.dfs.fabric.microsoft.com/your_lakehouse/Files/test.csv"

# 获取文件实时状态
file_status = hadoop_fs.getFileStatus(spark._jvm.org.apache.hadoop.fs.Path(target_file_path))

# 将毫秒级时间戳转换为秒
last_modified_timestamp = file_status.getModificationTime() / 1000

print(f"文件最后修改时间戳:{last_modified_timestamp}")

额外优化

如果需要将时间戳转换为可读格式,可以搭配datetime模块:

from datetime import datetime
formatted_time = datetime.fromtimestamp(last_modified_timestamp).strftime('%Y-%m-%d %H:%M:%S')
print(f"格式化后的最后修改时间:{formatted_time}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:34:57