2017-03-07 9 views
0

Ich habe einen Pentaho-Job und in einer der Transformationen möchte ich die Anzahl der Dateien in einem Ordner erhalten. Ich habe zwei verschiedene Ansätze ausprobiert, aber beide benötigten mehr als 2 Minuten für die Ausführung. Ich würde gerne wissen, ob es einen Schritt gibt, der dazu genutzt werden könnte, dies auf effizientere Weise zu tun.Schnell Dateianzahl des Ordners

Ansatz 1-Get Datei Reihen zählen -> Set Variablen

In meinen Get Datei Reihen zählen Schritt Ich habe das Verzeichnis und eine Wildcard die Anzahl der XML-Dateien zu erhalten (* xml..) in einem Ordner. In der Registerkarte "Inhalt" habe ich die Dateianzahl in einem Feld (fileCount) gespeichert, das dann in einer Variablen gespeichert wird. Für einen Ordner mit 3.722 xml Dateien dauerte es 2:15 um zu laufen.

Get File rows count - File

Get File rows count - Content

Ansatz 2-Get Dateinamen -> Gruppierung -> Set Variablen

Mit diesem Ansatz, den ich eine ähnliche Einstellung wie der Schritt habe ‚File Get rows count 'aber dann, nachdem ich eine Gruppe nach Aktion mit dem Typ' Anzahl der Zeilen (ohne Feldargument) 'gemacht habe. Diese Methode lief in 2:30 für die gleichen 3.722 Dateien.

Ich denke, das dauert so lange, weil es versucht, die Dateien im Speicher zu bekommen, aber ich kümmere mich nur um die Anzahl. Hoffte, einen Weg zu finden, um einfach zu zählen.

Antwort

1

Die Get Files Zeilen zählen Schritt zählt jede Zeile in jeder Datei, also kein Wunder, dass es langsam ist.

Verwenden Sie die Get Dateinamen Schritt und es sollte sehr schnell sein, unabhängig von der Dateigröße. Zum Glück hatte ich einen Ordner voll von XML-Dateien bereit, so ist hier ein Screenshot von dem, was zu erwarten (in einem Linux-VM auf meinem Laptop)

enter image description here

Wenn Sie diesen Schritt verwenden und immer noch Probleme auftreten, zuerst Stellen Sie sicher, dass Sie die anderen Eingabeschritte aus der Umwandlung entfernt haben, da sie weiterhin ausgeführt werden und möglicherweise stören. Zweitens, überprüfen Sie, ob Antivirus-Software versucht, jede Datei zu scannen, wenn Spoon auf sie für die Metadaten zugreift.

+0

Danke für die Eingabe, es macht mehr Sinn, Ansatz zwei zu verwenden, besonders wenn Sie sich nicht um die Anzahl der Zeilen kümmern. Ich habe einen weiteren Test gemacht und herausgefunden, was die Langsamkeit verursacht hat. Als ich einen lokalen Ordner anschaute, lief er sehr schnell, in einer ähnlichen Geschwindigkeit wie der Screenshot, den Sie anschlossen. Wenn ich gegen einen Netzwerkordner lief, dauerte es mehr als zwei Minuten. Dies führt mich zu der Annahme, dass das Problem die Kommunikation mit dem Speicherort der Freigabe und nicht der Schritt selbst ist. –

Verwandte Themen