Overview
バッチ モードで MongoDB からデータを読み取るときに、次のプロパティを構成できます。
注意
SparkConfを使用してコネクターの読み取り構成を設定する場合は、各プロパティの前にspark.mongodb.read.を付けます。
プロパティ名 | 説明 | ||
|---|---|---|---|
| 必須。 | ||
| 必須。 | ||
| 必須。 | ||
| 読み取り操作に追加するコメント。コメントは データベースプロファイラー | ||
| 期待されるスキーマに一致しないドキュメントを処理する場合に使用する解析戦略。 このオプションは、次の値を受け入れます。
| ||
|
| ||
| MongoClientFactory 構成キー。 | ||
| パーティションの完全なクラス名。
| ||
| パーティション構成プレフィックス。パーティションの詳細については、「 | ||
|
| ||
| スキーマを推論するときにマップ型を有効にするかどうか。有効にすると、互換性のある大きな構造体型は代わりに | ||
|
| ||
| Sparkにデータを送信する前にコレクションに適用するカスタム集計パイプラインを指定します。値は、拡張JSON単一ドキュメントまたはドキュメントのリストである必要があります。単一のドキュメントは次のようになります。 ドキュメントのリストは次のようになります。 重要: カスタム集計パイプラインは、パーティショニング戦略と互換性がある必要があります。例、 | ||
| 集計を実行中ときにディスクへのストレージを許可するかどうかを指定します。デフォルト: | ||
|
| ||
| コレクションのスキーマを推論するときに使用する既知のフィールドタイプの部分的なスキーマを指定します。 |
パーティション構成
パーティショニングは、 Spark Connectorを使用するバッチ読み取りの読み取り動作を変更します。 データをパーティションに分割することで、変換を並列に実行できます。
このセクションには、次のパーティションの構成情報が含まれています。
注意
バッチ読み取りのみ
データストリーム処理エンジンは単一のデータストリームを生成するため、パーティショニングはストリーミング読み取りに影響しません。
AutobucketPartitioner 構成(デフォルト)
AutoBucketPartitioner はデフォルトのパーティショニング構成です。データをサンプリングしてパーティションを生成し、$bucketAuto集計ステージを使用してページ分割します。この構成を使用すると、ネストされたフィールドを含む単一または複数のフィールドにわたってデータを分割できます。
注意
複合キー
AutoBucketPartitioner 構成では、複合キーをサポートするためにMongoDB Serverバージョン 7.0 以上が必要です。
この構成を使用するには、 partitioner構成オプションをcom.mongodb.spark.sql.connector.read.partitioner.AutoBucketPartitionerに設定します。
プロパティ名 | 説明 |
|---|---|
| パーティショニングに使用するフィールドのリスト。 値は、単一のフィールド名またはカンマで区切られたフィールドのリストのいずれかになります。 デフォルト: |
| 各パーティションの平均サイズ(MB)。 パーティション サイズが小さい場合は、作成されるパーティションが多くなり、ドキュメントが少なくなります。 この構成では、平均ドキュメントサイズを使用してパーティションあたりのドキュメント数が決定されるため、パーティションのサイズが一致しない場合があります。 デフォルト: |
| パーティションごとに取得するサンプルの数。 デフォルト: |
| コレクションを分割するために使用されるすべてのフィールドを含むプロジェクション フィールドに使用するフィールド名。 各ドキュメントにすでに デフォルト: |
サンプルパーティションの構成
SamplePartitioner の構成は AutoBucketPartitioner の構成と似ていますが、$bucketAuto集計ステージは使用しません。この構成では、 パーティションフィールド、パーティション サイズ、およびパーティションあたりのサンプル数を指定できます。
この構成を使用するには、 partitioner構成オプションをcom.mongodb.spark.sql.connector.read.partitioner.SamplePartitionerに設定します。
プロパティ名 | 説明 | |
|---|---|---|
| パーティション分割に使用するフィールド。一意のフィールドである必要があります。 デフォルト: | |
| 各パーティションのサイズ(MB 単位)。 パーティション サイズが小さい場合は、作成されるパーティションが多くなり、ドキュメントが少なくなります。 デフォルト: | |
| パーティションごとに取得するサンプルの数。 取得されたサンプルの合計数は次のとおりです。 デフォルト: |
例
平均ドキュメント サイズが 0.5 MB の 640 ドキュメントを含むコレクションの場合、デフォルトのSamplePartitioner構成では 5 つのパーティションが作成され、1 つのパーティションあたり 128 ドキュメントが含まれます。
Spark Connectorは 50 個のドキュメント(対象パーティションごとにデフォルトは 10)をサンプリングし、サンプリングされたドキュメントからパーティション フィールド範囲を選択して 5 つのパーティションを定義します。
シャードパーティションの構成
ShardedPartitioner構成では、シャード構成に基づいてデータが自動的に分割されます。
この構成を使用するには、 partitioner構成オプションをcom.mongodb.spark.sql.connector.read.partitioner.ShardedPartitionerに設定します。
重要
ShardedPartitioner の制限
MongoDB Server v 6.0以降では、シャーディング操作によって、すべてのシャードキー値をカバーする大きな初期チャンクが 1 件作成され、シャーディングされたパーティションが非効率的になります。 MongoDB v 6.0以降に接続する場合、シャーディングされたパーティションを使用することは推奨されません。
シャーディングされたパーティションは ハッシュされたシャードキー と互換性がありません。
PagenateBySizePartitioner の構成
PaginateBySizePartitioner構成では、平均ドキュメント サイズを使用してコレクションを平均サイズのチャンクに分割し、データをページ分割します。
この構成を使用するには、 partitioner構成オプションをcom.mongodb.spark.sql.connector.read.partitioner.PaginateBySizePartitionerに設定します。
プロパティ名 | 説明 |
|---|---|
| パーティション分割に使用するフィールド。一意のフィールドである必要があります。 デフォルト: |
| 各パーティションのサイズ(MB 単位)。 パーティション サイズが小さい より少ないドキュメントを含むより多くのパーティションを作成します。 デフォルト: |
PaginateIntoPartitionsPartitioner Configuration
PaginateIntoPartitionsPartitionerの構成では、コレクション内のドキュメント数を許可されるパーティションの最大数で割ったデータがページ分割されます。
この構成を使用するには、 partitioner構成オプションをcom.mongodb.spark.sql.connector.read.partitioner.PaginateIntoPartitionsPartitionerに設定します。
プロパティ名 | 説明 |
|---|---|
| パーティション分割に使用するフィールド。一意のフィールドである必要があります。 デフォルト: |
| 作成するパーティションの数。 デフォルト: |
シングルパーティションパーティション構成
SinglePartitionPartitioner構成では 1 つのパーティションが作成されます。
この構成を使用するには、 partitioner構成オプションをcom.mongodb.spark.sql.connector.read.partitioner.SinglePartitionPartitionerに設定します。
connection.uri でのプロパティの指定
SparkConfを使用して以前の設定のいずれかを指定する場合は、それらをconnection.uri設定に含めるか、個別に一覧表示できます。
次のコード例は、 connection.uri設定の一部としてデータベース、コレクション、読み込み設定(read preference)を指定する方法を示しています。
spark.mongodb.read.connection.uri=mongodb://127.0.0.1/myDB.myCollection?readPreference=primaryPreferred
connection.uriを短くして設定を読みやすくするには、代わりにこれらを個別に指定します。
spark.mongodb.read.connection.uri=mongodb://127.0.0.1/ spark.mongodb.read.database=myDB spark.mongodb.read.collection=myCollection
重要
connection.uriとその行の両方に 設定を指定すると、 connection.uriの設定が優先されます。 たとえば、次の構成では、接続データベースはfoobarです。これはconnection.uri設定の 値であるためです。
spark.mongodb.read.connection.uri=mongodb://127.0.0.1/foobar spark.mongodb.read.database=bar