ビッグデータのデータガバナンスを実現する
統合プラットフォーム
ビッグデータのデータガバナンスを実現する統合プラットフォーム
NEW!<毎月開催>Talend Studioでデータ処理の基本を学ぶ 有償トレーニング募集中
NEW!<毎月開催>Talend Studioでデータ処理の基本を学ぶ 有償トレーニング募集中
ヘッダーとは「ファイルの最初にスキップするレコード数」を指定します。 ここで指定された数字分の行数を読み飛ばして、データの取り込みを開始します。
フッターとは「ファイルの最後部でスキップするレコード数」を指定します。 これは、たとえばExcelの表で、下端に合計行がある場合に、その合計行の行数を指定しておくことで、データを上から読んでいったときに、下端の合計行をデータとして取り込まないようにすることができる、というものです。
ただしセルの内容が空でもExcelの書式設定などがされていると、それを有効なセルと判断し、結果、フッターの認識位置が期待と違ってしまう場合があるようで、使用には注意が必要です。
制限とは「処理する最大行数」を指定します。これは上から読んでいったときに、何行まで読み込むか、という制限値になります。
Talendの仕様として、一度tMapで分割したデータを一つのサブジョブ内でtMapで再度合体することはできません。
回避策としては、 例えば一度tHashOutputでメモリに出力し、tHashInputでメモリのデータを読み込み、再度tMapでJoinさせる、2つのサブジョブにより構成されるジョブを作成する必要があります。 その際、以下の2点にご注意ください。
データを分割するサブジョブとデータを合体させるサブジョブはトリガの[サブジョブが成功した場合(OnSubjobOk)]で接続します。
対応するtHashOutputとtHashInputのカラムの内容が一致していないとエラーになります
。(tHashOutputのスキーマの編集の画面でスキーマを選択コピーし、 tHashInputのスキーマの編集の画面でスキーマ情報を貼り付ける手順でカラムの内容を簡単に一致させることができます。)
なお、tHashInput/OutputがHide(隠れた)状態になっている場合は、Studio画面のツールバーから[ファイル] > [プロジェクトプロパティの編集]を選択し、 プロジェクトの設定の画面で[デザイナ] > [パレット設定]を開き、 左のHide側に表示されているフォルダ又はコンポーネントを右のShow側に移動させてください。
レコード件数の有無によって処理を分けるコンポーネントはないので、ジョブの組み方を工夫します。
例えばファイルからデータを読み込みtHashOutputに格納します。 この際にtJavaをトリガの「サブジョブが成功した場合(OnsubjobOk)」でtHashOutputの後に配置し、GlobalMap.get(“tHashOutput_1_NB_LINE”)を取得して一旦コンテキスト変数に格納しておくと行数のデータを後で参照する際には便利です。
トリガの[IF]で「context.row_count>0」の場合のみtHashiInputからデータを読み込み処理を行う後続のサブジョブを実行するようにすれば、レコード件数が1以上の場合の処理を組むことができます。 また、 「context.row_count=0」という指定をした[IF]を使用することで、レコード件数が0件の場合の処理を組むこともできます。
tWarnを使用するだけでは、ジョブのステータスはエラーと判断されません。
ジョブを実行した際に問題が発生し完了しないまま異常終了した場合、又はtDieでジョブが強制終了された際に、Basic StatusにはWarning(三角に!マークのアイコン)が表示されます。
tWarnの単体での使用方法としては、Logにメッセージを残すことしか基本的にできません。
ただしtWarnの警告メッセージ、警告コード、優先度(3つともユーザがtWarn使用時に任意に設定可能)が変数として使用できます。従って、tDieや他のコンポーネントを組み合わせる(変数を使用する)ことでより効果を発揮します。
使用方法の一例として、ジョブ実行時のtWarnの警告コードまたは優先度をtJavaで集計し一定以上の場合tDieでジョブを強制終了する事が可能です。
tFileInputPropertiesとtContextLoadコンポーネントにより可能です。
その他の方法としては、設定ファイルを使用するのではなく、ジョブにContext変数を準備しておき、バッチ実行時に引数で値を渡す方法も考えられます。
tMap上のルックアップの処理でOutOfMemoryが発生した場合には、大量のデータを利用する場合には「基本設定」の「一時データをディスクに保存」を選択することで、データが一時的にファイルに書き込むことが可能なので、メモリがパンクするのを防げます。
tMysqlOutputがコミットしてしまうため、途中でエラーが発生してしまった場合にRollBackができません。
[tMysqlOutput]の設定項目には「既存の接続を使用」という項目があり、それを選択することで[tMysqlConnection]でコネクションを張った接続を使用することができます。その上でトリガでtMysqlRollBackコンポーネントとエラートリガで接続して制御します。
これを選択しない場合は、[tMysqlOutput]自体でコネクションを新規に張りますので、[tMysqlOutput]のコンポーネントを実行したタイミングでコミットが発生します。
フルアウタージョインの設定は、製品の標準機能としては提供しておりません。 その他の方法としては、フルアウターの実装方式は、ソース・ターゲット、データ量等を加味して、様々な実装方式が考えられます。
性能や稼働環境の資源面で、一様な方式に実装を束縛することが得策ではないため、製品機能としては提供しておりません。
Talendでの対応としては、フルアウタージョインの結果を出力するジョブを作成する必要があります。
例えばIDをメモリ中のハッシュに保持し次にルックアップで不要なデータを読み飛ばし、最後に直列結合する方法が考えられます。
可能です。
t<DB>Outputコンポーネントから「row-reject」接続により、エラー発生時にエラーデータを出力することが可能です。
ただし「row-reject」接続は、下記の設定をすることで利用可能になります。
(1) t<DB>Outputの基本設定で「エラーで停止」をOFFにする。
(2) Advanced Settingsで、MySQLの場合は「挿入の拡張」をOracleやPostgreSQLでは「バッチサイズの使用」をOFFにする。
※バッチジョブとして実行できなくなるため、パフォーマンスに影響があります。
リスト形式は固定値になってしまうため、JOB実行時毎にコンパイルする必要があるように見えます。
しかし、リスト形式で選択するプロパティは一番上の空白を選ぶと手入力できるので、そこに context.xxx のような形でコンテキストを指定できます。
ジョブ側では実行毎に決められたログに追記するのみで、ローテーションの機能はありません。
そこで、例えばログの出力ファイル名の設定にGlobalMapを使用して「プロジェクト名」「ジョブ名」「GetCurrentDate」を付加しておいて、ログを分けるようにします。
別にログファイル削除用の仕組みをShellや、必要な場合Talendのファイル操作ジョブにて用意し、定期的に実行すると言った方法が考えられます。
Q-P12:いくつかのジョブを実行すると、log4jの警告メッセージが標準出力されます。
「log4j:WARN No appenders could be found for logger
(com.amazonaws.internal.
config.InternalConfig).
log4j:WARN Please initialize the log4j system properly.」
コンポーネントの中にlog4jを使用するものと使用しないものがあります。
使用するものについては、Talend Studioのプロジェクト設定で、log4jの出力を有効に(log4jコンポーネントをアクティベーションにチェック)することで、log4jの設定ファイルが含まれたバッチがエクスポートされるようになり、ジョブの実行時の警告もでなくなります。
デフォルトでは上記の設定がオフになっているため、警告が出力されます。
[ウインドウ]->[ビューの表示]で「Show View」ウインドウを表示し、[Talend]のフォルダの中から表示させたいタブを選択してOKを押下するとタブが再度表示できます。
または、右上パースペクティブ選択ボタンの「Integration」上で右クリックし「リセット」を実行することで初期状態に戻すことも可能です。
MetaServletについてはマニュアルには、可能な機能やパラメタについての詳細な記載がなく、ヘルプをご参照頂く形になります。
MetaServletCaller.bat–tac-url=http://localhost:8080/org.talend.administrator/ –help all(/Task名)
例えばジョブを即時実行する場合には、下記のようなコマンドを実行します
\Talend\5.6.2\tac\apache-tomcat\webapps\org.talend.administrator\WEB-INF \clases >MetaServletCaller -url=http://localhost:8080/org.talend.administrator/ -json -params {“actionName”:”runTask”,”taskId”:1,”mode”:”synchronous”,”authPass”:” admin”,”authUser”:”admin@company.com”}
例えば、TOSに標準で搭載されている tWebServiceInput コンポーネントで可能です。
詳しくはコンポーネントガイドのtWebServiceInputのページをご参照ください。
Talend Studioが利用するJDBCドライバ等のモジュールを、サードパーティのサイトよりダウンロードする機能となります。
エラーになった場合の対応方法としては、サードパーティ側のサイトの状態等により、一時的にダウンロードできない可能性がありますので、まずは時間を変えて再実行してみます。
それでもエラーとなる場合は、既にインストールできている他の環境より
/Configuration/lib/java/ (バージョン5)または
/configuration/.m2/repository/org/talend/libraries(バージョン6)
配下のファイルをコピーするか、直接サードパーティのサイトよりエラーとなっているファイルを取得し、Studioのウィンドウ→Modulesビューより追加します。
tFileOutputDelimiterdで作成したUTF-8エンコードのCSVファイルを、MS Excelで開くと文字化けして見えます。原因は、UTF-8形式のCSVをExcelで開けないという、Excel側の制限事項となります。
https://support.microsoft.com/ja-jp/kb/821863
CSVファイルはExcelで利用することを目的としたフォーマットではないので、テキストエディタで開くか、Excelで表示・編集する場合はSJISエンコーディングにするか、tFileOutputExcelによりExcelファイルとして出力して下さい。
Studioからジョブを実行すると、下記の通り、分までの表示です。
例:
ジョブ get_response_body を 14:35 01/01/2016 に開始しました。
[statistics] connecting to socket on port 4028
[statistics] connected
XXXX
XXXX
[statistics] disconnected
ジョブ get_response_body が 14:35 01/01/2016 に終了しました。 [終 了コード=0]
秒単位で開始終了時刻を確認するには、開始時刻及び終了時刻の内容はStatsログとしてCatch可能です。
その場合、tStatCatcher コンポーネントでキャッチした上で tLogRow コンポーネントでコンソール上に出力するか、ジョブのログ設定で標準出力に出すように設定する必要があります。
詳細については下記のオンラインマニュアルもご参照下さい。
→ オンラインマニュアル
基本機能ではヘッダに書式は設定できないため、ジョブで工夫が必要になります。
たとえば、tJavaRowを利用した作りこみでも実現可能ですが、コンポーネントを組み合わせた方法としては、例えば以下のようなものが考えられます。
1. データをヘッダー行としてCSVファイルへ書き出す。
tFileOutputDelimitedで1行の実データをヘッダとしてCSVファイルへ書き出す。この場合は、引用符で囲むことができます。
2.対象の実データをヘッダ抜きで同じCSVファイルへ追加で書き込む。
tFileOutputDelimitedで対象のデータをヘッダ抜きで「(1)で作成されたヘッダー行を既に持つファイル」へ追加で書き込みます。(「基本設定」の「追加」をONとします)
MultiPartUploadの機能がTalend 6.3.1より追加されましたので、新バージョンに移行の上、詳細設定の「Part size(Mb)」のサイズを必要に応じて変更してください。
先にファイルの存在確認とループを組み合わせれば可能と考えられます。
tLoop(tSCPFileExists_1_STATUSでループ抜け判定) – tSCPFileExist – 後続に本処理
現行のルーチンでは、一つのジョブ内で連番をリセットする方法はございません。 同じ関数を複数回呼び出した場合、前回値をそのまま持っているため、カウントアップも引き継がれることになります。
対応策としては、ルーチンのカスタマイズが必要となります。
xlsxに限らず、カラム名はジョブのソースコードに含まれますが、一つのTalendジョブのソースコードの最大サイズは65,536バイトとなっているため、カラム数が多い場合はサイズが超過する可能性がございます。
製品の仕様上、サイズは大きくできないので、カラムを分けて複数回ファイルを読み込むような対応が必要となります。