2015-06-14 6 views
7

Ich habe Mühe zu verstehen, was genau Arvo, Kryo und Parquet im Zusammenhang mit Spark tun. Sie alle hängen mit der Serialisierung zusammen, aber ich habe gesehen, wie sie zusammen verwendet werden, so dass sie nicht dasselbe tun können.Funken mit Arvo, Kryo und Parkett

Parkett beschreibt sich selbst als ein säulenförmiges Speicherformat und ich bekomme das irgendwie, aber wenn ich eine Parkettdatei speichere, können Arvo oder Kryo damit etwas zu tun haben? Oder sind sie nur während des Funkenjobs relevant, d. zum Senden von Objekten über das Netzwerk während eines Shuffle oder auf die Festplatte? Wie unterscheiden sich Arvo und Kryo und was passiert, wenn Sie sie zusammen benutzen?

Antwort

2

Dieser sehr gute Blogpost erklärt die Details für alles außer Kryo.

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

Kryo würde für schnelle Serialisierung verwendet werden, mit denen keine dauerhaften Speicherung, wie Shuffle Daten und Daten im Cache, Speicher oder auf der Festplatte als temporäre Dateien.

+4

Also, wenn Parkett für eine effiziente dauerhafte Lagerung und Kryo für eine schnelle nicht permanente Lagerung ist, was macht dann Arvo? Und wann würde ich es benutzen? –

4

Parquet funktioniert sehr gut, wenn Sie bei der Abfrage Ihrer Daten nur ein paar Spalten lesen müssen. Wenn Ihr Schema jedoch viele Spalten (30+) hat und Sie in Ihren Abfragen/Jobs alle von ihnen lesen müssen, dann funktionieren aufzeichnungsbasierte Formate (wie AVRO) besser/schneller.

Eine weitere Einschränkung von Parquet besteht darin, dass es im Wesentlichen einmalig formatiert ist. Normalerweise müssen Sie also Daten in einem Bereitstellungsbereich sammeln und einmal täglich in eine Parkettdatei schreiben.

Hier können Sie AVRO verwenden. Z.B. Sie können AVRO-kodierte Datensätze in einem Kafka-Thema oder lokalen Dateien sammeln und haben einen Batch-Job, der sie alle am Ende des Tages in eine Parquet-Datei konvertiert. Dies ist relativ einfach zu implementieren dank der Parkett-Avro-Bibliothek, die Werkzeuge zur automatischen Konvertierung zwischen AVRO und Parkett bietet.

Und natürlich können Sie AVRO außerhalb von Spark/BigData verwenden. Es ist ein ziemlich gutes Serialisierungsformat ähnlich wie Google Protobuf oder Apache Thrift.