Сценарий:
У меня есть полуструктурированный набор данных в формате JSON. Я храню 3 подмножества (new_records, upated_records и удаленные_records) из набора данных в 3 различных Amazon DynamoDB таблицах. Запланировано усечение и загрузка ежедневно.
Я пытаюсь создать сопоставление, чтобы получить данные из этих таблиц DynamoDB, добавить несколько столбцов метаданных (date_created, date_modified, is_active) и объединить данные в главном DynamoDB table
Проблемы и проблемы:
Я пробовал AWS Glue - Создан каталог данных для исходных таблиц с использованием Crawler. Я понимаю, что AWS Glue не предоставляет условия для хранения данных в DynamoDB, поэтому я изменил цель на Amazon S3 . Тем не менее, работа AWS Glue приводит к созданию своего рода сокращенной формы данных (объектов паркета) в моем хранилище Amazon S3. У меня ограниченный опыт работы с PySpark, Pig и Hive , поэтому извините, если я не могу четко объяснить.
Быстрое исследование в Google подсказало мне прочитать паркетные объекты, доступные на Amazon S3, используя Amazon Athena или Redshift Spectrum .
Я не уверен, но это похоже на излишество, не так ли?
Я читал о Amazon Data Pipelines , которая предлагает быструю передачу данных между различными AWS сервисами. Хотя я не уверен, предоставляет ли он какой-либо механизм для создания сопоставлений между источником и целью (для добавления дополнительных столбцов) или он сразу же выгружает данные из одного сервиса в другой?
Может кто-нибудь намекнуть на ясный и minimalisti c решение?
- Обновление -
Мне удалось объединить данные из Amazon DynamoDB в Amazon Redshift с помощью AWS Glue, который оказался на самом деле довольно просто.
Однако, с Amazon Redshift, есть несколько характерных проблем c - его реляционная природа и неспособность напрямую выполнить single merge
или upsert
для обновления таблицы - вот несколько важных вещей, которые я хотел бы ' Я рассматриваю здесь.
Я рассматриваю возможность использования Amazon ElasticSearch для индексации и консолидации данных из Amazon DynamoDB.