Zarówno ORC jak i Parquet są popularnymi open-source’owymi formatami przechowywania plików kolumnowych w ekosystemie Hadoop i są dość podobne pod względem wydajności i szybkości, a przede wszystkim zostały zaprojektowane w celu przyspieszenia obciążeń roboczych związanych z analityką dużych danych. Praca z plikami ORC jest tak samo prosta jak praca z plikami Parquet w tym, że oferują one wydajne możliwości odczytu i zapisu w stosunku do ich odpowiedników opartych na wierszach. Oba mają swój udział w plusach i minusach, i trudno jest określić, który z nich jest lepszy od drugiego. Przyjrzyjmy się lepiej każdemu z nich. Zaczniemy najpierw od ORC, a następnie przejdziemy do Parquet.

ORC

ORC, skrót od Optimized Row Columnar, to darmowy i otwarty format kolumnowy pamięci masowej zaprojektowany dla obciążeń Hadoop. Jak sama nazwa wskazuje, ORC jest samoopisującym się, zoptymalizowanym formatem plików, który przechowuje dane w kolumnach, co umożliwia użytkownikom odczytanie i dekompresję tylko tych fragmentów, których potrzebują. Jest to następca tradycyjnego formatu Record Columnar File (RCFile), zaprojektowany w celu przezwyciężenia ograniczeń innych formatów plików Hive. Dostęp do danych zajmuje znacznie mniej czasu, a także zmniejsza ich rozmiar nawet o 75 procent. ORC zapewnia bardziej wydajny i lepszy sposób przechowywania danych, do których dostęp uzyskuje się za pośrednictwem rozwiązań SQL-on-Hadoop, takich jak Hive z wykorzystaniem Tez. ORC zapewnia wiele korzyści w stosunku do innych formatów plików Hive, takich jak wysoka kompresja danych, szybsza wydajność, funkcja predykcji push down, a ponadto przechowywane dane są zorganizowane w paski, które umożliwiają duży, wydajny odczyt z HDFS.

Parkiet





Parquet to kolejny open-source’owy format plików zorientowanych na kolumny w ekosystemie Hadoop wspierany przez firmę Cloudera, we współpracy z Twitterem. Parquet jest bardzo popularny wśród praktyków big data, ponieważ zapewnia wiele optymalizacji pamięci masowej, szczególnie w obciążeniach analitycznych. Podobnie jak ORC, Parquet zapewnia kompresję kolumnową, oszczędzając wiele miejsca w pamięci masowej, pozwalając jednocześnie na odczyt poszczególnych kolumn zamiast odczytywania całych plików. Zapewnia znaczące korzyści w zakresie wydajności i wymagań pamięci masowej w odniesieniu do tradycyjnych rozwiązań pamięci masowej. Jest bardziej wydajny w wykonywaniu operacji w stylu IO danych i jest bardzo elastyczny, jeśli chodzi o obsługę złożonych zagnieżdżonych struktur danych. W rzeczywistości jest on szczególnie zaprojektowany z myślą o zagnieżdżonych strukturach danych. Parquet jest również lepszym formatem plików w zakresie redukcji kosztów przechowywania i przyspieszenia kroku odczytu, jeśli chodzi o duże zestawy danych. Parquet działa naprawdę dobrze z Apache Spark. W rzeczywistości jest to domyślny format pliku do zapisu i odczytu danych w Sparku.

Różnica między ORC a Parkietem

Pochodzenie

– ORC został zainspirowany formatem kolumny wierszowej, który został opracowany przez Facebooka, aby wspierać odczyty kolumnowe, predykcyjne wypychanie i leniwe odczyty. Jest to następca tradycyjnego formatu Record Columnar File (RCFile) i zapewnia bardziej wydajny sposób przechowywania danych relacyjnych niż RCFile, zmniejszając rozmiar danych nawet o 75 procent. Parquet natomiast został zainspirowany z formatu przechowywania zagnieżdżonych danych nakreślonego w dokumencie Google Dremel i opracowany przez firmę Cloudera, we współpracy z Twitterem. Parquet jest obecnie projektem inkubatora Apache.

Obsługa



– Zarówno ORC, jak i Parquet są popularnymi zorientowanymi na kolumny formatami plików big data, które mają prawie podobną konstrukcję w tym, że oba dzielą dane w kolumnach. Podczas gdy Parquet ma znacznie szerszy zakres wsparcia dla większości projektów w ekosystemie Hadoop, ORC obsługuje tylko Hive i Pig. Jedną z kluczowych różnic między nimi jest to, że ORC jest lepiej zoptymalizowany dla Hive, podczas gdy Parquet działa naprawdę dobrze z Apache Spark. W rzeczywistości Parquet jest domyślnym formatem plików do pisania i czytania danych w Apache Spark.



Indeksowanie

– Praca z plikami ORC jest równie prosta jak praca z plikami Parquet. Oba są świetne dla obciążeń wymagających odczytu. Jednak pliki ORC są zorganizowane w paski danych, które są podstawowym budulcem danych i są od siebie niezależne. Każdy pasek ma indeks, dane wiersza i stopkę. Stopka jest miejscem, gdzie buforowane są kluczowe statystyki dla każdej kolumny w obrębie paska, takie jak count, min, max i suma. Parquet, z drugiej strony, przechowuje dane w stronach, a każda strona zawiera informacje o nagłówku, informacje o poziomach definicji i powtórzeń oraz rzeczywiste dane.

Podsumowanie

Zarówno ORC, jak i Parquet to dwa najpopularniejsze w ekosystemie Hadoop formaty przechowywania plików zorientowanych na kolumny o otwartym kodzie źródłowym, zaprojektowane z myślą o dobrej współpracy z obciążeniami roboczymi związanymi z analityką danych. Parquet został opracowany wspólnie przez firmy Cloudera i Twitter w celu rozwiązania problemów z przechowywaniem dużych zbiorów danych z wysokimi kolumnami. ORC jest następcą tradycyjnej specyfikacji RCFile, a dane przechowywane w formacie plików ORC są zorganizowane w paski, które są wysoce zoptymalizowane dla operacji odczytu HDFS. Z kolei Parquet jest lepszym wyborem pod względem możliwości adaptacji, jeśli używasz kilku narzędzi w ekosystemie Hadoop. Parquet jest lepiej zoptymalizowany do użycia z Apache Spark, podczas gdy ORC jest zoptymalizowany dla Hive. Ale w przeważającej części oba są dość podobne, bez znaczących różnic między nimi.