[Talend]ETL処理後のCSVをAmazon S3へアップする

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

前回までのジョブ定義にS3へのアップ処理を追加する

前回までのジョブ定義についてはこちらから参照して下さい。

    S3へアップする方法として

  1. Talendで用意されているAmazonS3用のコンポーネントを利用する。
  2. javaコードを記述してアップロード

があります。

tS3Putでジョブ定義をしてみる

前者を利用する場合は下記からコンポーネントをドラッグ&ドロップしてステージに配置します。今回対象となるコンポーネントはtS3Putです。
TD2_1

早速ステージに配置してみると下記のように【外部モジュールのインストールが必要です。】と表示されますので、外部モジュールがインストールされていない場合にはインストールを済ませましょう。

TD2_2

インストールをクリックすると下記のような画面が表示され、aws-java-sdk-1.9.13.jarがインストールされます。 TD2_3

インストールが終わったので、コンポーネントを利用するために必要情報を設定します。具体的にはAccess Key、Secret Key、アップ対象のバケット名、アップ元対象のファイル名、アップ先対象のファイル名です。 TD2_4

設定が終わったらtFileOutputDelimitedで右クリックしてトリガを選んで【コンポーネントがOKの場合】で処理線を結びます。

TD2_5
これでtS3Putのジョブ定義は完成です。
TD2_6_2

実行してみる

実行前のS3バケットの状態
TD2_7_1
ジョブを実行した結果
TD2_8
実行後のS3バケットの状態
TD2_9_1
以上がTalendで用意されているtS3Putを使ったジョブ定義でした。

tJavaコンポーネントでS3へアップロードしてみる

tS3Putだけで十分なのですが、次はtJavaコンポーネントを使って同じような処理を実現するジョブ定義をやってみます。
まずはステージ上のtS3Putを一旦削除してtJavaコンポーネントをドラッグ&ドロップで配置し、tFileOutputDelimited上で右クリックして【コンポーネントがOKの場合】で処理線を定義します。 次にコンテキストを設定します。Contextsタブに切り替えて変数と値をセットします。(下記のように設定しました。)
TD2_10
tJavaを選択して、下記のようにコードを記述します。(コマンド実行するだけのものですが)
TD2_11

実行してみる

実行前のS3バケットの状態
TD2_12
ジョブを実行した結果
TD2_14
実行後のS3バケットの状態
TD2_13

まとめ

どちらもちゃんと指定したS3バケットへ処理結果のCSVファイルがアップされていることが確認できました。
まぁjavaコードを書かなくてもアップできる簡単なtS3Putを使った方がシンプルでいいと思いますが、アップロード対象となるファイルが複数あったりした場合はtJavaのコンポーネントを使った方がいいのかもしれません。
まだTalendに触れて間もないので、今は色々動かしてみてると言うことでご容赦ください。m(_ _)m