/ / Verteilte Verarbeitung von JSON in Hadoop - json, hadoop, mapreduce

Verteilte Verarbeitung von JSON in Hadoop - JSON, Hadoop, MapReduce

Ich möchte eine JSON-Datei mit ca. 300 GB in Hadoop verarbeiten. Meines Wissens besteht ein JSON aus einer einzelnen Zeichenfolge mit darin verschachtelten Daten. Wenn ich nun den JSON-String mit Googles GSON analysieren möchte, muss Hadoop nicht die gesamte Last auf einen einzelnen Knoten übertragen, da der JSON für ihn nicht logisch teilbar ist.

Wie partitioniere ich die Datei?Partitionen logisch betrachten die Daten), wenn ich möchte, dass es auf verschiedenen Knoten parallel verarbeitet werden soll. Muss ich die Datei brechen, bevor ich sie auf HDFS selbst lade? Ist es unbedingt erforderlich, dass der JSON mindestens einmal von einer Maschine (oder einem Knoten) analysiert wird?

Antworten:

1 für die Antwort № 1

Vorausgesetzt, Sie wissen, dass Sie den JSON-Code logisch in logisch separate Komponenten zerlegen können, können Sie dies einfach durch Schreiben Ihres eigenen InputFormats erreichen.

Konzeptionell können Sie sich jede der logisch teilbaren JSON-Komponenten als eine "Datenzeile" vorstellen. Wobei jede Komponente die minimale Menge an Informationen enthält, auf die unabhängig reagiert werden kann.

Dann müssen Sie eine Klasse, ein FileInputFormat, erstellen, in der Sie jede dieser JSON-Komponenten zurückgeben müssen.

public class JSONInputFormat extends FileInputFormat<Text,JSONComponent {...}

0 für die Antwort № 2

Wenn Sie Ihren riesigen JSON logisch in teilen könnenTeile, mach es und speichere diese Teile als separate Zeilen in einer Datei (oder Datensätze in einer Sequenzdatei). Wenn Sie diese neue Datei dann an Hadoop MapReduce übergeben, können Mapper Datensätze parallel verarbeiten.

Also, ja, JSON sollte von einer Maschine auf analysiert werdenwenigstens einmal. Diese Vorverarbeitungsphase muss nicht in Hadoop ausgeführt werden. Ein einfaches Skript erledigt die Arbeit. Verwenden Sie die Streaming-API, um zu vermeiden, dass viele Daten in den Speicher geladen werden.


0 für die Antwort № 3

Du könntest das finden JSON SerDe nützlich. Es ermöglicht Hive, im JSON-Format zu lesen und zu schreiben. Wenn es für Sie funktioniert, ist es viel bequemer, Ihre JSON-Daten mit Hive zu verarbeiten, da Sie sich keine Gedanken über das benutzerdefinierte InputFormat machen müssen, das Ihre JSON-Daten liest und Splits für Sie erstellt.