AVRO - przegląd
Aby przesłać dane przez sieć lub w celu ich trwałego przechowywania, należy zserializować dane. Przedserialization APIs dostarczane przez Java i Hadoop, mamy specjalne narzędzie o nazwie Avro, technika serializacji oparta na schemacie.
W tym samouczku przedstawiono sposób serializacji i deserializacji danych przy użyciu programu Avro. Avro zapewnia biblioteki dla różnych języków programowania. W tym samouczku przedstawiamy przykłady przy użyciu biblioteki Java.
Co to jest Avro?
Apache Avro to niezależny od języka system serializacji danych. Został opracowany przez Douga Cuttinga, ojca Hadoopa. Ponieważ klasom Hadoop do zapisu brakuje przenośności języków, Avro staje się bardzo pomocny, ponieważ radzi sobie z formatami danych, które mogą być przetwarzane w wielu językach. Avro jest preferowanym narzędziem do serializacji danych w Hadoop.
Avro ma system oparty na schemacie. Schemat niezależny od języka jest powiązany z operacjami odczytu i zapisu. Avro serializuje dane, które mają wbudowany schemat. Avro serializuje dane do kompaktowego formatu binarnego, który może być deserializowany przez dowolną aplikację.
Avro używa formatu JSON do deklarowania struktur danych. Obecnie obsługuje języki takie jak Java, C, C ++, C #, Python i Ruby.
Schematy Avro
Avro w dużym stopniu zależy od tego schema. Pozwala na zapis wszystkich danych bez wcześniejszej znajomości schematu. Szybko serializuje, a wynikowe zserializowane dane mają mniejszy rozmiar. Schemat jest przechowywany wraz z danymi Avro w pliku do dalszego przetwarzania.
W RPC klient i serwer wymieniają schematy podczas połączenia. Ta wymiana pomaga w komunikacji między polami o tej samej nazwie, polami brakującymi, polami dodatkowymi itp.
Schematy Avro są definiowane za pomocą JSON, co upraszcza ich implementację w językach z bibliotekami JSON.
Podobnie jak Avro, istnieją inne mechanizmy serializacji w Hadoop, takie jak Sequence Files, Protocol Buffers, i Thrift.
Porównanie z buforami oszczędności i protokołów
Thrift i Protocol Buffersto najbardziej kompetentne biblioteki z Avro. Avro różni się od tych frameworków w następujący sposób -
Avro obsługuje zarówno typy dynamiczne, jak i statyczne, zgodnie z wymaganiami. Bufory protokołów i oszczędność używają języków definicji interfejsu (IDL) do określania schematów i ich typów. Te IDL są używane do generowania kodu do serializacji i deserializacji.
Avro jest zbudowany w ekosystemie Hadoop. Bufory oszczędności i protokołów nie są wbudowane w ekosystem Hadoop.
W przeciwieństwie do Thrift i Protocol Buffer, definicja schematu Avro jest w formacie JSON, a nie w żadnym zastrzeżonym IDL.
własność | Avro | Bufor oszczędzania i protokołu |
---|---|---|
Schemat dynamiczny | tak | Nie |
Wbudowany w Hadoop | tak | Nie |
Schemat w JSON | tak | Nie |
Nie ma potrzeby kompilacji | tak | Nie |
Nie ma potrzeby deklarowania identyfikatorów | tak | Nie |
Krwawiąca krawędź | tak | Nie |
Funkcje Avro
Poniżej wymienione są niektóre z najważniejszych cech Avro -
Avro jest language-neutral system serializacji danych.
Może być przetwarzany w wielu językach (obecnie C, C ++, C #, Java, Python i Ruby).
Avro tworzy binarny format strukturalny, który jest jednym i drugim compressible i splittable. W związku z tym może być efektywnie używany jako dane wejściowe do zadań Hadoop MapReduce.
Avro zapewnia rich data structures. Na przykład możesz utworzyć rekord zawierający tablicę, typ wyliczeniowy i rekord podrzędny. Te typy danych można tworzyć w dowolnym języku, przetwarzać na platformie Hadoop, a wyniki można przesyłać do trzeciego języka.
Avro schemas zdefiniowane w JSON, ułatwiają implementację w językach, które mają już biblioteki JSON.
Avro tworzy samoopisujący się plik o nazwie Avro Data File, w którym przechowuje dane wraz ze schematem w sekcji metadanych.
Avro jest również używany w zdalnych wywołaniach procedur (RPC). Podczas RPC klient i serwer wymieniają schematy podczas uzgadniania połączenia.
Ogólne działanie Avro
Aby korzystać z Avro, musisz postępować zgodnie z podanym przepływem pracy -
Step 1- Twórz schematy. Tutaj musisz zaprojektować schemat Avro zgodnie z Twoimi danymi.
Step 2- Wczytaj schematy do swojego programu. Odbywa się to na dwa sposoby -
By Generating a Class Corresponding to Schema- Skompiluj schemat za pomocą Avro. Spowoduje to wygenerowanie pliku klasy odpowiadającego schematowi
By Using Parsers Library - Możesz bezpośrednio odczytać schemat za pomocą biblioteki parserów.
Step 3 - Serializuj dane za pomocą interfejsu API serializacji dostarczonego dla Avro, który znajduje się w package org.apache.avro.specific.
Step 4 - Deserializacja danych przy użyciu interfejsu API deserializacji dostarczonego dla Avro, który znajduje się w package org.apache.avro.specific.