2016-11-16 18 views
0

My Pipeline (python) пишет текстовые данные, которые читаются из BigQuery. У меня есть два варианта для ввода текстовых данных в S3.Какова наилучшая практика в случае ввода текста в ведро S3?

Первый вариант - «Подкласс подзаголовка» пользовательского Sink записывает каждую запись в каталог it2 S3. Кажется, эффективность передачи очень низкая по моему опыту. Писатель тратит около секунды на 1 запись. (Также у My datasouce есть миллионы записей!)

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

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

С уважением.

+0

Добро пожаловать в StackOverflow! Можете ли вы предоставить более подробную информацию о том, что делает ваше приложение? Например, хотите ли вы сохранить каждую запись в отдельном объекте Amazon S3 или добавить данные к существующему объекту? Можете ли вы вместо этого хранить данные в «локальном» файле, а затем загружать файл, когда у него есть определенное количество записей? Рассматривали ли вы отправку данных в [Amazon Kinesis Firehose] (http://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) для сбора потоковых данных и сохранения их в Amazon S3 ? –

ответ

1

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

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

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