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

Talend Cloud Real-Time Big Data Platform Studioユーザーガイド

author
Talend Documentation Team
EnrichVersion
Cloud
EnrichProdName
Talend Cloud
task
ジョブデザインと開発
EnrichPlatform
Talend Management Console
Talend Studio
警告: ビッグデータのユーザーのみ: このフィーチャーはtMapのMapReduceバージョンでは利用できません。

大規模なデータソース、たとえば多数のカラム、多数の行、多数のカラムタイプなどを処理する場合は、メモリ不足の問題が発生する可能性があり、特に変換処理で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)] (最大バッファサイズ: 行数)のフィールドに入力すると、データは必要な分のファイルに分割されてディスクに保管されます。