2017-12-18 11 views
-1

Ich arbeite an einem Projekt, wo ich irgendwo 10 Dateien mit einer Größe von jeweils 200 GB erhalte. Meine Projektanforderung besteht darin, Daten aus jeder Datei zu extrahieren und die Verbindung mit anderen Dateien herzustellen und die Daten zu extrahieren.Große Datenverarbeitung in Java

E.G wie ich habe Datei 1.txt, wo ich Konto-ID habe und ich habe Datei 2.txt, wo ich Konto-ID und Account-Name. Auf der Basis der Account-ID aus der ersten Datei muss ich die Daten aus der zweiten Datei extrahieren.

Auf diese Weise muss ich die Manipulation an jeder der 10 Dateien durchführen und endgültige Ausgabedateien erstellen.

Ich mache dies derzeit in Java, die wirklich Zeit ist, Prozess zu nehmen. Es dauert ungefähr 4 bis 5 Stunden.

Kann ich meine Leistung bei jeder Änderung erhöhen? Gibt es eine Technologie oder ein Tool oder Framework, das ich in Java integrieren kann und meine Leistung steigern kann?

Ich habe folgende Ansätze verwendet.

1) Apache Drill- Ich führe eine Join-Abfragen Ergebnis: Drill ist Drillbit Down-Ausnahme als Dateigröße ist zu viel.

2) Apache Beam- Ich führe das Verbinden von Dateien mit Parallelverarbeitung durch. Ergebnis: Es gibt mir Out of Memory-Ausnahme bei Gruppe nach Feature.

Ich lese diese Daten von hadoop.

+0

Warum wollen Sie die Daten für die lokale Verarbeitung mit Java herunterladen müssen? Könnten Sie die Daten stattdessen direkt mit einem Tool wie Hive verarbeiten? –

+0

Haben Sie Ihre Strahlvollstrecker oder Bohrerhaufengrößen erhöht? Hive, Spark oder Pig sind allesamt feine Werkzeuge, die in den meisten Hadoop-Distributionen typisch sind. –

+0

Bitte fügen Sie Ihren Beam-Code bei und erklären Sie, welche Version des Beam SDK und welcher Runner Sie verwenden. – jkff

Antwort

-1

Ich würde vorschlagen, Hadoop und Spark zu verwenden, da Spark In-Memory-Modell verwendet, das schneller als Map Reduce ist. Vielleicht diese beiden Links werden Ihnen helfen:

https://content.pivotal.io/blog/3-key-capabilities-necessary-for-text-analytics-natural-language-processing-in-the-era-of-big-data

https://community.hortonworks.com/articles/84781/spark-text-analytics-uncovering-data-driven-topics.html

+0

Drill verwendet auch ein Speichermodell für die Verarbeitung von Hadoop-Daten –

+0

@ cricket_007 OP hat nach meiner Antwort einige zusätzliche Informationen (einschließlich Bohr- und Strahlinformationen) hinzugefügt. Also konnte ich nicht wissen, welche Werkzeuge er benutzt. Also wieso mich abmelden ??? – Uata

+0

Mein schlechtes. "Ich schlage vor, Spark" + [einige Links ist nicht vollständig eine Antwort] (https: //meta.stackexchange.com/questions/8231/sind-Antworten-das-nur-enthalten-Links-anderswo-wirklich-gute-Antworten). Es hat auch nicht vorgeschlagen MapReduce wurde verwendet. Dieser "Java-Prozess" könnte bereits Spark sein. –