2015-06-14 45 views
7

Staram się zrozumieć, co dokładnie robią Arvo, Kryo i Parquet w kontekście Sparka. Wszystkie są związane z serializacją, ale widziałem je razem, więc nie mogą robić tego samego.Iskra z Arvo, Kryo i Parkietem

Parkiet opisuje siebie jako kolumnową formę przechowywania, a ja to rozumiem, ale kiedy zapisuję plik parkietu, Arvo lub Kryo mogą mieć z tym coś wspólnego? Czy są one istotne tylko podczas pracy z iskrami, tj. do wysyłania obiektów przez sieć podczas przetasowania lub przechodzenia na dysk? Czym różnią się Arvo i Kryo i co się dzieje, gdy używasz ich razem?

Odpowiedz

2

Ten bardzo dobry blog wyjaśnia szczegóły wszystkiego oprócz Kryo.

http://grepalex.com/2014/05/13/parquet-file-format-and-object-model/

Kryo byłyby wykorzystywane do szybkiej serializacji nieobejmujące trwałe przechowywanie danych, takich jak shuffle i buforowania danych w pamięci lub na dysku w postaci plików tymczasowych.

+4

Jeśli więc Parquet służy do wydajnego i trwałego przechowywania, a Kryo służy do szybkiego nietrwałego przechowywania, to co robi Arvo? A kiedy mam go użyć? –

4

Parkiet działa bardzo dobrze, gdy trzeba odczytać tylko kilka kolumn podczas odpytywania danych. Jednak jeśli twój schemat ma wiele kolumn (30+) i zapytań/zadań, musisz przeczytać je wszystkie, wtedy formaty oparte na rekordach (takie jak AVRO) będą działały lepiej/szybciej.

Kolejnym ograniczeniem parkietu jest to, że jest to zasadniczo format jednokrotnego zapisu. Zwykle musisz zebrać dane w pewnym obszarze przemieszczania i zapisać je do pliku parkietu raz dziennie (na przykład).

Tutaj możesz użyć AVRO. Na przykład. możesz zbierać zakodowane AVRO rekordy w temacie Kafki lub plikach lokalnych i mieć zadanie wsadowe, które konwertuje je wszystkie do pliku Parquet na koniec dnia. Jest to dość łatwe do wdrożenia dzięki bibliotece parkiet-avro, która zapewnia narzędzia do automatycznej konwersji pomiędzy formatami AVRO i Parkiet.

Oczywiście można używać AVRO poza Spark/BigData. Jest to dość dobry format serializacji podobny do Google Protobuf lub Apache Thrift.