RDS в S3 - преобразование данных AWS - PullRequest
0 голосов
/ 16 мая 2018

У меня около 30 таблиц в моем экземпляре RDS postgres / oracle (еще не определено, является ли он oracle или postgres).Я хочу получить все записи, которые были вставлены / обновлены за последние 4 часа (настраивается), создать CSV-файл, относящийся к каждой таблице, и сохранить файлы в S3.Я хочу, чтобы весь этот процесс был транзакционным.Если при извлечении данных из одной таблицы возникает какая-либо ошибка, я не хочу, чтобы данные, относящиеся к другим 29 таблицам, сохранялись в S3.Данные не очень велики, они должны быть порядка нескольких записей или менее в каждой таблице в течение 4 часов.

Я думаю о том, чтобы в кластере EMR было задание для получения данныхиз RDS создайте CSV для каждой таблицы и опубликуйте все файлы на S3 в конце процесса.Кластер EMR будет уничтожен после публикации данных на S3.Триггер Cloudwatch будет вызывать лямду каждые 4 часа, что приведет к ускорению нового кластера EMR, который выполняет эту работу.

Есть ли альтернативные подходы, которые стоит изучить для этого преобразования?

1 Ответ

0 голосов
/ 16 мая 2018

Взгляните на AWS Glue , который использует EMR под капотом, но вам не нужно заботиться об инфраструктуре и конфигурациях, просто setup crawler и напишите свойЗадание ETL .

Обратите внимание, что AWS Glue не поддерживает предикаты pushdown для соединений JDBC ( в настоящее время только s3 ), поэтому это означает, что сначала будет загружаться вся таблица, а затем - применятьсяфильтрация.

Также вам следует тщательно продумать атомарность, поскольку задание Glue ETL просто обрабатывает данные и записывает их в приемник без транзакций.В случае сбоя он не удалит частично записанные записи, поэтому вы должны управлять им самостоятельно.Есть несколько вариантов, которые я бы рассмотрел:

  1. Записывать данные во временную папку (локальную или s3) для каждого выполнения, а затем перемещать объекты в конечный пункт назначения с помощью команды или копии aws s3 syncданные с помощью TransferManager из AWS SDK
  2. Запись данных в конечный пункт назначения в выделенную папку и в случае сбоя их удаление с помощью CLI или SDK
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...