Всегда читайте последнюю папку из S3 Bucket в спарк - PullRequest
0 голосов
/ 28 января 2020

Ниже показано, как выглядит структура моей папки s3 bucket,

s3://s3bucket/folder1/morefolders/$folder_which_I_want_to_pick_latest/

$folder_which_I_want_to_pick_latest - эта папка всегда может иметь порядковый номер для каждой новой папки, например: randomnumber_timestamp

Есть ли способ, которым я могу автоматизировать этот процесс, всегда читая самую последнюю папку в s3 из spark в Scala

Ответы [ 2 ]

2 голосов
/ 28 января 2020

Лучший способ работать с такого рода «поведением» - это структурировать ваши данные как секционированный подход, например year=2020/month=02/day=12, где каждый раздел является папкой (в aws-console). Таким образом, вы можете использовать простой filter на spark, чтобы определить последний. (дополнительная информация: https://www.datio.com/iaas/understanding-the-data-partitioning-technique/)

Однако, если вам не разрешено реструктурировать ваше ведро, решение может быть дорогостоящим, если у вас нет указанного c идентификатор и / или ссылка, которую вы можете использовать для расчета вашей новой папки. Помните, что в s3 у вас нет понятия папки, у вас есть только object key (здесь вы видите / и в aws console можно визуализировать как папки), поэтому для расчета самый высокий инкрементный идентификатор в $folder_which_I_want_to_pick_latest в конечном итоге проверяет все объекты, хранящиеся в корзине, и каждый объект-запрос в s3 стоит. Дополнительная информация: https://docs.aws.amazon.com/AmazonS3/latest/user-guide/using-folders.html.

1 голос
/ 28 января 2020

Вот один из вариантов. Подумайте о написании лямбда-функции, которая либо запускается по расписанию (например, если вы знали, что ваши загрузки всегда происходят между 13:00 и 16:00), либо запускается при загрузке объекта S3 (так происходит для каждого объекта, загруженного в folder1/morefolders/).

Лямбда записывает соответствующие части префикса объекта S3 в простую таблицу DynamoDB. Клиент, которому нужно знать последний префикс, будет читать его из DynamoDB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...