Как выбрать правильный кодек сжатия
Расскажу, как я однажды выстрелил себе в ногу через Gzip.
Начиналось всё невинно. Мы строили новый пайплайн данных — ежедневная загрузка CSV-файлов от команды выше по потоку, они падали в Azure Blob Storage, а дальше уходили в Apache Spark-джобу. Ты наверняка строил что-то похожее.
И потому что мне казалось, что я поступаю умно — экономлю на хранении, срезаю время на передачу по сети, держу файлы аккуратными (если честно, точную причину уже не вспомню) — я сказал команде-поставщику данных: «Слушайте, сжимайте файлы через Gzip перед тем, как класть их в object storage». Они сказали «окей». Я сказал «отлично».
Спустя пару недель — запахло жареным.
Джобы стали тормозить. Стейджи зависали — половина тасков застревала на "0%", остальные завершались за секунды. Экзекьюторы рандомно поднимались, читали один файл — и сидели без дела.
Сначала я подумал, что где-то накосячил с партиционированием. Может, не хватало shuffle-памяти. Может, автоскейлинг снова был пьян. Ты знаешь, как это бывает — обвинить буквально всё, кроме очевидного — разве не первое правило software engineering?
This is a premium deep-dive
You just read the free excerpt. The full analysis continues on Substack.
Read full article → Or subscribe to get all premium posts