Внедрение CDC в Amazon S3

Я довольно новичок в облачном пространстве. В рамках нашего текущего проекта мы пытаемся создать озеро данных в корзинах Amazon S3. Будет еще один уровень S3, который будет содержать CDC, произошедший на предыдущем уровне. Команда архитекторов предлагает использовать Talend или Streamsets. Есть ли другой способ реализации CDC из S3 в другую корзину S3?


person vvazza    schedule 29.01.2020    source источник
comment
Ваш вопрос очень высокого уровня. Например, неясно, что вы имеете в виду под способом, которым CDC может быть реализован из s3 в другую корзину S3. Не могли бы вы отредактировать свой вопрос и предоставить более подробную информацию о том, чего вы на самом деле пытаетесь достичь? (Пожалуйста, будьте как можно более конкретными, примеры тоже хороши.)   -  person John Rotenstein    schedule 30.01.2020
comment
Для тех, кто не знает, что означает CDC, это сбор данных об изменениях.   -  person jarmod    schedule 30.01.2020
comment
@JohnRotenstein - Спасибо за ваш комментарий. Извините за неясность в моем вопросе. Допустим, есть файл клиента, который ожидается каждый месяц с изменениями. Сначала файлы будут загружены в S3. На следующем уровне S3 будет кураторский уровень, содержащий все исторические изменения (тип 2). Источник -> S3 (Инкрементные файлы) -> S3 (Тип 2)   -  person vvazza    schedule 30.01.2020


Ответы (2)


Внедрение CDC или исправление CDC всегда является важной задачей при извлечении данных из транзакционных источников. В то время как объекты в S3 являются неизменяемыми, S3 не предоставляет ничего собственного для слияния захваченных данных об изменениях (CDC). Существует несколько способов исправления CDC в S3 или AWS-Data-Lakes.

Во-первых, вам нужно убедиться, что ваш конвейер инструмента ETL (Stream-sets/NiFi/Sqoop) должен иметь возможность извлекать обновленные транзакции/записи из исходной системы (либо с помощью столбца last_modified_date и т. д., либо с помощью журналов транзакций) и поместите его в тот же путь сравнения s3 или в другое ведро s3 (CDC-delta).

Теперь, чтобы объединить эту дельту (CDC) с базовой таблицей, вы можете использовать любой из подходов, упомянутых ниже:

  1. Если вы используете AWS EMR или Spark в своей среде, я бы рекомендовал использовать Apache-hudi. Теперь с открытым исходным кодом, но он был разработан Uber ранее для предоставления возможности транзакционных таблиц в озерах данных. У него есть возможность объединить исправление CDC с базовыми данными даже в сценариях реального времени, что впоследствии может сэкономить ваши усилия по реализации лямбда-архитектуры в вашем озере данных. Перейдите по этой ссылке — https://aws.amazon.com/blogs/aws/new-insert-update-delete-data-on-s3-with-amazon-emr-and-apache-hudi/
  2. Недавно Data Bricks запустили одну замечательную функцию — Delta Lakes. Такой подход к использованию дельта-озёр действительно великолепен и дает вам нестандартную производительность. Дельта-озера обеспечивают функциональность транзакций ACID для вашего озера данных и обеспечивают более высокую производительность как в потоковых, так и в пакетных сценариях. Перейдите по этим ссылкам, где дельта-озеро было реализовано с помощью AWS DMS и S3. https://databricks.com/blog/2019/07/15/migrating-transactional-data-to-a-delta-lake-using-aws-dms.html https://databricks.com/blog/2019/03/19/efficient-upserts-into-data-lakes-databricks-delta.html
  3. Еще один способ: вы можете написать свои собственные искровые задания для выполнения этой функции, как описано в приведенной ниже ссылке, но это медленная и дорогостоящая операция, если ваш набор данных большой, и вам может понадобиться какой-то другой метод в случае реального Исправление CDC во время. Перейдите по ссылке - изменить сбор данных в искре
person Nitesh Saxena    schedule 15.05.2020

Вы должны использовать инструмент ETL/ELT для захвата CDC. Нет никакого способа (насколько мне известно) S3 может справиться с этим самостоятельно.

Однако вы также можете рассмотреть AWS Glue или Matillion, поскольку они являются родными для AWS и, следовательно, совместимость может быть лучше, чем у Talend (P.S. Я не использовал Talend).

person SwapSays    schedule 30.01.2020
comment
Спасибо, Свапнил! Рассмотрю Glue или Matilion, если они смогут работать с CDC в S3. - person vvazza; 30.01.2020