Какова наилучшая практика в случае записи текстового вывода в корзину S3?

Мой конвейер (python) записывает текстовые данные, которые считываются из BigQuery. Насколько мне известно, у меня есть два варианта записи текстовых данных в S3.

Первый вариант — это «подкласс Writer» пользовательского приемника, который записывает каждую запись в каталог корзины S3. По моему опыту, эффективность передачи очень низкая. Писатель тратит около секунды на 1 запись (также в моем источнике данных миллионы записей!!)

Второй вариант — отправить текстовые данные в GCS, которые были заранее записаны в GCS. Мне кажется, этот вариант неэффективен. Причина в том, что между GCS и DataFlow возникает ненужный трафик (загрузка/выгрузка). (Мой конвейер не требует хранения текстовых данных в GCS)

Есть ли лучший способ записи в S3, чем мои два варианта?

С уважением.


person KenYamash    schedule 16.11.2016    source источник
comment
Добро пожаловать в StackOverflow! Можете ли вы предоставить более подробную информацию о том, что делает ваше приложение? Например, вы хотите хранить каждую запись в отдельном объекте Amazon S3 или добавлять данные в существующий объект? Можете ли вы вместо этого хранить данные в «локальном» файле, а затем загружать файл, когда в нем есть определенное количество записей? Рассматривали ли вы возможность отправки данных в Amazon Kinesis Firehose для сбора потоковых данных и сохранения их в Amazon S3?   -  person John Rotenstein    schedule 16.11.2016


Ответы (1)


Первый подход написания пользовательского приемника для S3 кажется хорошим. Вы можете использовать буфер для пакетной загрузки записей в S3 вместо записи файла для каждой записи. Если ваш буфер не велик, вы можете напрямую загружать на s3, в противном случае хорошей альтернативой будет использование API многокомпонентной загрузки. Код в gcsio здесь может пригодиться.

Во втором случае вы можете напрямую использовать TextSink для записи в GCS, но вам придется переместить файлы из GCS в S3 как-то позже, если данные должны жить в s3 в конце.

Я также создал https://issues.apache.org/jira/browse/BEAM-994 для отслеживания необходимости поддержки S3

person Sourabh    schedule 16.11.2016