Talend Open Studio Tutorial-Reihe
Auf eine sehr vielversprechende TOS Tutorial-Reihe bin ich gestern im Blog von Cork Technology Services gestoßen. David Hollingworth beschreibt dort in bisher drei Folgen, wie er die Daten seiner Wetterstation ausliest und in eine MySQL-Datenbank überträgt.
“I’ve a weather station running at home (see my site TulligWeather). The software that logs the weather data writes the information to a “comma separated values” (CSV) data file – one line of data every 5 minutes. My requirement was to find a reliable way to insert this into a database so that I can manipulate it further (e.g. draw charts; but that’s another tutorial).”
Teil 1: Einleitung und Grundsätzliches
Im ersten Teil der Reihe beschreibt er das grundsätzliche Setup und sein vorhaben. Hier ganz wichtig anzumerken, dass David nicht Java- sondern Perl-Code generieren lässt. Aber auch für Leser, die mehr an der Java-Generierung interessiert sind, ist das Tutorial lesenswert.
Teil 2: Projekt anlegen und Job definieren
Los geht es mit dem Einrichten eines Projekts in Talend Open Studio 4 und dem Anlegen eines neuen Jobs im Design Workspace. Im zweiten Teil des Tutorials zeigt David sehr detailliert und mit vielen Screenshots, wie er ein Projekt anlegt, wie das Studio aufgebaut ist und wie man einen neuen Talend-Job erzeugt.
Teil 3: Flatfile Metadaten einrichten
Bevor im neu angelegten Job etwas verarbeitet werden kann, müssen bzw. sollten(!) alle Datenquellen und -senken als Metadaten im Repository definiert werden. Teil drei der Tutorial-Reihe zeigt sehr schön und ausführlich, wie dies für eine CSV-Datei in Talend gemacht wird.
Teil x: Der Blick in die Glaskugel
Ich vermute, dass im nächsten Teil dann die MySQL-Datenbankverbindung als Metadaten-Eintrag angelegt wird und sich die Reihe sicherlich noch um zwei bis drei Folgen ausdehnen wird.
Sobald es weitere Teile des Tutorials gibt, werde ich dies hier anfügen, so dass niemand etwas verpasst.
Possibly related posts: (automatically generated)
- Related posts on Tutorial
- Flash Valentine Sculpture Card | Flash CS | Flash tutorial …
- HTML5 Tutorial: HTML5 header tag | HTML 5
Video: Talend MDM Community Edition Installations-Tutorial
Jim Walker, der Talend MDM Produktmarketing Manager, erklärt in diesem Tutorial-Video, wie man die Open Source MDM-Lösung von Talend installiert und konfiguriert.
Weitere Videos zu Talend findet man im TalendChannel auf youtube.
Possibly related posts: (automatically generated)
- Related posts on howto
- How to use SoftBank prepaid on your US iPhone « chris.ivarson
- HOW TO MAKE PLUM WINE FROM SCRATCH – using 5 gallon demijohns …
- Howto: Make Firefox Load Faster | Fix Mozilla Firefox
Google Wave – Suche mit Operatoren
Mit Google Wave suchen ist ganz leicht, wenn man die verschiedenen Möglichkeiten kennt. Prinzipiell funktioniert die Suche wie auch bei der normalen Google-Websuche. Man kann einzelne Begriffe suchen, in dem man diese im Suchfeld der Reihe nach auflistet. Möchte man, dass ein Suchbegriff NICHT in den Treffern auftaucht, dann stellt man ein Minus davor.
Generell scheint es, als ob Google Wave ein hohes Maß an “Intelligenz” mitbringt. Sucht man zum Beispiel nach Waves, deren Inhalt mit Datenintegration zu tun hat, dann reicht es, wenn eine Wave-Nachricht nur einen Link zu www.talend.com enthält. Google scheint hier also auch sein Wissen um die Inhalte verlinkter Websites in die Trefferbewertung mit einfließen zu lassen.
Um Google Waves noch besser finden zu können, gibt es eine ganze Menge von Spezial-Operatoren für die Suche in Google Wave. Die folgende Tabelle listet alle auf, die ich bisher kennengelernt habe. Auf Vollständigkeit gebe ich natürlich keine Gewähr.
| Operator | Beschreibung | Beispiel |
| title:Suchbegriff | Findet alle Waves mit Suchbegriff im Titel | title:google, title:“google wave“ |
| lang:code | Findet alle Waves, deren vermeintliche Sprache dem code entspricht | lang:de, lang:fr, lang:en |
| caption:Suchbegriff | Findet alle Waves, die Bilder mit Suchbegriff in der Beschreibung enthalten | caption:bmw, caption:“bmw X5“ |
| creator:Name oder from:Name | Findet alle Waves, die von Name erzeugt wurden | creator:thomas, from:georg |
| participant:Name oder with:Name | Findet alle Waves, in die Name direkt involviert ist | participant:thomas, with:public |
| contributor:Name oder by:Name | Findet alle Waves, bei denen Name etwas geschrieben hat | contributor:thomas, by:claudia |
| to:Name | Findet alle Waves, bei denen Name ein Teilnehmer, aber nicht der Ersteller ist | to:thomas |
| dfrom:Name | Findet alle Waves, in denen Name eine Direct Message geschrieben hat | dfrom:meisterpropper |
| dto:Name | Findet alle Waves, in denen Name mit einer Direct Message angeschrieben wurde | dto:Palmolive |
| is:note | Findet alle eigenen Waves, die keine weiteren Teilnehmer haben (gelten als Notiz) | is:note |
| is:read | Findet alle Waves, die vollständig gelesen wurden | is:read |
| is:unread | Findet alle Waves in denen mindestens eine Nachricht nicht gelesen wurde | is:unread |
| has:tag | Findet Waves mit mindestens einem gesetzten Tag | has:tag |
| tag:Name | Findet alle Waves, die das Tag Name gesetzt haben | tag:urlaub |
| has:attachment | Findet Waves, die ein bel. Attachment enthalten | has:attachment |
| has:image | Findet alle Waves in denen Bilder eingefügt wurden | has:image |
| has:document | Findet alle Waves in denen Dokumente hinzugefügt wurden | has:document |
| onlyto:Name | Findet alle Waves bei denen Name der ausschließliche Empfänger ist | onlyto:thomas, onlyto:me |
Da sich Google Wave noch im Beta-Stadium befindet, wird sich diese Liste sicherlich noch verändern. Wer auch jetzt schon einen Operator kennt, der hier nicht aufgelistet ist, darf mir das gerne in einem Comment mitteilen.
Possibly related posts: (automatically generated)
- Related posts on google wave
- New 'Wave' of Communication and Collaboration – Google Wave
- 10 Tips to Better Google Wave Conversations
Categories: Google, Tutorial Tags: google wave, Tutorial
tFileFetch: HTTP-Zugriff in Talend Jobs
Mit tFileFetch kann man in seinen ETL-Prozessen auf beliebige HTTP-Server zugreifen, entweder um Dateien herunterzuladen, oder Daten zu übermitteln. Auch der Upload von Dateien ist dabei möglich. Ausserdem bietet tFileFetch auch den lesenden Zugriff auf Dateien auf einem FTP- sowie auf einem Samba (SMB)-Server. FTP und SMB-Zugriff werde ich jedoch in diesem Beitrag außenvorlassen.
![]()
Die Komponente tFileFetch, deren Name zugegebenermaßen nicht unbedingt auf die ganze dahinterliegende Funktionalität schließen lässt, befindet sich im Bereich Internet der Komponenten-Palette.
Wenn das Protokoll http ausgewählt ist, kann man zum einen Dateien und Seiten aus Talend herunterladen und zum anderen auch HTML-Formulare ausfüllen, ja sogar Dateien hochladen.
Im Feld URI muss man dazu die vollständige Adresse samt Protokoll (also http://) angeben. Das Destination Directory sollte auf das Verzeichnis zeigen, in dem das Ergebnis des Aufrufs abgelegt werden soll. Je nachdem, ob man nun eine Datei herunterlädt, eine Seite aufruft oder ein Formular abschickt, wird das Ergebnis des Aufrufs dort unter dem entsprechenden Namen abgelegt (also bei http://www.meinserver.de/xyz/index.html als index.html).
Möchte man dies nicht, so kann man im Feld Destination Filename auch einen eigenen Namen explizit vergeben.
Beim Zugriff auf HTTP-Server werden für das Öffnen eines Dokuments normalerweise die Methode GET und beim Versenden von Formulardaten die Methode POST verwenden. Auch wenn es noch weitere Zugriffsmethoden (wie z.B. PUT oder DELETE) gibt, werden diese von tFileFetch nicht unterstützt. Der Zugriff über GET bedingt, dass evtl. zu übertragende Formulardaten in der URL übergeben werden. Daher ist der Upload von Dateien nur mit POST möglich. Auch ist die Anzahl der Zeichen, die in einer URL enthalten sein dürfen auf unter 4000 beschränkt. Aus diesem Grund ist standardmäßig die Checkbox POST method aktiviert. Möchte man keine Formulardaten an den Server übermitteln, empfiehlt es sich daher, diese Checkbox abzuwählen.
In der Tabelle Parameters können die einzelnen Formularfelder in Form von Key-Value-Paaren ausgefüllt werden. Für jedes Feld fügt man einfach mit dem grünen Plus eine neue Zeile in der Tabelle hinzu. Die Spalte Name muss den Feldbezeichner enthalten während in Value der zu übertragende Wert eingetragen wird.
Möchte man Dateien mit dem Formular hochladen, so muss dies im Reiter Advanced settings eingerichtet werden. Hat man die Checkbox Upload ausgewählt, so erscheint darunter eine Tabelle. In dieser Tabelle trägt man nun wieder die Namen der File-Upload-Felder ein und unter File den absoluten Pfad zur Datei.
Beim Upload von Dateien ist es erforderlich, dass die Übertragungsmethode POST unter Basic settings aktiviert ist.
Ist beim Zugriff auf die angegebene URI eine HTTP-Authentifizierung erforderlich, so kann man die entsprechende Checkbox anwählen und dann den Benutzernamen und das Passwort angeben.
Seit der Version 3.2 von Talend Open Studio und Talend Integration Suite lassen sich Proxy-Einstellungen job-weit mit der Komponente tSetProxy einrichten, daher verzichte ich auf die Beschreibung der Proxy-Settings in tFileFetch.
Beim Zugriff auf einen Server kann natürlich auch einmal ein unerwünschter Zustand eintreten, wie z.B. eine Überlastung oder Downtime des Servers. Damit der Talend-Prozess dann nicht endlos wartet, bis seine Anfrage beantwortet wird, gibt es das Feld Timeout. Hier kann man die maximale Zeit, die die Komponente geduldig auf Response wartet, in Millisekunden angeben.
In diesem Beispielszenario wird ein Formular per POST an eine URL geschickt und, mit den per File-Upload übermittelten Transaktionen, aus der Datei transaktionen_2009_11.csv, eine CSV-Datei erzeugt. Diese wird als Ergebnis des Aufrufs im Verzeichnis /var/temp/result/ als umsaetze.csv abgelegt.
Da es sich bei dieser URL um einen geschützten Bereich auf dem Web-Server handelt, werden der Benutzername und das Passwort für die Authentifizierung mit übertragen. War der Aufruf erfolgreich, so werden die heruntergeladenen Daten mit der Komponente tFileInputDelimited eingelesen und mit tMysqlOutput in die Zieltabelle einer MySQL-Datenbank übertragen.
Aber auch eine Spam-Maschine lässt sich mit dieser Komponente relativ schnell und unkompliziert erstellen. Nur wie das geht werde ich hier sicherlich nicht vormachen.
Possibly related posts: (automatically generated)
- Related posts on komponente
- Hirnfasching.de» Blogarchiv » Neues aus den Niederlanden
- Alexander Ambronn » Coaching bei Umstrukturierungen stoppt …
- Rolf.Aschenbeck » Blog Archiv » Riesterrente rechnet sich nicht
Categories: Programmierung, Talends Software, Tutorial Tags: komponente, Talend, Tutorial
tServerAlive: Lebt denn der Server noch?
Beim Design von Datenintegrationsprozessen macht man sich oftmals viele Gedanken im Vorfeld. So werden Schwächen in der Datenqualität meist schon vorab ermittelt (z.B. mit Talend Open Profiler) und dann im ETL-Prozess eine entsprechende Optimierung umgesetzt.
Auch zur Laufzeit auftretende Fehler, wie der Klassiker, die NullPointer-Exception werden bereits berücksichtigt und z.B. mit tSchemaComplianceCheck verhindert. Aber eine Prüfung auf Verfügbarkeit eines entfernten Rechners (z.B. dem Datenbank- oder dem FTP-Server) wird eher selten explizit vorgenommen. Meistens laufen die entsprechenden Komponenten dann eben in eine entsprechende Exception und der Prozess wird (durchaus auch kontrolliert) beendet.
Dumm nur, wenn bis dahin schon andere System angezapft oder z.B. temporäre Dateien angelegt wurden. Viel Aufwand, der letztlich umsonst war und u.U. aber entsprechende Last verursacht hat.
Mit tServerAlive hat man die Chance, diese unnötige Last zu vermeiden. tServerAlive befindet sich in der Komponenten-Palette im Bereich Misc bzw. Verschiedenes. Die Komponente tServerAlive pingt ein entferntes System entweder über das Ping- oder das Telnet-Protokoll an.
Erhält tServerAlive im definierten Zeitraum (siehe das Feld Timeout) keine entsprechende Antwort vom Zielsystem, so ist das Ergebnis des Aufrufs false und wird in der globalMap abgelegt. Antwortet der angepingte Rechner hingegen, so schreibt tServerAlive true in die globalMap (z.B. tServerAlive_1_SERVER_ALIVE_RESULT).
Der Zugriff auf das Ergebnis erfolgt dann einfach via ((Boolean)globalMap.get(“tServerAlive_1_SERVER_ALIVE_RESULT”)).
Dieses Szenario pingt meinen Server an. Das Ergebnis des Ping-Versuchs wird mit Hilfe von tFixedFlowInput in einen künstlich generierten Datensatz übertragen.
Hier sieht man den vollständigen Zugriff auf das Ergebnis, in Form eines Boolean-Objekts (true/false), aus der globalMap.
Dieser Datensatz wird anschließend mit tLogRow auf die Konsole ausgegeben. Wie dieser Output dann aussieht, zeigt das Bild links.
Somit hat man ein einfaches Instrument an der Hand, um sicherzustellen, das entfernte Systeme, auf welche man in seinen ETL-Jobs zugreifen möchte, auch wirklich verfügbar sind.
Oder man programmiert sich mit tServerAlive und einer tInfiniteLoop einen Wächter, der einfach in regelmäßigen Intervallen prüft, ob noch alle Systeme laufen und ggfs. eine Status-EMail verschickt.
Possibly related posts: (automatically generated)
- Related posts on komponente
- Wir haben das Rauchverbot gelockert, so please stop smoking …
- In Israel wurde der Raketenabwehrschild der NATO geschmiedet und …
- Social Media – Spiegel der Gesellschaft « Totterturm
Categories: Programmierung, Talends Software, Tutorial Tags: komponente, Talend, Tutorial