Parquet jest formatem pliku open source dostępnym dla każdego projektu w ekosystemie Hadoop. Apache Parquet jest zaprojektowany dla wydajnego, jak również wydajnego, płaskiego, kolumnowego formatu przechowywania danych w porównaniu do plików opartych na wierszach, takich jak CSV lub TSV.
Parquet używa algorytmu rozdrabniania i składania rekordów, który jest lepszy od prostego spłaszczania zagnieżdżonych przestrzeni nazw. Parquet jest zoptymalizowany do pracy ze złożonymi danymi w masie i posiada różne sposoby efektywnej kompresji danych i typów kodowania. Takie podejście jest najlepsze zwłaszcza dla tych zapytań, które muszą odczytać określone kolumny z dużej tabeli. Parquet może odczytać tylko potrzebne kolumny dlatego znacznie minimalizuje IO.
Zalety przechowywania danych w formacie kolumnowym:
- Przechowywanie danych w kolumnach jak Apache Parquet jest zaprojektowane aby przynieść wydajność w porównaniu do plików opartych na wierszach jak CSV. Podczas wykonywania zapytań, magazyn kolumnowy pozwala na bardzo szybkie pominięcie nieistotnych danych. W rezultacie, zapytania agregujące są mniej czasochłonne w porównaniu do baz danych zorientowanych na wiersze. Ten sposób przechowywania przełożył się na oszczędności sprzętowe i zminimalizował opóźnienia w dostępie do danych.
- Apache Parquet jest zbudowany od podstaw. Dlatego też jest w stanie wspierać zaawansowane zagnieżdżone struktury danych. Układ plików danych Parquet jest zoptymalizowany dla zapytań przetwarzających duże ilości danych, w zakresie gigabajtów dla każdego pojedynczego pliku.
- Parquet jest zbudowany tak, aby wspierać elastyczne opcje kompresji i wydajne schematy kodowania. Ponieważ typ danych dla każdej kolumny jest dość podobny, kompresja każdej kolumny jest prosta (co sprawia, że zapytania są jeszcze szybsze). Dane mogą być kompresowane przy użyciu jednego z kilku dostępnych kodeków; w rezultacie, różne pliki danych mogą być kompresowane w różny sposób.
- Apache Parquet działa najlepiej z interaktywnymi i bezserwerowymi technologiami takimi jak AWS Athena, Amazon Redshift Spectrum, Google BigQuery i Google Dataproc.
Różnica pomiędzy Parquetem a CSV
CSV jest prostym i szeroko rozpowszechnionym formatem, który jest używany przez wiele narzędzi takich jak Excel, Google Sheets, i wiele innych, które mogą generować pliki CSV. Pomimo tego, że pliki CSV są domyślnym formatem dla potoków przetwarzania danych, mają one pewne wady:
- Amazon Athena i Spectrum pobierają opłaty w oparciu o ilość danych skanowanych na zapytanie.
- Google i Amazon pobierają opłaty w zależności od ilości danych przechowywanych na GS/S3.
- Google Dataproc pobiera opłaty w oparciu o czas.
Parquet pomógł swoim użytkownikom zmniejszyć wymagania dotyczące przechowywania danych o co najmniej jedną trzecią w przypadku dużych zbiorów danych, dodatkowo znacznie poprawił czas skanowania i deserializacji, a tym samym ogólne koszty.
Poniższa tabela porównuje oszczędności, jak również wzrost prędkości uzyskany przez konwersję danych do Parquet z CSV.
Zbiór danych |
Rozmiar na Amazon S3 |
Czas działania zapytania |
Czas działania zapytania |
Dane zeskanowane |
Koszt |
Dane przechowywane jako pliki CSV |
1 TB |
236 sekund |
1.15 TB |
||
Dane przechowywane w formacie Apache Parquet |
130 GB |
6,78 sekundy |
2.51 GB |
||
Oszczędności |
87% mniej przy zastosowaniu Parquet |
34x szybciej |
99% mniej zeskanowanych danych |
99.7% oszczędności |