Talend Open Studio for Data Integrationを試してみた
データ抽出、変換、投入などいわゆるETLに利用できるTalend Open Studio for Data Integrationを試してみました。Talend Open Studio for Data IntegrationはTalend Open StudioというTalend社が提供するオープンソースのデータ管理周りの製品の1つです。Talend Open StudioはEclipseベースのグラフィカルな開発環境となっており、データのマッピングなどを直感的に行うことが出来ます。Talend Open Studioでは目的ごとに製品を分けており、Talend Open Studio for Data Integrationはその名の通りデータ統合を目的とした製品です。また、有償の高機能版としてTalend Enterprise Data Integrationという製品も存在します。
今回はTalend Open Studio for Data Integrationのチュートリアルを実際に試してみて、気づいた点などを記述します。今回試したチュートリアルは5mn Demo - Talend Open Studio for Data Integration Overviewになります。ちなみに、タイトルは5mnとありますが、少なくとも30分ぐらいは掛かる感じでした。チュートリアルはスクリーンショットが古かったり、英語と日本語の違いなどがありましたので、その辺りについては別レポートを挙げられればと考えています。なお、以下はチュートリアルの最後の方に完成するジョブのスクリーンショットです。
環境
今回チュートリアルを試した環境は以下になります。
- Mac OS X 10.9.2(チュートリアル自体はWindows環境で書かれています)
- Talend Open Studio for Data Integration 5.4.1.r111943(Mac用)
- Oracle JDK 1.7.0_45(Talend Open StudioはEclipseベースなのでJavaランタイムが必要になります)
- MySQL 5.6.13(Homebrewでローカルにインストールしているものです)
Talend Open Studio for Data Integrationについてはダウンロードページを開き、[Data Integration]タブをクリックし[無料のツールをダウンロード]をクリックして下さい。そしてご利用のOSに対応したものをダウンロードして解凍しておいて下さい。なお500MB以上あるのでご注意下さい。
チュートリアル概要
以下の内容を順番に試すチュートリアルでした。
- 新規プロジェクトとジョブの作成
- CSVファイルの読み込み/変換
- CSVファイルとMySQLのテーブルから読み込んだ結果を結合してMySQLの別テーブルに出力
- ジョブをエクスポート
なお、前提として以下のジョブを実行してMySQLにテーブルを作成するようにとなっていたので、実際には既存ジョブのインポートと接続設定の変更という作業も必要になります。
- Customers2DbTable_0.1
- States2DbTable_0.1
最初のステップ
チュートリアルの最初のページです。このチュートリアルではTalend Open Studio for Data Integration(以下、TOS_DI)上で新規ジョブを作成し、そのジョブの中でCSVファイルを読み込んでログ出力するという所までを試します。TOS_DIを起動して下さい。以下がポイントになります。
- TOS_DIは日本語化されているため、チュートリアルの項目名等は適宜読み替えて下さい。
- [Prerequisites:]が書かれているように014.zip(画面上ではexampleFile.zip)をダウンロードして解凍しておいて下さい。
- customers_demo5mn.csvは014.zipに含まれます。
- Customersのメタデータをドラッグする場合、MacはCtrlキーになります。
- CustomersとtLogRowをつなぐ際は、Customersを右クリックして[Row]-[メイン]を選びます。ここは見つけるのに時間が掛かりました。
5mn Demo - tMap Essential Features
では次のステップです。ここではtMapを利用したデータ変換を試します。CustomersのCSVに含まれるlastnameを大文字に変換し、idを5倍にして出力します。
ポイントとしてはチュートリアルではtMapをドロップすると自動的にリンクがrow1とrow2になるように書かれていますが、実際にはtMapからtLogRowに対する出力名の入力が求められます。適当な名前を入力して下さい(スクリーンショットでは「row2」としています。ただ、チュートリアルとは逆になってしまうので微妙なのですが)。また、続けて[ターゲット コンポーネントスキーマの取得しますか?]というダイアログでは[はい(Y)]をクリックして下さい。これでチュートリアルと似たような状態になります。(その後に出てくるtMap Editor上において手動で設定することも可能です。)
5mn Demo - Set up a Join
では次のステップに進みます。ここではCustomersのCSVファイルとMySQLのstatesテーブルを結合して、MySQLのcustomersテーブルに出力するように既存のジョブを変更します。
MySQL上のstatesテーブルとcustomersテーブルは最初にダウンロードした014.zip内のdemo5mn_prerequisite.zipからテーブル作成用のジョブをインポートして作成します。なお、テーブル作成用のジョブでもMySQLに接続することになるため、まずはチュートリアルの①Create and use Db Connection metadataに沿ってDB接続用のメタデータを作成して下さい。
- MySQL上に「demo5mn」というデータベースを予め作成しておいて下さい。
- DB接続が初回の場合、JDBCドライバのダウンロード画面が表示されるのでダウンロードして下さい。
ではdemo5mn_prerequisite.zipをインポートしてMySQLにテーブルを作成します。この手順はチュートリアルに記載されていないため詳細に記述しておきます。まずは[ジョブ]を右クリックして[項目のインポート]を選んで下さい。[項目のインポート]ウィザードが表示されるので[アーカイブ・ファイルの選択(A):]をクリックしてdemo5mn_prerequisite.zipを選択します。すると[項目リスト]にジョブが表示されるためすべて選択して[終了(F)]をクリックして下さい。
Customers2DbTable_0.1とStates2DbTable_0.1のジョブがインポートされているのでそれぞれ開き、以下の設定を変更して実行します(ジョブを開く際にメタデータが一致せず警告が出ますが修正するので気にせず開いて下さい)。
- CSVファイルのパス
- MySQLへの接続情報
CSVファイルのパスのパスについてはそれぞれのジョブ上で左側にある区切り記号付きファイルコンポーネントのパスを修正します。それぞれ区切り記号付きファイルのコンポーネントをダブルクリックして、コンポーネントビュー上でファイルのパスを014.zipに含まれていた対応するファイルのパスに変更して下さい。
次に右側のDB接続コンポーネントの接続情報を修正します。[プロパティタイプ]を[組み込み]から[リポジトリ]に変更し、①Create and use Db Connection metadataで作成したMySQLへのDB接続メタデータに変更して下さい。
最後にそれぞれのジョブを実行します。実行するとMySQL上にstatesテーブルとcustomersテーブルが作成されます。
後はチュートリアルの手順に沿って進めるとCustomersとCSVファイルとstatesテーブルを結合した結果をcustomersテーブルに投入するジョブを作成することが出来ます。ポイントは以下になります。
- tMap editorのstatesテーブルに関しては利用するPostalとStateのCOLUMNのみ追加するようにして下さい。最初に間違えてstatesテーブルの全COLUMNを追加したら、チュートリアルの中でSQL Builderウィザードを使って選択するカラムを減らしている箇所と整合性が取れず、最後にジョブを実行したタイミングで例外が発生しました。
- customersテーブルを出力先としてドラッグする場合、MacはOptionキーになります。
- ジョブ実行時に[trace]のチェックボックスにチェックとありましたが、見つけられませんでした。
5mn Demo - Export Job Script
いよいよ最後のステップです。ここでは作成したジョブをエクスポートして任意の環境で実行できるようにします。チュートリアルでは[Export Job]と書かれていますが実際には[Build Job]を使ってエクスポートします。実行するとDemo5min_0.1.zipが作成されます。解凍してみるとJavaのライブラリファイルであるjarファイルと実行用のシェルが生成されていることが分かります。また、元となるJavaソースについても含まれています。つまり、TOS_DIはグラフィカルなエディタで入力した内容からJavaソースを生成することが出来る製品だったということです。ソースファイルも添付されているためいざという時に安心感がありますね。
感想など
ということでTalend Open Studio for Data Integrationの体験レポートは以上になります。Talendは製品が多いため最初は戸惑いましたが、チュートリアルを一通りやってみることで全体像はつかめた気がします。触ってみた印象としてはかなり使えそうという印象です。私自身ログファイルを加工したり集計するような仕事をしてきた経験がありますが、簡単なものであればGUIでマッピングした方が楽ですし、GUIであるため自分以外の担当者に説明したりするのも簡単そうだという印象を持ちました。細かな部分やエラー処理などはある程度ノウハウを貯めないといけない気がしますが、Javaソースを出力しているという点は力技で逃げられるという安心感があるなという印象です。今後も追加で調査した内容についてレポートしていけれればと考えています。