Ich habe eine Spark-Streaming-Anwendung, die Parkettdaten aus dem Stream schreibt.
%Vor%dieses Stück Code läuft jede Stunde, aber im Laufe der Zeit hat sich das Schreiben auf Parkett verlangsamt. Als wir angefangen haben, dauerte es 15 Minuten, um Daten zu schreiben, jetzt dauert es 40 Minuten. Es nimmt Zeit in Anspruch, die zu Daten proportional ist, die auf diesem Pfad existieren. Ich habe versucht, die gleiche Anwendung an einen neuen Ort zu laufen, und das läuft schnell.
Ich habe schemaMerge- und Zusammenfassungsmetadaten deaktiviert:
%Vor%mit Funken 2.0
Batch-Ausführung: leeres Verzeichnis Verzeichnis mit 350 Ordnern
Ich habe dieses Problem festgestellt. Der Append-Modus ist wahrscheinlich der Übeltäter, da das Finden der Append-Position immer länger dauert, wenn die Größe Ihrer Parkettdatei wächst.
Eine Problemumgehung, die ich gefunden habe, besteht darin, den Ausgabepfad regelmäßig zu ändern. Das Zusammenführen und Umordnen der Daten von allen Ausgabedatenrahmen ist dann normalerweise kein Problem.
%Vor%Möglicherweise liegt der Append-Modus vor. In diesem Modus sollten neue Dateien mit anderen Namen aus bereits existierenden Dateien erzeugt werden, also listet Spark Dateien in s3 (die langsam ist) jedes Mal auf.
Wir haben auch parket.enable.summary-Metadaten ein bisschen anders gesetzt: javaSparkContext.hadoopConfiguration (). set ("parket.enable.summary-metadata", "false");
Tags und Links apache-spark partitioning parquet