Docs Menu

Docs Home보기 & 데이터 분석Spark 커넥터

일괄 읽기 구성 옵션

이 페이지의 내용

  • 개요
  • 파티셔너 구성
  • 다음에서 속성 지정 connection.uri

배치 모드로 MongoDB에서 데이터를 읽을 때 다음 속성을 구성할 수 있습니다.

참고

SparkConf를 사용하여 커넥터의 읽기 구성을 설정하는 경우 각 속성 앞에 spark.mongodb.read.를 접두사로 붙입니다.

속성 이름
설명
connection.uri
Required.
The connection string configuration key.

Default: mongodb://localhost:27017/
database
Required.
The database name configuration.
collection
Required.
The collection name configuration.
comment
The comment to append to the read operation. Comments appear in the output of the Database Profiler.

Default: None
mongoClientFactory
MongoClientFactory configuration key.
You can specify a custom implementation which must implement the com.mongodb.spark.sql.connector.connection.MongoClientFactory interface.

Default: com.mongodb.spark.sql.connector.connection.DefaultMongoClientFactory
partitioner
The partitioner full class name.
You can specify a custom implementation that must implement the com.mongodb.spark.sql.connector.read.partitioner.Partitioner interface.
See the Partitioner Configuration section for more information about partitioners.

Default: com.mongodb.spark.sql.connector.read.partitioner.SamplePartitioner
partitioner.options.
Partitioner configuration prefix.
See the Partitioner Configuration section for more information about partitioners.
sampleSize
The number of documents to sample from the collection when inferring
the schema.

Default: 1000
sql.inferSchema.mapTypes.enabled
Whether to enable Map types when inferring the schema.
When enabled, large compatible struct types are inferred to a MapType instead.

Default: true
sql.inferSchema.mapTypes.minimum.key.size
Minimum size of a StructType before inferring as a MapType.

Default: 250
aggregation.pipeline
Specifies a custom aggregation pipeline to apply to the collection before sending data to Spark.
The value must be either an extended JSON single document or list of documents.
A single document resembles the following:
{"$match": {"closed": false}}
A list of documents resembles the following:
[{"$match": {"closed": false}}, {"$project": {"status": 1, "name": 1, "description": 1}}]

중요

사용자 지정 집계 파이프라인은 파티셔너 전략과 호환되어야 합니다. 예를 들어 $group 같은 집계 단계는 파티션을 두 개 이상 생성하는 파티셔너에서는 작동하지 않습니다.

aggregation.allowDiskUse
Specifies whether to allow storage to disk when running the aggregation.

Default: true
outputExtendedJson
When true, the connector converts BSON types not supported by Spark into extended JSON strings. When false, the connector uses the original relaxed JSON format for unsupported types.

Default: false

파티셔너는 Spark Connector를 사용하는 배치 읽기의 읽기 동작을 변경합니다. 데이터를 파티션으로 나누어 변환을 병렬로 실행할 수 있습니다.

이 섹션에는 다음 파티셔너에 대한 구성 정보가 포함되어 있습니다.

참고

배치 읽기 전용

데이터 스트림 처리 엔진은 단일 데이터 스트림을 생성하므로 파티셔너는 스트리밍 읽기에 영향을 주지 않습니다.

SamplePartitioner 기본 파티셔너 구성입니다. 이 구성을 사용하면 파티션 필드, 파티션 크기 및 파티션당 샘플 수를 지정할 수 있습니다.

이 구성을 사용하려면 partitioner 구성 옵션을 com.mongodb.spark.sql.connector.read.partitioner.SamplePartitioner로 설정합니다.

속성 이름
설명
partitioner.options.partition.field

분할에 사용할 필드로, 고유한 필드여야 합니다.

기본값입니다: _id

partitioner.options.partition.size

각 파티션의 크기(MB)입니다. 파티션 크기가 작을수록 더 적은 수의 문서가 포함된 파티션이 생성됩니다.

기본값입니다: 64

partitioner.options.samples.per.partition

파티션당 가져올 샘플 수입니다. 가져온 총 샘플 수는 다음과 같습니다.

samples per partition * ( count / number of documents per partition)

기본값입니다: 10

예시

평균 문서 크기가 0.5MB인 640개의 컬렉션의 경우, 기본 SamplePartitioner 구성은 파티션당 128개의 문서가 있는 5개의 파티션을 만듭니다.

Spark Connector는 50개의 문서(의도된 파티션당 기본 10개)를 샘플링하고 샘플링된 문서에서 파티션 필드 범위를 선택하여 5개의 파티션을 정의합니다.

ShardedPartitioner 구성은 샤드 구성에 따라 데이터를 자동으로 분할합니다.

이 구성을 사용하려면 partitioner 구성 옵션을 com.mongodb.spark.sql.connector.read.partitioner.ShardedPartitioner로 설정합니다.

경고

이 파티셔너는 해시된 샤드 키와 호환되지 않습니다.

PaginateBySizePartitioner 구성은 평균 문서 크기를 사용하여 컬렉션을 평균 크기의 청크로 분할하여 데이터에 페이지를 매깁니다.

이 구성을 사용하려면 partitioner 구성 옵션을 com.mongodb.spark.sql.connector.read.partitioner.PaginateBySizePartitioner로 설정합니다.

속성 이름
설명
partitioner.options.partition.field

분할에 사용할 필드로, 고유한 필드여야 합니다.

기본값입니다: _id

partitioner.options.partition.size

각 파티션의 크기(MB)입니다. 더 작은 파티션 크기는

더 적은 수의 문서가 포함된 파티션을 더 많이 만듭니다.

기본값입니다: 64

PaginateIntoPartitionsPartitioner 구성은 컬렉션의 문서 수를 허용 가능한 최대 파티션 수로 나누어 데이터에 페이지를 매깁니다.

이 구성을 사용하려면 partitioner 구성 옵션을 com.mongodb.spark.sql.connector.read.partitioner.PaginateIntoPartitionsPartitioner로 설정합니다.

속성 이름
설명
partitioner.options.partition.field

분할에 사용할 필드로, 고유한 필드여야 합니다.

기본값입니다: _id

partitioner.options.max.number.of.partitions

생성할 파티션 수입니다.

기본값입니다: 64

SinglePartitionPartitioner 구성은 단일 파티션을 만듭니다.

이 구성을 사용하려면 partitioner 구성 옵션을 com.mongodb.spark.sql.connector.read.partitioner.SinglePartitionPartitioner로 설정합니다.

SparkConf를 사용하여 이전 설정을 지정하는 경우 해당 설정을 connection.uri 설정에 포함하거나 개별적으로 나열할 수 있습니다.

다음 코드 예시에서는 connection.uri 설정의 일부로 데이터베이스, 컬렉션 및 읽기 설정을 지정하는 방법을 보여 줍니다.

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
spark.mongodb.read.readPreference.name=primaryPreferred

중요

connection.uri 및 해당 줄 모두에 설정을 지정하면 connection.uri 설정이 우선 적용됩니다. 예를 들어, 다음 구성에서 연결 데이터베이스는 foobar입니다. 이는 connection.uri 설정의 값이기 때문입니다.

spark.mongodb.read.connection.uri=mongodb://127.0.0.1/foobar
spark.mongodb.read.database=bar
← 배치 모드로 MongoDB에서 읽기