# tMongoDBLookupInput

スキーマ定義に対応する必要がある厳密に定義された順序でデータベースクエリーを実行します。

抽出データはtMapに渡し、ルックアップデータをメインフローに提供します。tMapコンポーネントには直接接続する必要があり、このtMapのルックアップフローでは[Reload at each row] (各行で再読み取り)または[Reload at each row (cache)] (各行で再読み取り(キャッシュ))を使用する必要があります。

## Apache Spark StreamingのtMongoDBLookupInputプロパティ

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

Spark StreamingのtMongoDBLookupInputコンポーネントは、データベースファミリーに属しています。

このフレームワーク内のコンポーネントは、Talend Real-Time Big Data PlatformおよびTalend Data Fabricで利用できます。

## 基本設定

| [Properties] (プロパティ) | 説明 |
| --- | --- |
| [Property type] (プロパティタイプ) | [Built-in] (組み込み)と[Repository] (リポジトリー)のいずれかです。<br><br>[Built-In] (組み込み): 一元的に保存されるプロパティデータはありません。<br><br>[Repository] (リポジトリー): プロパティが保存されているリポジトリーファイルを選択します。 |
| [MongoDB configuration] (MongoDB設定) | 定義済みの接続の詳細を再利用する場合は、このチェックボックスをオンにして、[Component List] (コンポーネントリスト)ドロップダウンリストから、目的の接続コンポーネントを選択します。 |
| [Schema] (スキーマ)と[Edit Schema] (スキーマを編集) | スキーマとは行の説明のことです。処理して次のコンポーネントに渡すフィールド(カラム)数を定義します。Sparkジョブを作成する場合、フィールドの命名時は予約語のlineを避けます。<br><br>スキーマを変更するには[Edit schema] (スキーマを編集)をクリックします。現在のスキーマがリポジトリータイプの場合は、3つのオプションを利用できます。<br><br><ul> <li> <p> <span>[View schema] (スキーマを表示)</span>: スキーマのみを表示する場合は、このオプションを選択します。</p> </li> <li> <p> <span>[Change to built-in property] (組み込みのプロパティに変更)</span>: ローカルで変更を行うためにスキーマを<span>組み込み</span>に変更する場合は、このオプションを選択します。</p> </li> <li> <p> <span>[Update repository connection] (リポジトリー接続をアップデート)</span>: リポジトリーに保存されているスキーマに変更を加え、変更後にそのコンテンツをすべてのジョブにプロパゲートするかどうかを決める場合は、このオプションを選択します。</p> <p>変更を現在のジョブにのみ反映する場合は、変更後、<span>[No] (いいえ)</span>を選択し、<span>[Repository Content] (リポジトリーコンテンツ)</span>ウィンドウで再びこのスキーマのメタデータを選択します。</p> </li> </ul><br><br>データベースのカラムがJSONドキュメントで、ドキュメント全体を読み取る必要がある場合は、引用符を使用せずに[DB column] (DBカラム)内でアスタリスク(\*)を付けます。 |
| [Collection] (コレクション) | 使用するコレクションの名前を入力します。<br><br>MongoDBコレクションはRDBMSテーブルと同等であり、そこにはドキュメントが含まれています。 |
| [Set read preference] (読み取り環境設定の設定) | このチェックボックスをオンにして、[Read preference] (読み取り環境設定)ドロップダウンリストが表示されたら、読み取りオペレーションをダイレクトする必要のあるメンバーを選択します。<br><br>このチェックボックスをオフのままにすると、ジョブはデフォルトの読み取り環境設定を使用します。すなわち、レプリカセット内のプライマリーメンバーが使用されます。<br><br>詳細は、MongoDBのドキュメンテーションで複製とその読み取り環境設定に関する説明を参照してください。 |
| [Query] (クエリー) | クエリーステートメントを指定して、[Collection] (コレクション)フィールドで指定したコレクションからドキュメントを選択します。<br><br>たとえば、以下のようにします<br><br>```<br>"{'customer_id':" + row1.customer_id +"}"<br>```<br><br>このコードで*row1*は、tMongoDBLookupInputのリンクのラベルではなく、tMapに入るメイン行を表します。<br><br>クエリーの結果には、tMapで使用する結合キーに一致するレコードのみ含まれていなければなりません。言い換えれば、一致するレコードのみがルックアップフローに読み取られるSQLステートメントを作成するため、メインフローのスキーマをtMapで使用する必要があります。<br><br>この方式では、重複レコードはメモリに読み込まれず、後続のコンポーネントに出力されます。 |
| [Mapping] (マッピング) | このコンポーネント用に定義されたスキーマの各カラムは、読み取るドキュメントのフィールドを表します。このテーブルで、これらのフィールドの親ノードがあればそれを指定する必要があります。<br><br>たとえば、次のようなドキュメントがあるとします。<br><br>```<br>{<br>_id: ObjectId("5099803df3f4948bd2f98391"),<br>person: { first: "Joe", last: "Walker" }<br>}<br>```<br><br><br>フィールド*first*および*last*には親ノード*person*がありますが、*\_id*フィールドには親ノードがありません。したがって、完了すると、この[Mapping]テーブルは次のようになります。<br><br>```<br>Column     Parent node path<br>_id<br>first       "person"<br>last        "person"<br>``` |
| [Limit] (制限事項) | 取得するレコードの最大数を入力します。 |

## 詳細設定

| [Properties] (プロパティ) | 説明 |
| --- | --- |
| [No query timeout] (クエリータイムアウトなし) | アイドルカーソルの非アクティブ状態が10分間続いた時にMongoDBサーバーがカーソルを停止することを防ぐには、このチェックボックスをオンにします。この状況では、このカーソルの結果が枯渇するか、またはcursor.close()方式を使用して手動で閉じるまで、アイドルカーソルが開いたままとなります。<br><br>MongoDBのカーソルはクエリーの結果セットを指すポインターです。デフォルトでは、すなわち、このチェックボックスがオフの場合、Mongoデータベースサーバーは、メモリの過剰使用を避けるために、非アクティブ状態が特定の期間続くと、アイドルカーソルを自動的に停止します。MongoDBカーソルの詳細は、https://docs.mongodb.org/manual/core/cursors/をご覧ください。 |

## 使用方法

| 使用方法のガイダンス | 説明 |
| --- | --- |
| **使用ルール** | このコンポーネントは開始コンポーネントとして使用され、出力リンクを必要とします。<br><br>このコンポーネントは、MongoDBデータベースに接続するために同じジョブ内にあるtMongoDBConfigurationコンポーネントを使用する必要があります。tMongoDBConfigurationを使用するには、このコンポーネントと共にtMongoDBConfigurationコンポーネントをドロップし、このコンポーネントの[Basic settings] (基本設定)を指定する必要があります。<br><br>このコンポーネントは、所属するSpark Streamingコンポーネントのパレットと共に、Spark Streamingジョブを作成している場合にだけ表示されます。<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>この接続は、ジョブごとに有効になります。 |

**関連概念**

* [Spark Streamingジョブを使用してMongoDBでデータの読み書きを行う](https://help.qlik.com/talend/ja-JP/components/8.0/mongodb/tmongodblookupinput-tmongodbconfiguration-ts3configuration-reading-and-writing-data-in-mongodb-using-spark-streaming-job-spark-stream-component-in-this)