Импорт DynamoDB из S3

Недавно я посетил AWS ANZ Database Roadshow 2022 в сиднейском офисе AWS. Одна из сессий, которую я с нетерпением ждал, была посвящена DynamoDB. Как и ожидалось, эта сессия, проведенная одним из архитекторов решений, стала главным событием этого мероприятия.

И каждый год я с нетерпением жду блог Джеффа Бара о Amazon Prime Day и статистику/метрические показатели, связанные с различными сервисами AWS, которые обеспечивают поддержку огромного трафика на сайте Amazon в этот день. DynamoDB обслуживает множество свойств и систем Amazon с высоким трафиком, включая Alexa, сайты Amazon.com и все центры обработки заказов Amazon. В течение Prime Day эти источники совершили триллионы обращений к API DynamoDB. DynamoDB поддерживала высокую доступность, обеспечивая однозначные миллисекундные ответы и достигая пика в 105,2 миллиона запросов в секунду.

Поэтому я внимательно слежу за всеми обновлениями, связанными с DynamoDB и ее возможностями. Одной из таких функций, о которой было объявлено недавно, стал импорт DynamoDB из S3. Это полностью управляемая функция, которая не требует написания кода или управления инфраструктурой. Мне захотелось изучить эту функцию и немного поработать с ней.

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

Импорт DynamoDB из S3 помогает вам массово импортировать терабайты данных из Amazon S3 в новую таблицу DynamoDB без необходимости использования кода или серверов. Данные в S3 должны быть в формате CSV, DynamoDB JSON или ION со сжатием GZIP или ZSTD, или без сжатия. Каждая запись в данных S3 должна иметь ключ раздела и ключ сортировки (необязательно), чтобы соответствовать схеме ключей целевой таблицы.

При возникновении ошибок во время разбора данных или во время импорта для каждой ошибки создается запись в журнале Amazon CloudWatch Logs. Если количество ошибок превысит 10000 — ведение журнала прекращается, но импорт продолжается.

Еще одна важная вещь, которую следует отметить, заключается в том, что функция импорта DynamoDB из S3 не потребляет никаких единиц емкости для записи. Поэтому вам не нужно выделять дополнительную емкость при создании новой таблицы.

Для тестирования этой функции я загрузил набор данных с сайта Kaggle. Этот набор данных состоит из списков всех фильмов и телешоу, доступных на Netflix, вместе с такими деталями, как — актерский состав, режиссеры, рейтинги, год выпуска, продолжительность и т.д. В наборе данных около 9000 записей.

Теперь давайте попробуем использовать эту функцию для импорта вышеуказанного набора данных в таблицу DynamoDB. У меня уже есть ведро S3 под названием dynamodb-import-s3-demo, а CSV-файл набора данных загружен в папку по пути /netflix-shows-movies, как показано ниже:

Из набора данных я буду использовать столбцы title и show_id как Partition Key и Sort Key соответственно для таблицы DynamoDB. Ниже приведен снимок используемого набора данных.

Шаг 1: Далее, в консоли AWS Console я выбираю опцию Imports from S3 в службе DynamoDB.

Шаг 2: Нажмите на кнопку Import from S3, чтобы перейти к опциям импорта.

  • В поле S3 URL введите путь к исходному ведру S3 и префикс в формате URI.
  • Выберите** Этот аккаунт AWS** в качестве владельца ведра.
  • Выберите остальные поля, как показано на изображении ниже, и нажмите кнопку Next:

Шаг 3: На следующем экране: Таблица назначения — новая таблица

  • Имя таблицы — введите имя для таблицы DynamoDB.
  • Ключ раздела — как упоминалось выше, введите название.
  • Ключ сортировки — как упоминалось выше, введите show_id.
  • Для Table Settings оставьте настройки по умолчанию. Таблица DynamoDB будет создана с RCUs и WCUs по умолчанию. Как уже упоминалось ранее, процесс импорта не будет потреблять никакой емкости таблицы.
  • Выберите Далее

Шаг 4: Просмотрите детали и нажмите Импорт

Шаг 5: Создается задание на импорт. Для завершения импорта потребуется некоторое время. Следите за состоянием задания, чтобы оно перешло в статус «Завершено».

Набор данных содержит 8808 записей, и 8807 из них были успешно импортированы. Одна запись не была импортирована, и это было зарегистрировано в группах журнала CloudWatch, как показано ниже:

Ниже приведены записи, которые были импортированы в таблицу DynamoDB в качестве элементов.

Общими ошибками, с которыми мы можем столкнуться, могут быть синтаксические ошибки, проблемы форматирования и записи, в которых отсутствует ключ раздела и ключ сортировки. Пожалуйста, обратитесь к разделу «Ошибки проверки» в Руководстве разработчика для получения более подробной информации.

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

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

Спасибо, что прочитали этот блог. Пожалуйста, делитесь своими комментариями и отзывами. Это помогает мне учиться и развиваться.

Оцените статью
devanswers.ru
Добавить комментарий