Ich werde versuchen, meine Anforderung so gut wie möglich zu beschreiben. Aber bitte frag mich, ob es noch unklar ist.Können Sie einen Ratschlag zum Entwerfen meiner Spark Stream-Quelle geben?
Die Umgebung
Ich habe 5 Knoten (mehr in der Zukunft sein wird). Jeder von ihnen erzeugt alle 5 Minuten eine große CSV-Datei (etwa 1 bis 2 GB). Ich brauche Apache Spark Stream, um diese CSV-Dateien in fünf Minuten zu verarbeiten. Also diese 5 Dateien sind meine Eingabe DStream-Quelle.
Was ich
tun planen, plane ich textFileStream zu verwenden, wie unten:
ssc.textFileStream(dataDirectory)
Alle 5 Minuten Ich werde diese CSV in einem Verzeichnis auf dem HDFS setzen. Verwenden Sie dann die obige Funktion, um inputDStream zu generieren.
Das Problem der oben beschriebenen Weise
die textFileStream benötigen eine komplette Datei anstelle von 5-Dateien. Ich weiß nicht, wie Dateien
Frage
- in HDFS fusionieren Können Sie mir sagen, wie Dateien in hdfs von Python zu fusionieren?
- Haben Sie einen besseren Vorschlag als meinen Weg? Bitte berate mich auch
Dank @Manas. Aber um den DStream zu konstruieren. Ich muss die TextFileStream API verwenden. Und diese API akzeptiert ein Verzeichnis als Parameter. Könnten Sie bitte bitte ein Code-Beispiel geben? –
Ja, 'textFileStream' nimmt ein Verzeichnis als Parameter. Dateien, die zu einem bestimmten Zeitpunkt in dieses Verzeichnis gelangen, können jederzeit Teil einer RDD sein. Ich habe momentan kein Beispiel für textFileStream bei mir. Aber ich werde weiter danach suchen und es veröffentlichen, wenn ich es finde. – Manas
Tatsächlich wissen wir, dass DStream von einer Reihe von RDD konstruiert wird. So können wir alle 5 Minuten Dateien in einem Verzeichnis mit Wildcard lesen und dann DStream mit diesen RDDs erstellen. Aber ich kenne keinen richtigen Weg, DStream mit diesen RDD zu konstruieren. Hast du irgendeine Idee? –