# Apache Spark BatchのtHMapInputプロパティ

これらのプロパティは、Spark Batchジョブのフレームワークで実行されているtHMapInputを設定するために使われます。

Spark BatchのtHMapInputコンポーネントは、変換処理ファミリーに属しています。

このコンポーネントは、ビッグデータ対応のTalend Platform製品およびTalend Data Fabricで利用できます。

## 基本設定

| [Storage] (ストレージ) | HDFS環境に接続するには、[Define a storage configuration component] (ストレージ設定コンポーネントを定義)チェックボックスをオンにし、ドロップダウンリストの中から使用するコンポーネントの名前を選択します。<br><br>tHDFSConfigurationコンポーネントのドキュメンテーションで説明されているように、このオプションを有効にするには、使用するHDFS環境への接続をあらかじめ設定しておく必要があります。<br><br>[Define a storage configuration component] (ストレージ設定コンポーネントを定義)チェックボックスをオンにしない場合、ファイルをローカルでしか変換できません。 |
| --- | --- |
| コンポーネントの設定 | このコンポーネントを設定する前に、ダウンストリームコンポーネントを追加してtHMapInputコンポーネントにリンクし、ダウンストリームコンポーネントからスキーマを取得しておく必要があります。<br><br>コンポーネントを設定するには、[...]ボタンをクリックし、[Component Configuration] (コンポーネントの設定)ウィンドウで次の手順を実行します。<br><br><ol> <li> <p><span>[Record structure] (ストラクチャーを記録)</span>フィールドの横にある<span>[Select] (選択)</span>ボタンをクリックし、<span>[Select a Structure] (ストラクチャーを選択)</span>ダイアログボックスが開いたら、使うマップを選択して<span>[OK]</span>をクリックします。</p> <p>ストラクチャーはあらかじめ<em> <span>Talend Data Mapper</span> </em>で作成しておく必要があります。</p> </li> <li> <p>ドロップダウンリストから、使う<span>[Input Representation] (入力表記)</span>を選択します。</p> <p>サポートされる入力形式は、Avro、COBOL、EDI、Flat、IDocs、JSON、XMLです。</p> </li> <li> <p><span>[Next] (次へ)</span>をクリックします。</p> </li> <li> <p>新しい各レコードの開始位置をコンポーネントに指定します。この操作を行うには、データのストラクチャーを完全に理解している必要があります。</p> <p>正確な操作方法は、使用する入力表現によって異なり、次のオプションのいずれかを選ぶ必要があります。</p> <ol> <li> <p>データの適切なレコード区切りを選択します。この値は引用符で囲まずに指定する必要があります。 </p> <ul> <li> <p> <span>[Separator] (区切り文字)</span>では、改行を特定する<em>\n</em>などの区切り文字指示子を指定できます。</p> <p>サポートされている指示子は、Unixタイプの改行では<em>\n</em>、Windowsの場合は<em>\r\n</em>、Macの場合は<em>\r</em>、タブ文字の場合は<em>\t</em>です。</p> </li> <li> <p> <span>[Start/End with] (開始/終了文字)</span>では、<em>&lt;root</em>など新しいレコードを示す開始文字、またはレコードの終了を示す文字を指定できます。</p> <p> <span>[Start with] (開始文字)</span>は改行もサポートし、サポートされている指示子は、Unixタイプの改行では<em>\n</em>、Windowsの場合は<em>\r\n</em>、Macの場合は<em>\r</em>、タブ文字の場合は<em>\t</em>です。</p> <p>レコードの先頭と一致する正規表現を入力する場合は、<span>[Regular Expression] (正規表現)</span>チェックボックスをオンにします。XMLまたはJSONを選択すると、このチェックボックスはデフォルトでオンになり、事前設定された正規表現が提供されます。</p> </li> <li> <span>Sample File (サンプルファイル)</span>: サンプルファイルで署名をテストするには、<span>[...]</span>ボタンをクリックし、サンプルとして使用するファイルを参照し、<span>[Open] (開く)</span>をクリックし、<span>[Run] (実行)</span>をクリックしてサンプルをテストします。<p>署名をテストすることで、レコードの総数、レコードの最小長と最大長が、データに基づく値に相当するかを確認できます。このステップでは、サンプルとして使うデータのローカルサブセットがあることを前提とします。</p> </li> <li> <p><span>[Finish] (終了)</span>をクリックします。</p> </li> </ul> </li> <li> <div>入力表現がCOBOLまたはフラットで、位置またはバイナリエンコーディングプロパティが指定されている場合は、入力レコードストラクチャーの署名を定義します。<ul> <li> <span>[Input Record root] (入力レコードルート)</span>は、入力レコードのルートエレメントに相当します。</li> <li> <p> <span>[Minimum Record Size] (最小レコードサイズ)</span>は、最小レコードのバイト単位のサイズです。コンポーネントは、新しいレコードを探す時に必要以上に多くチェックを実行するので、この値を低く設定しすぎるとパフォーマンスの問題が生じる可能性があります。</p> </li> <li> <p> <span>[Maximum Record Size] (最大レコード数)</span>は、最大レコードのバイト単位のサイズで、入力の読み取りに割り当てられたメモリ量を判別するために使用されます。</p> </li> <li> <span>Sample from Workspace (ワークスペースからのサンプル)</span>または<span>Sample from File System (ファイルシステムからのサンプル)</span>: サンプルテストで署名をテストするには、<span>[...]</span>ボタンをクリックしてから、使用するファイルを参照します。<p>署名をテストすることで、レコードの総数、レコードの最小長と最大長が、データに基づく値に相当するかを確認できます。このステップでは、サンプルとして使うデータのローカルサブセットがあることを前提とします。</p> </li> <li> <p> <span>[Footer Size] (フッターサイズ)</span>は、フッター(ある場合)のバイト単位のサイズです。実行時にフッターは、最後のレコードに誤って含まれずに無視されます。フッターがない場合はこのフィールドには何も入力しないでください。</p> </li> <li> <p><span>[Next] (次へ)</span>ボタンをクリックして<span>[Signature Parameters] (署名パラメーター)</span>ウィンドウを開き、レコード入力ストラクチャーの署名を定義するフィールドを選択し(つまり、新しいレコードの開始位置を識別するため)、<span>[Operation] (オペレーション)</span>カラムと<span>[Value] (値)</span>カラムをアップデートし、<span>[Next] (次へ)</span>をクリックします。</p> </li> <li> <p><span>[Record Signature Test] (署名テストを記録)</span>ウィンドウが開いたら、<span>[Back] (戻る)</span>ボタンと<span>[Next] (次へ)</span>ボタンでレコードをスクロールしてビジュアルチェックを実行することで、レコードが正しく描出されていることを確認し、<span>[Finish] (終了)</span>をクリックします。</p> </li> </ul> </div> </li> </ol> </li> <li> <p>開いた新しいマップでエレメントを入力ストラクチャーから出力ストラクチャーにマップし、<span>[Ctrl]+[S]</span>を押してマップを保存します。</p> <p>マップの作成については、<em> <span>Talend Data Mapper</span>ユーザーガイド</em>をご覧ください。</p> </li> </ol> |
| Input (入力) | [...]ボタンをクリックして、入力ファイル保存先へのパスを定義します。 |
| Open Map Editor (マップエディターを開く) | [...]ボタンをクリックしてマップを開き、 *Talend Data Mapper* のマップエディターで編集を行います。<br><br>詳細は、 *Talend Data Mapperユーザーガイド*をご覧ください。 |
| **Die on error (エラー発生時に強制終了)** | このチェックボックスは、デフォルトで選択されています。<br><br>エラーの発生した行をスキップし、エラーが発生していない行の処理を完了するには、このチェックボックスをオフにします。<br><br><br>チェックボックスをオフにすると、以下のオプションが使えます:<br><br><ul> <li> <div><span><span>[Row] (行)</span> &gt; <span> [Rejects] (拒否)</span></span>接続を使って、tHMapInputコンポーネントをtAvroOutputなどの出力コンポーネントに接続させます。出力コンポーネントでは、次のカラムを持つ固定メタデータを必ず追加してください:<ul> <li>inputRecord: 変換中にリジェクトされた入力レコードを含みます。</li> <li>recordId: レコード識別コードを参照します。テキストまたはバイナリ入力の場合、recordIdは入力ファイル内のレコードの開始オフセットを指定します。AVRO入力の場合、recordIdは入力が処理された時のタイムスタンプを指定します。</li> <li>errorMessage: 変換ステータスと変換エラーの詳細な原因が含まれています。</li> </ul> </div> </li> <li> <p>リジェクトしたレコードを1つのファイルに取得できます。これらのメカニズムの1つにより、この機能がトリガーされます: (1)コンテキスト変数(<span>talend_transform_reject_file_path</span>)および(2)詳細ジョブパラメーターで設定されているシステム変数(<span>spark.hadoop.talend.transform.reject.file.path</span>)。</p> <p>ファイルパスをHadoopディストリビューションファイルシステム(HDFS)で設定する場合、その他の設定を行う必要はありません。Amazon S3または他のHadoop互換ファイルシステムでファイルを設定する場合は、関連付けられたSpark詳細設定パラメーターを追加します。</p> <p>実行時にエラーが発生すると、<span>tHMapFile</span>によってメカニズムの1つが存在するかがチェックされ、存在する場合は、拒否されたレコードが指定ファイルに追加されます。拒否されたファイルの内容には、拒否されたレコードの連結が含まれ、追加のメタエータはありません。</p> <p>使用するファイルシステムでファイルへの追加がサポートされていない場合、拒否ごとにファイルが個別に作成されます。このファイルは、提供されたファイルパスをプレフィックスとして使用し、入力ファイルのオフセットであり、拒否されたレコードのサイズであるサフィックスを追加します。</p> </li> </ul><br><br>情報メモ注: 拒否の保存中に発生したエラーはログに記録され、プロセスはそのまま続行します。 |

## 使用方法

| 使用ルール | このコンポーネントは、HDFSストレージへの接続を定義するtHDFSConfigurationコンポーネントと共に使います。<br><br>これは入力コンポーネントで、出力フローを必要とします。 |
| --- | --- |
| Talend Runtimeとの使用 | データマッピングコンポーネントが含まれているジョブやルートを Talend Runtimeと共にデプロイしたい場合は、まずTalend Data Mapper機能をインストールする必要があります。詳細は、[Talend Runtimeと共にTalend Data Mapperを使用](https://help.qlik.com/talend/r/ja-JP/7.3/data-mapper-user-guide/using-talend-data-mapper-with-talend-runtime)をご覧ください。 |