微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Python SDK在Azure数据湖中创建的文件上设置到期日期?

如何解决如何使用Python SDK在Azure数据湖中创建的文件上设置到期日期?

我正在使用Python 3.8和第2代Azure数据湖。我想为我保存在数据湖上的文件设置过期时间。之后-azure.datalake.store.core.AzureDLFileSystem类| Microsoft文档,我尝试了以下操作

            file_client = directory_client.create_file(filename)
            file_client.upload_data(
                data,overwrite=True
            )
            ts = time.time() + 100
            file_client.set_expiry(path=path,expire_time=ts)

但出现错误

AttributeError: 'DataLakeFileClient' object has no attribute 'set_expiry'

在数据湖上创建文件时设置到期时间的正确方法是什么?

解决方法

发生错误的原因是,您似乎试图在类型azure.datalake.store.core.AzureDLFileSystem的对象上调用属于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)

只需确保您尝试在正确类型的对象上调用方法。

对于Gen 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-data-based-on-age

根据年龄过期数据

某些数据可能会在创建后的几天或几个月后过期。您可以 配置生命周期管理策略以通过删除使数据过期 根据数据时代。以下示例显示了删除的策略 所有超过365天的区块Blob。

{
  "rules": [
    {
      "name": "expirationRule","enabled": true,"type": "Lifecycle","definition": {
        "filters": {
          "blobTypes": [ "blockBlob" ]
        },"actions": {
          "baseBlob": {
            "delete": { "daysAfterModificationGreaterThan": 365 }
          }
        }
      }
    }
  ]
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。