Каков наилучший способ скопировать большие CSV-файлы из s3 в красное смещение? - PullRequest
0 голосов
/ 13 марта 2020

Я работаю над задачей копирования файлов CSV из корзины s3 в красное смещение. Я нашел несколько способов сделать это, но я не уверен, какой из них будет лучшим из возможных. Вот сценарий:

Через равные промежутки времени в мое ведро s3 будут добавляться несколько CSV-файлов размером около 500 МБ - 1 ГБ. Данные могут содержать дубликаты. Задача состоит в том, чтобы скопировать данные в таблицу красного смещения, гарантируя, что в красном смещении нет повторяющихся данных.

Вот способы, которые я нашел, которые можно использовать:

  1. Создание AWS лямбда-функции, которая будет запускаться при каждом добавлении файла в корзину s3.

  2. Использование AWS Kinesis

  3. Использование AWS Клей

Я понимаю, что лямбда не должна использоваться для работ, которые занимают более 5 минут. Так стоит ли мне его использовать или просто убрать эту опцию?

Kinesis может обрабатывать большие объемы данных, но лучше ли это делать?

Я не знаком с Glue и Kinesis. Но я читал, что клей может быть медленным.

Если кто-нибудь может указать мне правильное направление, это будет очень полезно.

1 Ответ

1 голос
/ 13 марта 2020

Вы определенно можете заставить его работать с Lambda, если используете StepFunctions и опцию S3 Select для фильтрации подмножеств данных в более мелкие порции. Ваши Шаговые функции будут управлять вашей ETL-оркестровкой, в которой вы будете выполнять свои лямбды, которые выборочно извлекаются из большого файла данных с помощью опции выбора S3. Ваше состояние предварительной обработки - см. Ссылки ниже - может использоваться для определения требований к выполнению, а затем выполнять несколько лямбда-выражений, даже параллельно, если вы используете sh. Эти лямбды будут обрабатывать подмножества данных для удаления дубликатов и выполнять любые другие операции ETL, которые могут вам потребоваться. Затем вы берете обработанные данные и пишете в Redshift. Вот ссылки, которые помогут вам объединить эту архитектуру:

Запуск конечного автомата из события S3

Управление выполнением лямбда-обработки и состоянием рабочего процесса

Использование S3 Select для извлечения подмножеств из больших объектов данных

Кроме того, вот ссылка на Python пример конвейера ETL для CDK, который я встроенный. Вы увидите пример управляемой событиями лямбды S3 вместе с обработкой данных и записью DDB или MySQL. Даст вам представление о том, как вы можете создать комплексные лямбда-выражения для операций ETL. Вам просто нужно добавить слой psycopg2 в ваше развертывание для Redshift. Надеюсь это поможет.

...