您的错误的原因是您似乎试图调用属于azure.datalake.store.core.AzureDLFileSystem
type 对象的方法DataLakeFileClient
。这就是你得到错误的原因!类型的对象不存在该方法DataLakeFileClient
。
如果你想调用 set_expiry 的方法,你必须首先创建正确的对象类型。
例如在 Gen1 中,首先创建对象,如下所述:
https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-data-operations-python
## Declare variables
subscriptionId = 'FILL-IN-HERE'
adlsAccountName = 'FILL-IN-HERE'
## Create a filesystem client object
adlsFileSystemClient = core.AzureDLFileSystem(adlCreds, store_name=adlsAccountName)
使用此对象,您可以调用
adlsFileSystemClient 与您在代码示例中的完全一样。
set_expiry(path, expiry_option, expire_time=None)
只要确保您尝试在正确类型的对象上调用方法即可。
对于第 2 代:
from azure.storage.filedatalake import DataLakeServiceClient
datalake_service_client = DataLakeServiceClient.from_connection_string(self.connection_string)
# Instantiate a FileSystemClient
file_system_client = datalake_service_client.get_file_system_client("mynewfilesystem")
对于 Gen2,您需要将 blob 设置为过期,如下所示:https ://docs.microsoft.com/en-us/azure/storage/blobs/storage-lifecycle-management-concepts?tabs=azure-portal#expire-基于年龄的数据
根据年龄过期数据
某些数据预计会在创建后数天或数月过期。您可以配置生命周期管理策略以根据数据年龄通过删除使数据过期。以下示例显示了删除所有超过 365 天的块 blob 的策略。
{
"rules": [
{
"name": "expirationRule",
"enabled": true,
"type": "Lifecycle",
"definition": {
"filters": {
"blobTypes": [ "blockBlob" ]
},
"actions": {
"baseBlob": {
"delete": { "daysAfterModificationGreaterThan": 365 }
}
}
}
}
]
}