Как эффективно читать сжатый лог файл с S3 бакета в Ruby?

На бакете S3 находится сжатый файл размером до 20 ГБ, сжатый Zstd. Расжатый контент представляет из себя крупный лог файл (текстовый), который нужно обработать построчно.

Можно ли читать поблочно?
Идеально, если можно использовать как экземпляр от класса File, который умеет читать файл построчно.
Тогда можно просто читать:
file.each_line do |line|
  process line
end


Необходимо наиболее эффективно (с точки зрения использования CPU/Mem/Disk/Net) читать файл.
Среда исполнения: Линукс. Рассматривается Docker, так что можно потенциально включить необходимое ПО.

Добавлено
Скачивать файл на локальную файловую систему может быть долго. Может, можно считывать напрямую с S3?
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Фреймворк Apache Spark судя по документации умеет работать с zstd.

https://spark.apache.org/docs/latest/configuration.html

Я имею в виду что он может извлекать сведентья из архива не распаковывая.
Но если выбирать между форматами то я-бы посоветовал перепаковать в bzip2.
Он судя по документации - splittable, тоесть несколько Workers смогут работать
с архивом одновременно и независимо и таким образом ваш парсер будет быстрее в разы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы