我正在尝试获取存储在 ADLS gen2 中的文件的创建时间。该文件由下游进程生成。在databricks中,通过读取文件创建数据框,我需要将文件的创建时间添加为数据框中的列。
我尝试使用 dbutils。但它只是给了我修改时间,如果文件有任何修改,修改时间就会改变。我什至尝试了 os.stat ,它给了我创建时间,但它正在根据对文件的修改而变化,这是意外的。
Dbutils 代码
filepath='文件的挂载路径'
modificationTime=dbutils.fs.ls(文件路径)[0].modificationTime
os.stat代码
import datetime
import os
statinfo = os.stat('/dbfs/'+filepath)
create_date = datetime.fromtimestamp(statinfo.st_ctime)
如有任何帮助,我们将不胜感激
要获取存储在 Azure Data Lake Storage (ADLS) Gen2 中的文件的创建时间,可以使用适用于 Python 的 Azure SDK,而不是依赖
dbutils
或 os.stat
,这有时会产生不一致的结果。 Azure 存储 Blob SDK 提供对创建时间等属性的访问,这些属性作为元数据存储在 Blob 中。您可以使用以下代码获取存储在 ADLS 帐户中的文件的创建时间:
from azure.storage.blob import BlobServiceClient
connection_string = "<connectionString>"
container_name = "<containerName>"
file_path = "<filePath>"
blob_service_client = BlobServiceClient.from_connection_string(connection_string)
blob_client = blob_service_client.get_blob_client(container=container_name, blob=file_path)
properties = blob_client.get_blob_properties()
print(f"File: {file_path}")
print(" Creation Time:", properties.creation_time)
print(" Last Modified Time:", properties.last_modified)
print(" Size (in bytes):", properties.size)
您将得到如下所示的输出:
您将能够在上面的输出中找到
Creation Time
和 Last Modified Time
之间的区别。如果您想在目录中获取 Creation Time
和 Last Modified Time
多个文件,您可以使用以下代码:
from azure.storage.blob import BlobServiceClient
connection_string = "<connectionString>"
container_name = "<containerName>"
directory_path = "<directory>"
blob_service_client = BlobServiceClient.from_connection_string(connection_string)
container_client = blob_service_client.get_container_client(container_name)
files = dbutils.fs.ls("<mountPath>")
for file_info in files:
file_path = f"{directory_path}/{file_info.name}" # Construct relative path within container
blob_client = container_client.get_blob_client(blob=file_path)
try:
properties = blob_client.get_blob_properties()
print(f"File: {file_path}")
print(" Creation Time:", properties.creation_time)
print(" Last Modified Time:", properties.last_modified)
print(" Size (in bytes):", properties.size)
except Exception as e:
print(f"Error retrieving properties for {file_path}: {e}")
您将得到如下所示的输出: