tMap利用におけるメモリ制限問題の解決

Talend Open Studio for Data Integration ユーザーガイド

EnrichVersion
5.6
EnrichProdName
Talend Open Studio for Data Integration
task
ジョブデザインと開発
EnrichPlatform
Talend Studio

大規模なデータソース、たとえば多数のカラム、多数の行、多数のカラムタイプなどを処理する場合は、メモリー不足の問題が発生する可能性があり、特に変換処理でtMapコンポーネントを使用する場合にジョブが正常に完了しないことがあります。

ルックアップのロード時に使用するメモリーを削減するためtMapコンポーネントに、フィーチャーが追加されました(現時点ではJavaのみ)。実際には、一時データをシステムメモリーに格納してメモリー制限に到達する危険を冒す代わりに、[Store temp data] (一時データ格納)オプションを使用することで、一時データをディスクのディレクトリに格納できます。

このフィーチャーは[Map Editor] (マップエディター)の入力データのルックアップテーブルで選択するオプションとして利用できます。

[Store temp data] (一時データ格納)オプションを有効にするは、次のようにします。

  1. ジョブにおいてtMapコンポーネントをダブルクリックして、[Map Editor] (マップエディター)を起動します。

  2. 入力エリアで、メモリーではなくディスクにロードする一時データを記述している[Lookup] (ルックアップ)テーブルをクリックします。

  3. [tMap settings] (tMap設定)ボタンをクリックして、テーブルプロパティを表示します。

  4. [Store temp data] (一時データ格納)に対応する[Value] (値)フィールドをクリックして表示される[...]ボタンをクリックし、[Options] (オプション)ダイアログボックスを表示します。

  5. [Options] (オプション)ダイアログボックスの中で、[true]をダブルクリックするか、選択してから[OK]をクリックして、オプションを有効にしてからダイアログボックスを閉じます。

このオプションを完全に有効にするには、データを格納するディスクのディレクトリ、および一時ファイルに収容するデータの行数でバッファーサイズを指定する必要があります。この一時格納ディレクトリおよびバッファーサイズは、[Map Editor] (マップエディター)またはtMapコンポーネントのプロパティ設定のどちらかを使って設定できます。

[Map Editor] (マップエディター)の一時格納ディレクトリおよびバッファーサイズを設定するには、次のようにします。

  1. 入力エリアの上部にある[Property Settings] (プロパティ設定)ボタンをクリックして、[Property Settings] (プロパティ設定)ダイアログボックスを表示します。

  2. [Property Settings] (プロパティ設定)ダイアログボックスで、一時データを格納するディレクトリへのフルパスを[Temp data directory path] (一時データディレクトリパス)フィールドに入力します。

  3. [Max buffer size (nr of rows)] (最大バッファーサイズ-行数)フィールドには、一時ファイルに格納できる最大行数を指定します。デフォルト値は2,000,000です。

  4. [OK]をクリックして設定を確定し、[Property Settings] (プロパティ設定)ダイアログボックスを閉じます。

[Map Editor] (マップエディター)を開かずにtMapコンポーネントのプロパティ設定で一時格納ディレクトリを設定するには、次のようにします。

  1. デザインワークスペースでtMapコンポーネントをクリックして選択し、[Component] (コンポーネント)タブを選択して、[Basic settings] (基本設定)ビューを表示します。

  2. [Store on disk] (ディスクへ格納)エリアで、一時データを格納するディレクトリへのフルパスを[Temp data directory path] (一時データディレクトリパス)フィールドに入力します。

    または、リポジトリの[Context] (グループ)に変数を設定している場合、Ctrl+スペースを押してコンテキスト変数を使用できます。コンテキストの詳細は、コンテキストおよび変数の使用を参照してください。

サブジョブの最後で一時ファイルはクリアされます。

このように、参照データがディスクに格納される一時ファイルに書き込まれるようにすることで、割り当てメモリの使用を制限できます。

注記

メインフローをディスクに書き込むにはデータのソートが必要になり、出力行の順序は保証されないことに注意してください。

[Advanced settings] (詳細設定)ビューでも、必要に応じてバッファーサイズを設定できます。[Max buffer size (nr of rows)] (最大バッファーサイズ - 行数)のフィールドに入力すると、データは必要な分のファイルに分割されてディスクに格納されます。