Wie die Steuerung der Anzahl von Ausgabe-Dateien erstellt von Spark job beim schreiben?
Hallo, ich bin mit paar Funken Arbeitsplätze, die Prozesse, die Tausende von Dateien jeden Tag. Datei-Größe kann sehr von MBs an GBs. Nach Beendigung der Arbeit, die ich in der Regel sparen Sie mit dem folgenden code
finalJavaRDD.saveAsParquetFile("/path/in/hdfs"); OR
dataFrame.write.format("orc").save("/path/in/hdfs") //storing as ORC file as of Spark 1.4
Spark-job erzeugt viele kleine Teil-Dateien, die in die endgültigen output-Verzeichnis. Soweit ich das verstehe Funke schafft ein Teil Datei für jede partition/Aufgabe bitte korrigieren Sie mich, wenn ich falsch bin. Wie kontrollieren wir die Menge der Teil-Dateien, die Funken erzeugt? Schließlich möchte ich zum erstellen von Hive-Tabelle, die über diese Parkett - /orc-Verzeichnis und ich hörte Hive ist langsam, wenn wir haben große, keine kleinen Dateien. Bitte Anleitung, ich bin neu zu entfachen. Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möchten Sie vielleicht zu versuchen, mit der DataFrame.coalesce Methode zum verringern der Anzahl der Partitionen; es gibt einen DataFrame mit der angegebenen Anzahl von Partitionen (von denen jeder wird eine Datei für das einfügen).
Erhöhen oder verringern Sie die Partitionen, die Sie verwenden können
Dataframe.repartition
Funktion.Aber
coalesce
nicht dazu führen, shuffle, währendrepartition
tut.Seit 1.6 können Sie neu partitionieren auf Daten-frame, was bedeutet, du bekommst 1 Datei pro hive-partition. Hüten Sie sich vor großen mischt, obwohl, gut, haben Sie Ihren DF partitioniert richtig beginnt, wenn möglich.
Sehen https://stackoverflow.com/a/32920122/2204206