Parkiet Apache

Parkiet Apache
Pierwsze wydanie 13 marca 2013 ; 9 lat temu ( 13.03.2013 )
Wersja stabilna
2.9.0 / 6 października 2021 ; 16 miesięcy temu ( 2021-10-06 )
Magazyn
Napisane w Java (implementacja referencyjna)
System operacyjny Międzyplatformowe
Typ DBMS zorientowany na kolumny
Licencja Licencja Apache 2.0
Strona internetowa parkiet .apache .org

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ż

Linki zewnętrzne