Попытка объединить несколько таблиц Amazon DynamoDB в одну - PullRequest
0 голосов
/ 09 марта 2020

Сценарий:

У меня есть полуструктурированный набор данных в формате 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.

1 Ответ

0 голосов
/ 09 марта 2020

Я не уверен насчет ваших потребностей и предположений. Но позвольте мне поделиться своими мыслями, которые могут помочь!

  1. Почему вы планируете эту миграцию? Подумайте об этом внимательно.
  2. Переходя от 3 таблиц к 1 таблице, размер таблицы не должен быть проблемой для DynamoDB. Но подумайте о емкости блока чтения / записи.
  3. Афина - хороший вариант, вы напишет SQL для запроса ваших данных, заплатит на основе данных, отсканированных по вашему запросу, ... Но у Афины есть 30-минутный тайм-аут запроса. (Я думаю, что вы можете запросить увеличение за это, не уверен!)
  4. Я думаю, что стоит попробовать конвейеры данных. Да, вы можете обрабатывать данные во время их перемещения.
...