🎯 Definicja

Apache Parquet to otwarty, kolumnowy format zapisu danych, zoptymalizowany pod kątem wydajności analityki (OLAP) i kompresji. Jest standardem przechowywania danych w nowoczesnych Data Lake’ach.

🔑 Kluczowe punkty

  • Kolumnowość: Wartości z tej samej kolumny są zapisywane obok siebie. To pozwala na świetną kompresję (bo dane są podobne, np. same daty) i szybkie sczytywanie tylko potrzebnych kolumn (Projection Pushdown).
  • Embedded Schema: Każdy plik zawiera w stopce swoje metadane (nazwy kolumn, typy danych, statystyki min/max).
  • Agnostyczny: Wspierany przez niemal każde narzędzie (Spark, Pandas, Hive, Impala, AWS Athena, Excel).

📚 Szczegółowe wyjaśnienie

Dlaczego CSV jest zły dla Big Data? Bo żeby policzyć średnią wieku z pliku CSV 1TB, musisz przeczytać całe 1TB tekstu, parsować przecinki i wyciągać kolumnę “Wiek”. W Parquet, kolumna “Wiek” jest zapisana w osobnym bloku. Dysk musi odczytać tylko np. 500MB tej jednej kolumny. To daje przyspieszenie rzędu 10x-100x. Dodatkowo, dzięki statystykom (min/max) w nagłówkach bloków, silnik może pominąć całe fragmenty pliku, jeśli wie, że nie ma tam szukanych danych (Predicate Pushdown).

💡 Przykład zastosowania

Tabela sprzedaży: Data, Produkt, Cena, Sklep. Zapytanie: SELECT SUM(Cena) FROM sprzedaz. Parquet pozwala silnikowi odczytać tylko kolumnę Cena, ignorując Produkt czy Sklep. Operacja I/O jest minimalna.

📌 Źródła

👽 Brudnopis

  • Kompresja: Snappy (szybka), Gzip (mocna), Zstd (złoty środek).
  • Row Groups: Dane są dzielone na poziome pasy (np. co 100k wierszy), wewnątrz których są kolumny.
  • Nested Types: Wspiera struktury zagnieżdżone (Map, List, Struct).