Конкатенация файлов на S3 - PullRequest
       4

Конкатенация файлов на S3

0 голосов
/ 23 октября 2019

Мы получаем несколько файлов в одной папке s3 (130K файлов, общий размер составляет 2 ГБ). Каждый файл содержит данные Json, может содержать одну или несколько записей. Мне нужно объединить эти файлы в один файл Json и сохранить его на s3. Я не хочу загружать файлы на локальную машину, а затем объединять. Есть ли способ сделать это с помощью AWS SDK для Java?

1 Ответ

1 голос
/ 23 октября 2019

Самый простой способ добиться этого - использовать Amazon Athena для чтения и объединения файлов. Athena - это управляемая служба запросов, основанная на Presto , которая может считывать файлы различных форматов.

Поток шагов будет следующим:

  • Создание определения таблицы в Афинекоторый определяет форматы входного файла и расположение входных данных
    • (Вы можете использовать сканер клея AWS, чтобы сделать это за вас)
  • Использовать CREATETABLE AS для запроса исходной таблицы
    • Это позволит извлечь данные из исходных файлов и записать вывод в новое местоположение
    • Вы можете указать формат вывода и расположение

Думайте об Афине как о «слое запросов» поверх Amazon S3. Он считывает входные данные из всех файлов в данном каталоге S3 и может затем вывести результаты обратно на S3. Вы можете сделать простое SELECT *, чтобы скопировать все данные, или вы можете управлять результатами, выбирая только нужные поля и записи (используя SELECT и WHERE).

Афина может быть запущенаиз консоли управления или запускается с помощью обычного пакета AWS SDK (например, Java).

Преимущество использования Athena заключается в том, что нет необходимости загружать исходные файлы и загружать результат - все это будет сделаноАфиной.

Афина взимается в зависимости от данных, прочитанных с диска . Сжатые файлы снижают эту стоимость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...