2017-08-08 2 views
0

Ich habe einen Datenrahmen wie folgt. Es enthält den Dateipfad hdfs. Ich möchte die Werte lesen und dann den Inhalt der Datei lesen. Was ist der beste Weg, dies zu lösen, ohne verschachtelte RDDs, die parallele Verarbeitung nutzen? Ich bin mit Scala 2.11 und Zündkerzen 2,1Lesen Sie Dateipfad in einem Datenrahmen verfügbar und lesen Sie den Inhalt dieser Dateien mit Funken

+--------------------+ 
|    value| 
+--------------------+ 
|hdfs://61.81.70.1...| 
|hdfs://61.81.70.1...| 
|hdfs://61.81.70.1...| 
|hdfs://61.81.70.1...| 
+--------------------+ 

bearbeiten basierend auf Ankush Antwort: Die Dateien sehr groß sind und nicht gelesen werden kann mit wholeTextFiles

Danke

+0

Sammeln Sie es in ein Array von Strings und dann ordnen Sie es mit 'sc.textFile'. Sie sollten eine Reihe von RDDs haben – philantrovert

Antwort

0

Sie

verwenden könnte
sc.wholeTextFiles("path/to/all/file") 

doc link for reference

Es erzeugt ein Paar RDD mit key =>filepath und value =>content of file

Hoffe, es hilft!

+0

Vielen Dank für die Antwort. Ich muss den Dateiinhalt Zeile für Zeile lesen. Aus den Dokumenten sehe ich, dass die Methode wholeTextFiles den gesamten Inhalt als einzelnen Datensatz liest. Doc sagt auch, es gibt schlechte Leistung für große Dateien – Satheesh

+0

Sie könnten Karte von Ihrem Dataframe verwenden [link] (https://stackoverflow.com/questions/37108980/how-to-read-a-file-from-hdfs-in- Karte-schnell-mit-Funken) –

+0

I 100% stimme mit Ihnen überein. Aber aus den Dokumenten ** Kleine Dateien sind bevorzugt, große Datei ist auch zulässig, kann aber eine schlechte Leistung verursachen. ** – Satheesh

Verwandte Themen