databricks - смонтированный S3 - как получить метаданные файла, такие как дата последнего изменения (Python)

Я установил ведро s3 в свои блоки данных, и я могу видеть список файлов, и я также могу читать файлы с помощью python

ACCESS_KEY = "XXXXXXXXXX"
SECRET_KEY = "XXXXXXXXXXXXXX"
ENCODED_SECRET_KEY = SECRET_KEY.replace("/", "%2F")
AWS_BUCKET_NAME = "testbucket"
MOUNT_NAME = "awsmount1"

dbutils.fs.mount("s3a://%s:%s@%s" % (ACCESS_KEY, ENCODED_SECRET_KEY, AWS_BUCKET_NAME), "/mnt/%s" % MOUNT_NAME)
display(dbutils.fs.ls("/mnt/%s/data" % MOUNT_NAME))

Я хочу узнать дату последнего изменения файла, который я читаю, я ничего не нашел, кроме опции java Блоки данных читают дату последнего изменения большого двоичного объекта Azure для лазурного большого двоичного объекта. Есть ли в блоках данных собственный параметр Python для чтения метаданных файла.


person Brij Raj Singh - MSFT    schedule 01.07.2019    source источник
comment
Я думаю, что AWS SDK может быть лучшим выбором с датой последнего изменения. Я также не смог найти ничего в CLI или REST API, что могло бы помочь.   -  person Jon    schedule 01.07.2019


Ответы (1)


Если я правильно понимаю, вам нужна дата последнего изменения подключенного файла в блоках данных Azure с использованием собственного SDK Python.

Вот пример кода для получения информации о метаданных из большого двоичного объекта Azure:

from azure.storage.blob import BlockBlobService
block_blob_service = BlockBlobService(account_name='accoutName', account_key='accountKey')
container_name ='containerName'
block_blob_service.create_container(container_name)
generator = block_blob_service.list_blobs(container_name)
for blob in generator:
    lastModified= BlockBlobService.get_blob_properties(block_blob_service,container_name,blob.name).properties.last_modified
    print("\t Blob name: " + blob.name)
    print(lastModified)

вы можете получить более подробную информацию об этом здесь.

Если вы ищете S3, я бы посоветовал вам использовать Boto .oto3 возвращает объект datetime для LastModified, когда вы используете объект python (S3) Object:

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Object.last_modified

Чтобы сравнить LastModified с сегодняшней датой (Python3):

import boto3
from datetime import datetime, timezone

today = datetime.now(timezone.utc)

s3 = boto3.client('s3', region_name='eu-west-1')

objects = s3.list_objects(Bucket='my_bucket')

for o in objects["Contents"]:
    if o["LastModified"] == today:
        print(o["Key"])

Справочная информация

Надеюсь, это поможет.

person Mohit Verma    schedule 01.07.2019