2017-03-22 5 views
1

Wir haben eine Anforderung, wo wir Daten aus drei verschiedenen Dateien lesen und Joins zwischen diesen Dateien mit verschiedenen Spalten im selben Job tun.Talend Leistung

Jede Dateigröße beträgt etwa 25-30 GB. Unsere System-RAM-Größe beträgt nur 16 GB. Doing verbindet sich mit tmap. Talend speichert alle Referenzdaten im physischen Speicher. In meinem Fall kann ich nicht so viel Speicher bereitstellen. Auftrag fehlgeschlagen, weil nicht genügend Arbeitsspeicher vorhanden ist. Wenn ich die Option mit der temporären Datenträgeroption in tmap verwende, war der Job sehr langsam.

Bitte helfen Sie mir bei diesen Fragen.

  1. Wie verarbeiten Talend die Daten größer als RAM-Größe?
  2. Pipeline-Parallelität ist mit Talend vorhanden? Fehle ich irgendetwas im Code, um das zu erreichen?
  3. tuniq & Die Join-Operationen wurden im physischen Speicher ausgeführt, wodurch der Job langsam ausgeführt wurde. Die Festplattenoption ist verfügbar, um diese Funktionalität zu behandeln, aber es war zu langsam.
  4. Wie kann die Leistung verbessert werden, ohne die Daten auf DB (ELT) zu schieben. Ob Talend kann mit riesigen Daten in Millionen umzugehen.Müssen Sie damit umgehen Art von Daten mit geringerer Menge an RAM?

Dank

Antwort

0

Talend Prozess der großen Menge an Daten sehr schnell und auf effiziente Art und Weise. Alles hängt von Ihrem Wissen über Talend-Plattformen ab.

Bitte beachten Sie die folgenden Kommentare als Antworten auf Ihre Fragen.

Q1.Wie verarbeiten Talend die Daten größer als RAM-Größe?

A. Sie können nicht Ihren gesamten RAM für Talend Studio verwenden. Nur ein Bruchteil des Arbeitsspeichers kann fast die Hälfte Ihres Arbeitsspeichers verwendet werden.

Zum Beispiel: - mit 8 GB Speicher auf 64-Bit-System, können die optimalen Einstellungen sein: -vmargs

-Xms1024m

-Xmx4096m

-XX: MaxPermSize = 512m

-Dfile.encoding = UTF-8

Jetzt in Ihrem Fall müssen Sie entweder Increa se your RAM mit 100 GB

ODER schreiben Sie einfach die Daten auf der Festplatte. Dazu müssen Sie ein Temp-Datenverzeichnis für Puffer-Komponenten wie tMap, tBufferInputs, tAggregatedRow usw. wählen.

Q2. Pipeline-Parallelismus ist mit Talend vorhanden? Fehle ich etwas im Code, um das zu erreichen?

A. In Talend Studio bedeutet Parallelisierung von Datenflüssen, einen Eingabedatenfluss eines Subjobs in parallele Prozesse zu partitionieren und gleichzeitig auszuführen, um eine bessere Leistung zu erzielen.

Diese Funktion ist jedoch nur verfügbar, wenn Sie eine der Talend Platform-Lösungen abonniert haben.

Wenn Sie einen Job zu entwickeln, zu verarbeiten, sehr große Datenmengen mit Talend Studio, Sie die Parallelisierung von einem einzigen Klick aktivieren oder deaktivieren können, und dann automatisiert das Studio die Umsetzung in einem bestimmten Job

enter image description here

Parallele Ausführung die Umsetzung der Parallelisierung erfordert vier Schlüsselschritte wie folgt erklärt:

Partitioning(): In diesem Schritt wird das Studio die Eingangsdatensätzen in einer bestimmten Anzahl von Fadenpartikel s.

Sammeln(): In diesem Schritt sammelt das Studio die geteilten Threads und sendet sie zur Verarbeitung an eine bestimmte Komponente.

Partitionierung(): In diesem Schritt gruppiert Studio die Ausgaben der parallelen Ausführungen der geteilten Threads.

Recollecting(): In diesem Schritt erfasst Studio die Ergebnisse der gruppierten Ausführung und gibt sie an eine bestimmte Komponente aus.

Q3. tuniq & Die Join-Operationen wurden im physischen Speicher ausgeführt, wodurch der Job langsam ausgeführt wurde. Für diese Funktionalität ist die Option Disk verfügbar, die jedoch zu langsam war.

Q4. Wie kann die Leistung verbessert werden, ohne die Daten auf die DB (ELT) zu übertragen. Ob Talend große Datenmengen in Millionen verarbeiten kann. Brauchen Sie diese Art von Daten mit weniger RAM?

A 3 & 4. Hier empfehle ich Ihnen, die Daten mit tOutputBulkExec direkt in die Datenbank einzufügen. Komponenten und dann können Sie diese Operation mit ELT-Komponenten auf DB-Ebene anwenden.