Parkiet Apache
Pierwsze wydanie | 13 marca 2013 |
---|---|
Wersja stabilna | 2.9.0 / 6 października 2021
|
Magazyn | |
Napisane w | Java (implementacja referencyjna) |
System operacyjny | Międzyplatformowe |
Typ | DBMS zorientowany na kolumny |
Licencja | Licencja Apache 2.0 |
Strona internetowa |
Apache Parquet to darmowy i zorientowany na kolumny format przechowywania danych typu open source w ekosystemie Apache Hadoop . Jest podobny do RCFile i ORC , innych kolumnowych formatów plików w Hadoop i jest kompatybilny z większością ram przetwarzania danych wokół Hadoop . Zapewnia wydajne kompresji i kodowania danych o zwiększonej wydajności do masowej obsługi złożonych danych.
Historia
Projekt open source mający na celu zbudowanie Apache Parquet rozpoczął się jako wspólny wysiłek Twittera i Cloudera . Parquet został zaprojektowany jako ulepszenie formatu magazynu kolumnowego Trevni stworzonego przez Douga Cuttinga , twórcę Hadoop. Pierwsza wersja, Apache Parquet 1.0, została wydana w lipcu 2013 r. Od 27 kwietnia 2015 r. Apache Parquet jest projektem najwyższego poziomu sponsorowanym przez Apache Software Foundation (ASF).
Cechy
Apache Parquet jest zaimplementowany przy użyciu algorytmu niszczenia i asemblera rekordów, który uwzględnia złożone struktury danych , których można używać do przechowywania danych. Wartości w każdej kolumnie są przechowywane w ciągłych lokalizacjach pamięci, zapewniając następujące korzyści:
- Kompresja według kolumn jest wydajna w przestrzeni dyskowej
- Można zastosować techniki kodowania i kompresji specyficzne dla typu danych w każdej kolumnie
- Zapytania, które pobierają określone wartości kolumn, nie muszą odczytywać całego wiersza, co zwiększa wydajność
Apache Parquet jest zaimplementowany z wykorzystaniem frameworka Apache Thrift , co zwiększa jego elastyczność; może współpracować z wieloma językami programowania, takimi jak C++ , Java , Python , PHP itp.
Od sierpnia 2015 r. Parquet obsługuje platformy przetwarzania dużych zbiorów danych, w tym Apache Hive , Apache Drill , Apache Impala , Apache Crunch , Apache Pig , Cascading , Presto i Apache Spark . Jest to jeden z zewnętrznych formatów danych używanych przez pandas Python .
Kompresja i kodowanie
W Parquet kompresja jest wykonywana kolumna po kolumnie, co umożliwia stosowanie różnych schematów kodowania danych tekstowych i liczb całkowitych. Strategia ta utrzymuje również otwarte drzwi dla nowszych i lepszych schematów kodowania, które mają być wdrażane w miarę ich opracowywania.
Kodowanie słownika
Parquet posiada automatyczne kodowanie słownikowe włączane dynamicznie dla danych o niewielkiej liczbie unikalnych wartości (tj. poniżej 10 5 ), co umożliwia znaczną kompresję i zwiększa szybkość przetwarzania.
Pakowanie bitów
Przechowywanie liczb całkowitych odbywa się zwykle za pomocą dedykowanych 32 lub 64 bitów na liczbę całkowitą. W przypadku małych liczb całkowitych upakowanie wielu liczb całkowitych w tej samej przestrzeni zwiększa wydajność przechowywania.
Kodowanie długości serii (RLE)
Aby zoptymalizować przechowywanie wielu wystąpień tej samej wartości, pojedyncza wartość jest zapisywana raz wraz z liczbą wystąpień.
Parquet implementuje hybrydę pakowania bitów i RLE, w której kodowanie przełącza się na podstawie tego, co daje najlepsze wyniki kompresji. Ta strategia dobrze sprawdza się w przypadku niektórych typów danych całkowitych i dobrze łączy się z kodowaniem słownikowym.
Porównanie
Apache Parquet jest porównywalny z formatami plików RCFile i Optimized Row Columnar (ORC) — wszystkie trzy należą do kategorii kolumnowego przechowywania danych w ekosystemie Hadoop. Wszystkie mają lepszą kompresję i kodowanie z lepszą wydajnością odczytu kosztem wolniejszego zapisu. Oprócz tych funkcji Apache Parquet obsługuje ograniczoną ewolucję schematu , tj. schemat można modyfikować zgodnie ze zmianami w danych. Zapewnia również możliwość dodawania nowych kolumn i scalania schematów, które nie powodują konfliktów.
Apache Arrow został zaprojektowany jako uzupełnienie w pamięci formatów kolumnowych na dysku, takich jak Parquet i ORC. Projekty Arrow i Parquet zawierają biblioteki umożliwiające odczyt i zapis między tymi dwoma formatami. [ potrzebne źródło ]
Zobacz też
- Strzała Apacza
- Świnia Apaczów
- Ul Apache
- Apache Impala
- Wiertło Apache
- Apache Kudu
- Apache Spark
- Oszczędność Apache
- Trino (silnik zapytań SQL)
- Presto (silnik zapytań SQL)
- System wbudowanej bazy danych SQLite