clock2015.09.19 10:18
SERVICE
home

Talendがバッチ処理の開発方法を変える ~スマートな開発を行おう~|Talend Open Studio によるビッグデータ分析(第8回)

AUTHOR :   ギックス

Talendを使えば、バッチ開発者は”プログラム”ではなく”処理手順”に注力すればよい

今まで7回に渡って、Talendの使い方について解説を行ってきました。その中でTalendは、ETLツールとして、非常に簡単に、かつ、柔軟にETLジョブが作れることは理解して頂けたと思います。今回は、今までの纏めを通して、TalendをETL処理以外の場面で使用することの優位性について触れたいと思います。

システム設計書からノンプログラミングでTalendジョブを作れる

例えば、ETL処理として、フォルダ内の複数のファイルを読み込み、変換して、データベースのAmazon Redshiftのテーブルにファイルをインポートする処理の開発しようとした場合、Talendジョブでは、下記のようになります。talendflow

通常の開発では、プログラミングを熟知し、Redshiftなどのクラウド環境の開発経験があるプログラマーを探すか、システム会社に依頼することになります。そして、この時の開発工数は、プログラミングと試験だけで4~5日(約20~30万円)ほど掛かります。

「なぜ、これだけの開発工数が必要であるか?」と思われる方も多いと思います。これは、処理手順(処理フロー)には見えない、下記のような手続きが多く含まれて、それらに対して、プログラミングのステップ数と試験数が多くなってしまうからです。

  • 入力フォルダの検索手続きと最終ファイルの判定
  • 入力ファイルの読み込み手続きと最終行の判定
  • 出力ファイルの書込み手続き
  • Amazon S3への接続とアップロード処理
  • Redshiftへの接続とインポート処理

そして、これらが、高いスキルのプログラマーが必要となる一番の要因です。

しかし、Talendでは、これらの面倒な手続きを完成された多くのコンポーネントの中で処理します。そのため、Talendのジョブ開発者は、処理手順の本筋にのみ注力すれば、プログラミングの経験がなくても開発を行うことが可能です。そして、プログラムの記述を少なくすることで、プログラミングレベルのバグを減らすことができるため、結果、品質の高いジョブを開発することができます。

ツールの仕様の限界がない:全ての処理をTalend内で完結できる

Talend以外にも、ノンプログラミングのELTツールやフレームワークは、数多くあります。しかし、これらのツールと圧倒的に異なる点は、仕様の柔軟性があります。

通常のツール、フレームワークにも、多くの優れたコンポーネントや機能があり、多様なジョブを作成することができます。しかし、これらのコンポーネント以上の処理を実装しようとした場合、ツール外の開発環境で実行モジュールを作成し、これをツールから呼び出す必要があります。この処理では、実行モジュールを開発する工数が発生し、また、実行モジュールとツールのデータ連携を密に行えないため、データの受渡方法に制限が出たり、外部モジュールでエラーが発生した場合に原因を特定しにくいなどの事態が発生する可能性があります。

しかし、Talendは、ツール内でJavaプログラムを直接記載することができます。そのため、コンポーネント以上の処理を実装しようとした場合、Talendのコンポーネントの処理結果を使って、Javaプログラムで処理し、結果をTalendのコンポーネントに戻すことも可能になっています。これによって、Javaプログラムが、Talendの処理の一部として機能し、データの受渡方法制限を受けることなく、エラーの原因特定も行いやすくなります。また、AWS SDKなどの他社が作ったJava外部ライブラリを組み込むことも可能なため、非常に多くの処理をTalend内で完結することが可能になってます。talendsystem

Talendジョブの実行モジュールはJavaプログラムだから何処でも動く

Talend以外のジョブ開発ツールで作成したジョブについて、サーバーなどの実運用環境で動作させる場合、動作条件として同一のツール、または専用ランライムがインストールが必要になる場合があり、これらの環境構築が手間になる場合がありました。

Talendのジョブの場合、実行モジュールを外部出力(エクスポート)することが可能になっています。この実行モジュールは、Javaプログラムや外部ライブラリなど一式を圧縮したものであり、動作に必要なファイルは全て含まれています。そのため、実運用環境には、Javaランタイム(Talend 5.6の場合はJavaバージョン7以上)があれば、OSに依存することなく、何処でも動作させることができます。また、実行モジュールの中には、ジョブを実行するためのバッチファイル(Windows用)やシェルファイル(Linux系用)が含まれていますので、Java未経験者でもジョブを実行させることが可能になっています。talendjob

Hadoop、Spark、ポート監視などの多様なコンポーネントが標準インストール

Talendには、今まで紹介したコンポーネント以外に、Hadoop(Talend Open Studio for Big Data)、Spark(Talend Open Studio 5.6 for Big Data以降)などの最新の技術に対応したコンポーネントが準備されています。これらを使用することで、特殊な手続きやプログラムの数を減らすことが可能なため、開発の敷居を下げることが可能になっています。

また、ポート監視のコンポーネントがあるため、Talendでジョブを作成し、実行モジュールをエクスポートすれば、Javaを実行できるIoTデバイスのバッチとして使用することも可能になっています。

バッチモジュールはTalendで作成した実行モジュールを組み込む

これまでの説明で、Talendは、非常に多くのコンポーネントにより、ノンプログラミングでジョブを作成できます。また、Javaプログラムも記載できるため、全ての処理をTalend内で完結できます。そして、作成したジョブは、IoTデバイスなどにも導入することがご理解できたと思います。これによって、今までバッチ開発を外部委託していた企業が、処理手順だけ作れるようになれば、簡単なジョブを開発することも可能になります。また、最初は簡単なジョブしか開発できなくとも、徐々にステップアップしていけば、複雑なジョブもTalendで開発できるようになります。

次回は、Talendの商用版が必要になる基準について、Talendの利用用途の観点からご紹介したいと思います。

【連載、Talend Open Studio によるビッグデータ分析】
  1. ”Talend”と”RapidMiner Studio”、2つのETLツールを比較してみた
  2. Talendのインストールと初期設定(Windows 8.1編) ~Javaのバージョンに気を付けろ~
  3. Talendで簡単なジョブの作成
  4. フォルダ中のファイルを変換して1つにまとめる
  5. フィルタリングと文字列置換とプログラムによる変換方法
  6. DB間のデータコピーを2つのコンポーネントだけで行う
  7. Amazon Redshiftへのデータインポートを2つのコンポーネントだけで行う
  8. Talendがバッチ処理の開発方法を変える ~スマートな開発を行おう~ (本稿)
  9. Talendの無償版(TOS)と有償版(Enterprise)の違い
  10. TOSを使ってMicrosoft Azure SQL Data Warehouseを操作する
  11. TOSでギガ単位の適切なテストデータを作成する
  12. Web API からの取得結果をデータベースに登録する処理をノンプログラミングで実現する
SERVICE