Ich bin es, in Python zu programmieren. Meine Firma hat jetzt einen Hadoop Cluster mit Jupyter installiert. Bisher habe ich Spark/Pyspark nie benutzt.Speichern mehrerer Elemente in HDFS mit (Spark, Python, Pyspark, Jupiter)
Ich bin in der Lage Dateien von HDFS so einfach wie diese zu laden:
text_file = sc.textFile("/user/myname/student_grades.txt")
Und ich bin der Lage, Ausgabe wie folgt zu schreiben:
text_file.saveAsTextFile("/user/myname/student_grades2.txt")
Die Sache Ich versuche zu erreichen, Verwenden Sie eine einfache "for-Schleife", um Textdateien einzeln zu lesen und den Inhalt in eine HDFS-Datei zu schreiben. Also habe ich versucht, dies:
list = ['text1.txt', 'text2.txt', 'text3.txt', 'text4.txt']
for i in list:
text_file = sc.textFile("/user/myname/" + i)
text_file.saveAsTextFile("/user/myname/all.txt")
So funktioniert dies für das erste Element der Liste, aber dann gibt mir diese Fehlermeldung:
Py4JJavaError: An error occurred while calling o714.saveAsTextFile.
: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory
XXXXXXXX/user/myname/all.txt already exists
Um Verwirrung zu vermeiden I "verwischten" -out IP Adresse mit XXXXXXXX.
Was ist der richtige Weg? Ich werde Tonnen von Datensätzen haben (wie 'text1', 'text2' ...) und möchte eine Python-Funktion mit jedem von ihnen durchführen, bevor Sie sie in HDFS speichern. Aber ich möchte die Ergebnisse alle zusammen in "einer" Ausgabedatei haben.
Vielen Dank!
MG
EDIT: Es scheint so, dass mein endgültiges Ziel nicht wirklich klar war. Ich muss eine Funktion für jede Textdatei separat anwenden und dann möchte ich die Ausgabe an das vorhandene Ausgabeverzeichnis anhängen. Etwas wie folgt aus:
for i in list:
text_file = sc.textFile("/user/myname/" + i)
text_file = really_cool_python_function(text_file)
text_file.saveAsTextFile("/user/myname/all.txt")
Es scheint so, dass mein Endziel nicht wirklich klar war. Ich muss eine Funktion für jede Textdatei separat anwenden und dann möchte ich die Ausgabe an das vorhandene Ausgabeverzeichnis anhängen. Siehe EDIT – mgruber
gleiche Funktion für alle Textdateien? – Suresh
Ja die gleiche Funktion für alle Dateien, aber ich kann nicht die Textdateien zuvor, da jede Datei separat behandelt werden muss – mgruber