Hallo, Gast!

- Anmelden
- Registrieren

Neuigkeiten!
Willkommen zum ersten deutschspachigen Forum rund um die Open Source Softwarelösungen der Firma Talend. Dieses Forum ist fü alle Anwender die Fragen und/oder Antworten zum Thema Talend haben oder suchen.


Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Out of Memory bei großen Dateien
04.10.2010, 12:42
Beitrag: #1
Out of Memory bei großen Dateien
Hi @ all,

ich bin ein absoluter Neuling.

Ich muss aus einer csv Datei eine neue erstellen, bei der die Datenfelder etwas anders sortiert werden. Daneben werden über tmap noch einige Daten ergänzt.

Das Ganze funktioniert auch prima mit meiner Testdatei, die ca 60.000 Datensätze enthält.

Nun bekomme ich aber auch Dateien, die weitaus größer sind (1 Mio und mehr Datensätze).

Wenn ich diese Sätze durchlaufen lasse, bekomme ich ein Out Of Memory.

Kennt jemand eine Lösung zu diesem Problem ?
Ich bin für jede Unterstützung dankbar.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.10.2010, 11:15
Beitrag: #2
RE: Out of Memory bei großen Dateien
Hi,

ich denke der Prozess kann durch ein etwas anderes Jobdesign umgesetzt werden!?
Vermutlich arbeitet der tSort komplett im HS. Ein kleiner Screen-Shoot wäre hilfreich.
cu.
martin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.10.2010, 18:29
Beitrag: #3
RE: Out of Memory bei großen Dateien
Hallo,

tsort setze ich nicht ein.
Mit sortieren meinte ich, dass die Anordnung der Daten in der Datei geändert wird. D. h. das Feld welches in den ersten 10 Zeichen liegt, kommt in der neuen Datei erst ab dem 30. Zeichen usw.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.10.2010, 19:14
Beitrag: #4
RE: Out of Memory bei großen Dateien
Es ist extrem schwer eine Job-Empfehlung auszusprechen ohne irgend ein greifbares Bild?

Dennoch gibt es verschiedene Möglichkeiten:
1. Die zu verarbeitenden Dateien in kleinere Häppchen aufteilen.
2. Den Job während der Ausführung einfach mehr Hauptspeicher zuweisen (z.B. -Xmx1200M). Hierbei bitte das Limit der entsp. Java VM beachten. Bei einer 32Bit Umgebung ist nach meinem Wissensstand bei 2 GB Schluss.
3. Falls möglich auf eine 64 Bit Umgebung wechseln.
4. Die Look-Up Tabellen können auch auf Platte ausgelagert werden. Hierzu ist das Disk-Symbol bei der Look-Up Tabelle zu aktivieren. In den Settings vom tMap kann auch ein Temp-Folder definiert werden.
5. Die letzte Variante wäre ein dynamischer Lookup. Dieses setzt allerdings voraus, dass die Lookup-Werte aus einer relationalen Tabelle stammen und das die Ausführungszeit eine etwas untergeordnete Rolle spielt. Hierzu wird die Lookup-Query mittels einer Variable parametrisiert und der Wert aus dem Main-Stream wird für diese Variable verwendet. Da dieses Verfahren nicht ganz einfach zu beschreiben ist, empfehle ich das TOS-Component Guide/Kapitel tMap etwas genauer zu lesen.
6. Die wirklich allerletzte Variante ist dann die Transformation in die DB zu verlegen und dort mittels ELT Funktionalität das Mapping abzubilden. Hierzu werden sämtliche Quellen erst in eine DB(Stage-Bereich) überführt und anschließend mit den Targets abgegriffen.

Sicherlich keine leicht Sache wenn es um die Auflösung gerade großer Mappings geht, aber ohne einen gewissen Einblick in den Prozess kann auch ich nichts großartiges dazu beitragen.

martin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.10.2010, 20:02
Beitrag: #5
RE: Out of Memory bei großen Dateien
Hi,

das ist aber starker Toback für einen Neuling;
Da ich z.Zt. im Urlaub bin, komme ich nicht an meine Daten; ich habe mal versucht, dass Ganze aus dem Gedächtnis nachzubilden:

   

Die Loockup Tabellen sind relativ einfach.

Unter Schlüssel befindet sich eine kleine Datei die wenigen Schlüsseln Volltext zuweist:, A = Eröffnung, B = Abschluss, S = Storno.

Beim Datum ist es etwas schwieriger. Das Datum ist auf 2 Stellen begrenzt. d.h. 01 = 1901, 02 = 1902,.....99 = 1999, A0 = 2000 ...., B0 = 2010..

Zum Schluss noch das Kennzeichen für Soll- bzw. Habenbuchungen.
Dazu muss das Skript die lezte Stelle des Betrages umwandeln. Wenn die letzte stelle des Betrages ein Buchstabe ist, dann handelt es sich um eine Habenbuchung, sonst Sollbuchung.

Beim 2. tmap wir das Ganze mit dem Datum nochmal gemacht, da hier ein abweichendes Datum stehen kann.

Die Loockup Tabellen funktionieren soweit alle, das Problem entsteht erst, wenn die Input Daten sehr groß (> 1Mio.) werden. (OUT OF MEMORY)
(die -Xmx habe ich schon auf das Maximum ausgereizt, das bringt ein wenig, verhindert aber nicht die Fehlermeldung)

Ich hoffe ich habe mich einigermaßen verständlich gemacht.

Später soll das Ganze Standalone arbeiten; d.h. mit Doppelklick auf eine ausführbare Datei. Dabei habe ich aber noch ein Problem.
Im Augenblick habe ich einen festen Pfad mit festem Dateinamen vorgegeben; das funktioniert für mich soweit ganz gut. Wenn ich das fertige Programm aber an 3. weitergebe, wäre es schön, wenn man die Datei über ein Menü importieren könnte. (Ich habe keine Idee wie man das mit Talend realisieren kann).
Des Weiteren müssen jedem Datensatz der neuen Datei 2 Informationen angefügt werden, die in der Ursprungsdatei nicht vorhanden sind. Das mache ich im Augenblick so, dass ich diese Informationen manuell in tmap eintrage und so in die Datensätze einfügen lasse.
Da wäre eine Abfrage im Programm hilfreich z.B. Bitte geben sie die Betriebsnummer ein:

Ich weiss nicht, ob man das mit Talend realisieren kann oder ob man ggf. ein kleines Java Programm voranstellen muss was diese Daten abfragt.

Ich bin für jede Hilfe dankbar.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.11.2010, 20:52
Beitrag: #6
RE: Out of Memory bei großen Dateien
Hallo martin,

bei Deiner Antwort schreibst Du unter Punkt 1, dass mann die Datei in kleine Häppchen aufteilen kann.

Kannst Du mir bitte beschreiben wie man das mit Talend anstellt und wie man die Teile dann später wieder zusammensetzt.

z.B.
CSV Datei in 500.000 Datensätze splitten und nach der Verarbeitung diese wieder in eine große CSV Datei speichern.

Giant0040
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.05.2011, 15:02
Beitrag: #7
RE: Out of Memory bei großen Dateien
Kann man einstellen unter Advanced Options beim Output, siehe Bild:


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.06.2011, 19:44
Beitrag: #8
Wink RE: Out of Memory bei großen Dateien
Vielen Dank,

Thema kann geschlossen werden
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu: