Apache Spark BatchのtMongoDBInputプロパティ
これらのプロパティは、Spark Batchジョブのフレームワークで実行されているtMongoDBInputを設定するために使われます。
Spark BatchのtMongoDBInputコンポーネントは、データベースファミリーに属しています。
このフレームワーク内のコンポーネントは、ビッグデータ対応のTalend 製品すべて、およびTalend Data Fabricで使用できます。
基本設定
[Property type] (プロパティタイプ) |
[Built-in] (組み込み)と[Repository] (リポジトリー)のいずれかです。 [Built-In] (組み込み): 一元的に保存されるプロパティデータはありません。 [Repository] (リポジトリー): プロパティが保存されているリポジトリーファイルを選択します。 |
[MongoDB configuration] (MongoDB設定) |
定義済みの接続の詳細を再利用する場合は、このチェックボックスをオンにして、[Component List] (コンポーネントリスト)ドロップダウンリストから、目的の接続コンポーネントを選択します。 |
[Schema] (スキーマ)と[Edit Schema] (スキーマを編集) |
スキーマとは行の説明のことです。処理して次のコンポーネントに渡すフィールド(カラム)数を定義します。Sparkジョブを作成する場合、フィールドの命名時は予約語のlineを避けます。 スキーマを変更するには[Edit schema] (スキーマを編集)をクリックします。現在のスキーマがリポジトリータイプの場合は、3つのオプションを利用できます。
データベースのカラムがJSONドキュメントで、ドキュメント全体を読み取る必要がある場合は、引用符を使用せずに[DB column] (DBカラム)内でアスタリスク(*)を付けます。 |
[Collection] (コレクション) |
使用するコレクションの名前を入力します。 MongoDBコレクションはRDBMSテーブルと同等であり、そこにはドキュメントが含まれています。 使用するコレクションがシャードでない場合は、mongo.input.split_sizeプロパティを[Advanced Hadoop MongoDB properties] (詳細Hadoop MongoDBプロパティ)テーブルに追加することをお勧めします。このパラメーターは、コレクションがどのようにパーティショニングされ、Sparkエグゼキューターによって読み取られるかを決定します。入力コレクションのパーティション数は、次の式を使用して計算できます。
Number of partitions = Collection size in MB / mongo.input.split_sizeこのプロパティがない場合、Sparはパーティションのサイズにデフォルト値の8 MBを使用します。 例:
mongo.input.split_size 1このサンプルでは、Sparkは非シャードコレクションを並列で読み取るために、各Sparkエグゼキューターに1 MBを転送します。コレクションのサイズが10 MBの場合は、10エグゼキューターが使用されます。 |
[Set read preference] (読み取り環境設定の設定) |
このチェックボックスをオンにして、[Read preference] (読み取り環境設定)ドロップダウンリストが表示されたら、読み取りオペレーションをダイレクトする必要のあるメンバーを選択します。 このチェックボックスをオフのままにすると、ジョブはデフォルトの読み取り環境設定を使用します。すなわち、レプリカセット内のプライマリーメンバーが使用されます。 詳細は、MongoDBのドキュメンテーションで複製とその読み取り環境設定に関する説明をご覧ください。 |
[Query] (クエリー) |
クエリーステートメントを指定して、[Collection] (コレクション)フィールドで指定したコレクションからドキュメントを選択します。たとえば、"{'id':'4'}"と入力して、idが4のレコードをコレクションから取得します。 このコンポーネントで提供されている二重引用符で囲まれたデフォルトクエリー{}は、すべてのファイルを選択することを意味します。{'filename':{'$regex':'REGEX_PATTERN'}}を使用することで正規表現を適用し、使用するファイル名を定義することもできます。 MongoDBクライアントソフトウェアで求められるクエリーステートメントとは異なり、ここのクエリーはfind()内のコンテンツを参照します。ここのクエリー{'filename':{'$regex':'REGEX_PATTERN'}}などは、MongoDBクライアントクエリーのdb.blog.find({filename:{$regex:REGEX_PATTERN}})に相当します。 |
[Mapping] (マッピング) |
このコンポーネント用に定義されたスキーマの各カラムは、読み取るドキュメントのフィールドを表します。このテーブルで、これらのフィールドの親ノードがあればそれを指定する必要があります。 たとえば、次のようなドキュメントがあるとします。
{ _id: ObjectId("5099803df3f4948bd2f98391"), person: { first: "Joe", last: "Walker" } }フィールドfirstおよびlastには親ノードpersonがありますが、_idフィールドには親ノードがありません。したがって、完了すると、この[Mapping]テーブルは次のようになります。 Column Parent node path _id first "person" last "person" |
[Limit] (制限事項) |
取得するレコードの最大数を入力します。 |
詳細設定
[Advanced Hadoop MongoDB properties] (高度なHadoop MongoDBのプロパティ) |
プロパティを追加して、tMongoDBInputにデータの読み取り時に実行させる追加のオペレーションを定義します。 使用可能なプロパティは、MongoDB Connector for Hadoop (英語のみ)にリスト表示され、説明されています。 使用するコレクションがシャードでない場合は、mongo.input.split_sizeプロパティを[Advanced Hadoop MongoDB properties] (詳細Hadoop MongoDBプロパティ)テーブルに追加することをお勧めします。このパラメーターは、コレクションがどのようにパーティショニングされ、Sparkエグゼキューターによって読み取られるかを決定します。入力コレクションのパーティション数は、次の式を使用して計算できます。
Number of partitions = Collection size in MB / mongo.input.split_sizeこのプロパティがない場合、Sparはパーティションのサイズにデフォルト値の8 MBを使用します。 例:
mongo.input.split_size 1このサンプルでは、Sparkは非シャードコレクションを並列で読み取るために、各Sparkエグゼキューターに1 MBを転送します。コレクションのサイズが10 MBの場合は、10エグゼキューターが使用されます。 |
使用方法
使用ルール |
このコンポーネントは、開始コンポーネントとして使用され、出力リンクを必要とします。 このコンポーネントは、MongoDBデータベースに接続するために同じジョブ内にあるtMongoDBConfigurationコンポーネントを使用する必要があります。tMongoDBConfigurationを使用するには、このコンポーネントと共にtMongoDBConfigurationコンポーネントをドロップし、このコンポーネントの[Basic settings] (基本設定)を指定する必要があります。 このコンポーネントは、所属するSpark Batchのコンポーネントのパレットと共に、Spark Batchジョブを作成している場合にだけ表示されます。 特に明記していない限り、このドキュメントのシナリオでは、標準ジョブ、つまり従来の Talend データ統合ジョブだけを扱います。 |
[Spark Connection] (Spark接続) |
[Run] (実行)ビューの[Spark configuration] (Spark設定)タブで、ジョブ全体でのSparkクラスターへの接続を定義します。また、ジョブでは、依存jarファイルを実行することを想定しているため、Sparkがこれらのjarファイルにアクセスできるように、これらのファイルの転送先にするファイルシステム内のディレクトリーを指定する必要があります。
この接続は、ジョブごとに有効になります。 |