# Apache Spark BatchのtGenKeyプロパティ

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

Spark BatchのtGenKeyコンポーネントは、データクオリティファミリーに属しています。

このフレームワークのコンポーネントは、すべてのビッグデータ対応のTalendプラットフォーム製品およびTalend Data Fabricで利用できます。

## 基本設定

| プロパティ | 説明 |
| --- | --- |
| [Schema] (スキーマ)と[Edit schema] (スキーマを編集) | <ul> <li> <p>スキーマとは行の説明のことです。処理して次のコンポーネントに渡すフィールド(カラム)数を定義します。Sparkジョブを作成する場合、フィールドの命名時は予約語の<kbd>line</kbd>を避けます。</p> <p>ジョブで接続している先行コンポーネントからスキーマを取得するためには、<span>[Sync columns] (カラムを同期)</span>をクリックします。</p> </li> <li> <p> <span>[Built-in] (組み込み)</span>: そのコンポーネントに対してのみスキーマを作成し、ローカルに保管します。</p> </li> <li> <p> <span>[Repository] (リポジトリー)</span>: スキーマは作成済みで、リポジトリーに保管されています。さまざまなプロジェクトやジョブデザインで再利用できます。</p> </li> <li> <p>定義されて<span>Talend Studio</span>のリポジトリーに保存されているマッチングルールからブロッキングキーをインポートするには、インポートアイコンをクリックします。</p> <p>インポートアイコンをクリックすると、<span>[Match Rule Selector] (マッチングルールセレクター)</span>ウィザードが開き、<span>Talend Studio</span>のリポジトリーにリスト表示されているマッチングルールからブロッキングキーをインポートして、ジョブに利用できます。</p> <p>ブロッキングキーは、VSRアルゴリズムで定義され、<span>Talend Studio</span>のリポジトリーに保存されているマッチングルールからのみインポートできます。詳細は、<a href="https://help.qlik.com/talend/r/ja-JP/8.0/components/data-matching/importing-match-rules-from-studio-repository">Talend Studioリポジトリーからマッチングルールをインポート</a>をご覧ください。       </p> </li> </ul> |
| [Column] (カラム) | 機能キーを設定するアルゴリズムを定義するためのメインフローから、カラムを選択します。<br><br>情報メモ注: 日付カラムにアルゴリズムやマッチングアルゴリズムを適用すると、日付形式で比較する内容を決定できます。<br><br>たとえば、日付の年のみを比較する場合は、コンポーネントスキーマで日付カラムのタイプを[Date]に設定し、[Date Pattern] (日付パターン)フィールドに*yyyy*と入力します。コンポーネントでは、スキーマで定義されたパターンに基づき、日付形式を文字列に変換してから文字列比較が開始されます。 |
| [Pre-algorithm] (プリアルゴリズム): | 必要に応じて、該当する一致アルゴリズムをリストから選択します。<br><br>[Remove diacritical marks] (発音区別符号を削除): 発音区別符号があれば削除します。<br><br>[Remove diacritical marks and lower case] (発音区別符号の削除と小文字): カラムのコードを生成する前に、発音区別符号を削除し、小文字に変換します。<br><br>[Remove diacritical marks and upper case] (発音区別符号の削除と大文字): カラムのコードを生成する前に、発音区別符号を削除し、大文字に変換します。<br><br>[Lower case] (小文字): キーアルゴリズムを適用する前に、フィールドを小文字に変換します。<br><br>[Upper case] (大文字): キーアルゴリズムを適用する前に、フィールドを大文字に変換します。<br><br>[Add left position character] (左位置の文字を追加): カラムの左側に文字を追加できます。<br><br>[Add right position character] (右位置の文字を追加): カラムの右側に文字を追加できます。 |
| [Value] (値) | 該当する場合は、アルゴリズムの値を設定するために使われます。 |
| [Algorithm] (アルゴリズム) | 該当するアルゴリズムをリストから選択します。<br><br>[First character of each word] (各語の最初の文字): カラム内の各語の最初の文字を機能キーに含めます。入力データに日本語文字を使用する場合は、入力テキストをトークン化する必要があります。詳細は、[tJapaneseTokenize](https://help.qlik.com/talend/r/ja-JP/8.0/components/text-standardization/tjapanesetokenize)をご覧ください。<br><br>[First N characters of each word] (各語の最初のN文字): カラム内の各語の最初のN文字を機能キーに含めます。入力データに日本語文字を使用する場合は、入力テキストをトークン化する必要があります。詳細は、[tJapaneseTokenize](https://help.qlik.com/talend/r/ja-JP/8.0/components/text-standardization/tjapanesetokenize)をご覧ください。<br><br>[First N characters of the string] (文字列の最初のN文字): 文字列の最初のN文字を機能キーに含めます。<br><br>[Last N characters of the string] (文字列の最後のN文字): 文字列の最後のN文字を機能キーに含めます。<br><br>[First N consonants of the string] (文字列の最初のN子音): 文字列の最初のN子音を機能キーに含めます。日本語と中国語の文字はサポートされていません。<br><br>[First N vowels of the string] (文字列の最初のN母音): 文字列の最初のN母音を機能キーに含めます。日本語と中国語の文字はサポートされていません。<br><br>[Pick characters] (文字を選ぶ): 固定位置にある文字を機能キーに含めます(設定したデジタル/範囲に対応)。<br><br>[Exact] (完全一致): 完全な文字列を機能キーに含めます。<br><br>[Substring(a,b)]: 設定済みのインデックスに従って文字を機能キーに含めます。<br><br>[Soundex code] (Soundexコード): 標準英語の音声アルゴリズムに従ってコードを生成します。このコードは、機能キーに含まれる文字列を表します。日本語と中国語の文字はサポートされていません。<br><br>[Metaphone code] (Metaphoneコード): 文字の発音に従ってコードを生成します。このコードは、機能キーに含まれる文字列を表します。日本語と中国語の文字はサポートされていません。<br><br>[Double-metaphone code] (Double-metaphoneコード): 新しいバージョンのMetaphone音声アルゴリズムを使用して、文字の発音に従い、コードを生成します。この音声アルゴリズムは、元のアルゴリズムよりも正確な結果を生成します。このコードは、機能キーに含まれる文字列を表します。日本語と中国語の文字はサポートされていません。<br><br>[Fingerprint key] (指紋キー): 次のシーケンシャルプロセスを使用して、文字列値から機能キーを生成します。<br><br><ol> <li> <p>先頭と末尾の空白を削除、</p> </li> <li> <p>すべての文字を小文字に変更、</p> </li> <li> <p>すべての句読点と制御文字を削除、</p> </li> <li> <p>文字列を空白で区切られたトークンに分割、</p> </li> <li> <p>トークンをソートして重複を削除、</p> </li> <li> <p>トークンを再結合。</p> <p>文字列部分がソートされるため、トークンの順序は関係ありません。したがって、<em>Cruise, Tom</em>と<em>Tom Cruise</em>の両方が指紋<em>cruise tom</em>で終わるので、同じクラスターで終わります。</p> </li> <li> <p>拡張西洋文字をASCII表現に正規化します(たとえば、<em>gödel</em>から<em>godel</em>へ)。</p> <p>これは、ASCII のみのキーボードで拡張文字を入力する時に実行されるデータ入力ミスを再現します。ただし、この手順は間違った結果につながる可能性もあります。たとえば、<em>gödel</em>と<em>godél</em>の両方が指紋として<em>godel</em>となりますが、別の名前になる可能性があります。したがって、拡張文字が大幅な差別化の役割を果たすデータセットでは、これはあまり効果的ではありません。</p> </li> </ol><br><br>nGramkey: このアルゴリズムは、上記で説明したfingerPrintkey方式と似ています。ただし、空白で区切られたトークンを使用する代わりに、n-gramsが使用されます。*n*はユーザーが指定します。この方式では、次のシーケンシャルプロセスを使用して、文字列値から機能キーを生成します。<br><br><ol> <li> <p>すべての文字を小文字に変更、</p> </li> <li> <p>すべての句読点と制御文字を削除、</p> </li> <li> <p>すべての文字列のn-gramsを取得 </p> </li> <li> <p>n-gramsをソートして重複を削除</p> </li> <li> <p>ソートしたn-gramsを元どおりに結合</p> </li> <li> <p>拡張西洋文字をASCII表現に正規化します(たとえば、<em>gödel</em>から<em>godel</em>へ)。</p> <p>たとえば、<em>Paris</em>の2-gram指紋は<em>arispari</em>で、1-gram指紋は<em>aiprs</em>です。 </p> <p>このアルゴリズムの配信実装は2-gramsです。</p> </li> </ol><br><br>情報メモ注:<br><br>nGramkeyアルゴリズムを使用するカラムが、文字数が*0*または*1*のみのデータを持つ可能性がある場合は、機能キーを生成する前にこのデータをフィルタリングする必要があります。こうすることで、候補と一致しないレコードが互いに比較される可能性を排除できます。<br><br>[Cologne phonetics] (ケルン音声学): ドイツ語向けに最適化されたSoundex音声アルゴリズム。文字列をケルン音声学の値にエンコードします。このコードは、機能キーに含まれる文字列を表します。日本語と中国語の文字はサポートされていません。 |
| [Value] (値) | 該当する場合は、アルゴリズムの値を設定するために使われます。<br><br>アルゴリズムが必要とする値を設定しないと、ジョブの実行でコンパイルエラーが発生します。 |
| [Post-algorithm] (ポストアルゴリズム): | 必要に応じて、該当する一致アルゴリズムをリストから選択します。<br><br>[Use default value] (デフォルト値を使用) (文字列): nullデータまたは空のデータを置換する文字列を選択できます。<br><br>[Add left position character] (左位置の文字を追加): カラムの左側に文字を追加できます。<br><br>[Add right position character] (右位置の文字を追加): カラムの右側に文字を追加できます。 |
| [Value] (値) | 該当する場合は、オプションの値を設定するために使われます。 |
| [Show help] (ヘルプを表示) | アルゴリズム/オプションのパラメーターを設定する手順を表示する場合は、このチェックボックスを選択します。 |

## グローバル変数

| 変数 | 説明 |
| --- | --- |
| グローバル変数 | ERROR\_MESSAGE: エラーが発生した時にコンポーネントによって生成されるエラーメッセージ。これはAfter変数で、文字列を返します。この変数はコンポーネントにこのチェックボックスが存在し、[Die on error] (エラー発生時に強制終了)がオフになっている場合のみ機能します。<br><br>Flow変数はのコンポーネントの実行中に機能し、After変数はコンポーネントの実行後に機能します。<br><br>フィールドまたは式に変数を入力する場合は、Ctrl + スペースを押して変数リストにアクセスし、使用する変数を選択します。<br><br>変数の詳細は、[コンテキストと変数を使用](https://help.qlik.com/talend/r/ja-JP/8.0/studio-user-guide/contexts-and-variables)をご覧ください。 |

## 使用方法

| 使用方法のガイダンス | 説明 |
| --- | --- |
| **使用ルール** | このコンポーネントは中間ステップとして使用されます。<br><br>このコンポーネントは、所属するSpark Batchのコンポーネントのパレットと共に、Spark Batchジョブを作成している場合にだけ表示されます。<br><br>特に明記していない限り、このドキュメンテーションのシナリオでは、標準ジョブ、つまり従来の Talend Data Integrationジョブだけを扱います。 |
| [Spark Connection] (Spark接続) | [Run] (実行)ビューの[Spark configuration] (Spark設定)タブで、ジョブ全体でのSparkクラスターへの接続を定義します。また、ジョブでは、依存jarファイルを実行することを想定しているため、Sparkがこれらのjarファイルにアクセスできるように、これらのファイルの転送先にするファイルシステム内のディレクトリーを指定する必要があります。<br><br><ul> <li> <div> <span>Yarnモード</span>(YarnクライアントまたはYarnクラスター):<ul> <li> <p>Google Dataprocを使用している場合、<span>[Spark configuration] (Spark設定)</span>タブの<span>[Google Storage staging bucket] (Google Storageステージングバケット)</span>フィールドにバケットを指定します。</p> </li> <li> <p>HDInsightを使用している場合、<span>[Spark configuration] (Spark設定)</span>タブの<span>[Windows Azure Storage configuration] (Windows Azure Storage設定)</span>エリアでジョブのデプロイメントに使用するブロブを指定します。</p> </li> <li>Altusを使用する場合は、<span>[Spark configuration] (Spark設定)</span>タブでジョブのデプロイにS3バケットまたはAzure Data Lake Storageを指定します。</li> <li> <p>オンプレミスのディストリビューションを使用する場合は、クラスターで使われているファイルシステムに対応する設定コンポーネントを使用します。一般的に、このシステムはHDFSになるため、<a href="https://help.qlik.com/talend/r/ja-JP/8.0/components/hdfs/thdfsconfiguration">tHDFSConfiguration</a>を使用します。</p> </li> </ul> </div> </li> <li> <p> <span>[Standalone mode] (スタンドアロンモード)</span>: クラスターで使われているファイルシステム(<a href="https://help.qlik.com/talend/r/ja-JP/8.0/components/hdfs/thdfsconfiguration-properties-for-apache-spark-batch">tHDFSConfiguration Apache Spark Batch</a>や<a href="https://help.qlik.com/talend/r/ja-JP/8.0/components/amazon-s3/ts3configuration-properties-for-apache-spark-batch">tS3Configuration Apache Spark Batch</a>など)に対応する設定コンポーネントを使用します。</p> <p>ジョブ内に設定コンポーネントがない状態でDatabricksを使用している場合、ビジネスデータはDBFS (Databricks Filesystem)に直接書き込まれます。</p> </li> </ul><br><br>この接続は、ジョブごとに有効になります。 |