2015-03-10 5 views
42

Ich plane, eines der Hadoop-Dateiformat für meine Hadoop-Projekt verwenden. I verstehen Parkett ist effizient für Spalte basierte Abfrage und AVRO für den vollständigen Scan oder wenn wir alle Spalten Daten benötigen!Avro v/s Parkett

Bevor ich fortfahre und eines der Dateiformate auswähle, möchte ich verstehen, was die Nachteile/Nachteile von einem gegenüber dem anderen sind. Kann mir das jemand in einfachen Worten erklären?

Antwort

0

Nur für eine Beschreibung auf Parkett, können Sie hier finden: http://bigdata.devcodenote.com/2015/04/parquet-file-format.html

Ich beabsichtige, sehr bald auf Avro zu schreiben und ein Vergleich zwischen dem auch 2. Werde es hier einmal einstellen.

+0

Warten auf den Vergleich. Derzeit wählte ich Avro für mein Projekt als Parkett hat Probleme mit Bienenstock :) – Abhishek

+0

@Abshinek, können Sie einige Informationen über die Kompatibilitätsprobleme mit Bienenstock und avro –

+0

@EB Es sollte keine Probleme geben, wenn es sie gibt, würden sie sein erwähnt unter https://cwiki.apache.org/confluence/display/Hive/AvroSerDe –

32

Wenn Sie noch nicht entschieden haben, würde ich Avro Schemata für Ihre Daten schreiben. Sobald das erledigt ist, ist die Wahl zwischen Avro Containerdateien und Parkett Dateien über so einfach wie Auslagern zB

job.setOutputFormatClass(AvroKeyOutputFormat.class); 
AvroJob.setOutputKeySchema(MyAvroType.getClassSchema()); 

für

job.setOutputFormatClass(AvroParquetOutputFormat.class); 
AvroParquetOutputFormat.setSchema(job, MyAvroType.getClassSchema()); 

Das Parkett Format scheint ein wenig rechenintensiv auf das zu sein, Schreibseite - zB RAM für Pufferung und CPU für die Bestellung der Daten usw. erforderlich, aber es sollte die I/O-, Speicher- und Transferkosten reduzieren sowie effiziente Lesevorgänge ermöglichen, insbesondere mit SQL-ähnlichen Abfragen (zB Hive oder SparkSQL) die nur einen Teil der Spalten adressieren.

In einem Projekt kehrte ich von Parquet zu Avro-Containern zurück, weil das Schema zu umfangreich und verschachtelt war (abgeleitet von einigen ziemlich hierarchischen objektorientierten Klassen) und Tausende von Parquet-Spalten ergab. Im Gegenzug waren unsere Zeilengruppen sehr breit und flach, was bedeutete, dass es ewig dauerte, bis wir in der letzten Spalte jeder Gruppe eine kleine Anzahl von Zeilen verarbeiten konnten.

Ich hatte noch keine Gelegenheit, Parkett für normalere/gesundere Daten zu verwenden, aber ich verstehe, dass es, wenn es gut verwendet wird, erhebliche Leistungsverbesserungen ermöglicht.

+1

Parquet unterstützt auch verschachtelte Datensätze/Sammlungen. – Tagar

+0

@Ruslan: Ja, es hat technisch die verschachtelten Strukturen unterstützt. Das Problem war die sehr hohe Anzahl von Spalten aufgrund der umfangreichen Entnormalisierung der Daten. Es hat funktioniert, aber es war sehr langsam. – steamer25

+1

Ja, das Schreiben von Daten in Parkett ist teurer. Lesevorgänge sind anders herum, besonders wenn Ihre Abfragen normalerweise eine Teilmenge von Spalten lesen. – Tagar

5

Ihr Verständnis ist richtig. In der Tat sind wir bei der Datenmigration in unserer DWH in eine ähnliche Situation geraten. Wir entschieden uns für Parkett über Avro, da die Platteneinsparung fast doppelt so hoch war wie bei AVro.Auch die Verarbeitungszeit der Abfrage war viel besser als bei Avro. Aber ja, unsere Anfragen basierten auf Aggregation, spaltenbasierten Operationen usw. daher war Parquet erwartungsgemäß ein klarer Gewinner. Wir verwenden HIve 0.12 von CDH Distro. Sie haben erwähnt, dass Sie Probleme mit Hive + Parkett haben, was sind das? Wir haben keine getroffen. Hoffe, das hilft.

2

Silver Blaze legte eine schöne Beschreibung mit einem Beispiel-Anwendungsfall und beschrieben, wie Parkett die beste Wahl für ihn war. Je nach Ihren Anforderungen ist es sinnvoll, sich gegenseitig zu berücksichtigen. Ich schreibe eine kurze Beschreibung der verschiedenen anderen Dateiformate zusammen mit Vergleich der Zeit Raumkomplexität. Ich hoffe, das hilft.

Es gibt eine Reihe von Dateiformaten, die Sie in Hive verwenden können. Bemerkenswerte Erwähnungen sind AVRO, Parkett. RCFile & ORC. Es gibt einige gute online verfügbare Dokumente, auf die Sie sich beziehen können, wenn Sie die Leistung und die Raumnutzung dieser Dateiformate vergleichen möchten. Folgt einigen nützlichen Links, die Sie in Gang bringen.

This Blog Post

This link from MapR [They don't discuss Parquet though]

This link from Inquidia

die oben angegebenen Links erhalten Sie gehen. Ich hoffe das beantwortet deine Anfrage.

Danke!

25

Avro ist ein reihenbasiertes Format. Wenn Sie die Daten als Ganzes abrufen möchten, können Sie Avro

Parquet ist ein Spaltenbasiertes Format. Wenn Ihre Daten aus einer großen Anzahl von Spalten bestehen, Sie aber an einer Teilmenge von Spalten interessiert sind, können Sie Parquet verwenden

HBase ist nützlich, wenn Sie häufig Daten aktualisieren müssen. Avro ist schnell im Zugriff, Parkett ist viel schneller.

6

Avro

  • Weit verbreitet als Serialisierung Plattform verwendet
  • Row-basiert, bietet eine kompakte und schnelle Binärformat
  • Schema auf die Datei verschlüsselt ist, so können die Daten
  • Dateien ohne Tags werden Unterstützung Block Kompression und sind splitable
  • unterstützt Schema Evolution

Parkett

  • Column orientierte Binärdateiformat
  • Verwendet den Aufzeichnung Schredder und Montag Algorithmus in dem Papier Dremel beschrieben
  • Jede Datendatei, die Werte für einen Satz von Reihen
  • Effizient in enthält von Disk-I/O, wenn benötigen bestimmte Spalten

von Choosing an HDFS data storage format- Avro vs. Parquet and more

abgefragt werden
1

Die Verwendung beider Formate hängt vom Anwendungsfall ab. Auf der Grundlage von 3 Faktoren, können wir entscheiden, welches Format wird in unserem Fall entscheiden werden:

  1. Lese-/Schreibbetrieb: Parquet ist daher Spalte basiertes Dateiformat Indizierung unterstützen, weil von denen es bis zum Lesen geeignet ist intensive, komplexe oder analytische Abfragen, Daten mit niedriger Latenz. Dies wird normalerweise von Endbenutzern/Datenwissenschaftlern verwendet. Dagegen ist AVRO als zeilenbasiertes Dateiformat am besten für schreibintensiven Betrieb geeignet. Dies wird im Allgemeinen von Data Engineers verwendet. Beide unterstützen Serialisierungs- und Komprimierungsformate.

  2. Werkzeuge: Parkett eignet sich am besten für Impala (haben MPP-Engine), da es für komplexe/interaktive Abfragen und niedrige Latenzzeiten verantwortlich ist. Dies wird von CDH unterstützt. So unterstützt HDP ORC-Formate (die Auswahl hängt auch von der Hadoop-Verteilung ab). Avro eignet sich dagegen am besten für die Spark-Verarbeitung.

  3. Schema Evolution: bedeutet ändern Schema der Daten über die Transformation und Verarbeitung. Sowohl Parquet als auch Avro unterstützen die Entwicklung von Schemata aber in gewissem Maße. Im Vergleich dazu bietet Avro eine viel reichere Schema-Evolution. Parkett ist gut, wenn wir einige Append-Operationen wie das Hinzufügen von Spalten haben, aber Avro eignet sich sowohl zum Hinzufügen als auch zum Modifizieren. Hier glänzt Avro besser als Parkett.