개요
스트리밍 모드에서 MongoDB의 데이터를 읽을 때 다음 속성을 구성할 수 있습니다.
참고
SparkConf을(를) 사용하여 커넥터의 읽기 구성을 설정하는 경우 각 속성 앞에 spark.mongodb.read.을(를) 접두사로 붙입니다.
속성 이름 | 설명 | ||
|---|---|---|---|
| 필수 사항입니다. | ||
| 필수 사항입니다. | ||
| 필수 사항입니다. | ||
| 읽기 작업에 추가할 주석입니다. 주석은 데이터베이스 프로파일러의 출력에 표시됩니다. | ||
| 예상 스키마 와 일치하지 않는 문서를 처리할 때 사용할 구문 분석 전략입니다. 이 옵션에는 다음 값을 사용할 수 있습니다.
| ||
|
| ||
| MongoClientFactory 구성 키입니다. 인터페이스를 구현 | ||
| Spark 로 데이터를 전송하기 전에 컬렉션 에 적용 할 사용자 지정 집계 파이프라인 지정합니다. 문서 목록은 다음과 유사합니다. 사용자 지정 집계 파이프라인은 파티셔너 전략과 호환되어야 합니다. 예를 들어 | ||
| 집계 실행 때 디스크에 저장 하도록 허용할지 여부를 지정합니다. | ||
| 변경 스트림 구성 접두사를 변경합니다. | ||
|
| ||
| 컬렉션 에 대한 스키마 유추할 때 사용할 알려진 필드 유형의 부분 스키마 |
변경 스트림 구성
MongoDB에서 변경 스트림을 읽을 때 다음 속성을 구성할 수 있습니다.
속성 이름 | 설명 |
|---|---|
| 업데이트 작업 시 변경 스트림이 반환하는 값을 결정합니다. 기본 설정은 소스 문서와 업데이트된 문서 간의 차이점을 반환합니다.
이 변경 스트림 옵션의 작동 방식에 대한 자세한 내용은 MongoDB 서버 매뉴얼 가이드 업데이트 작업을 위한 전체 문서 조회를 참조하세요. Default(기본값): "default" |
| Spark Connector가 각 마이크로 배치를 분할하는 최대 파티션 수. Spark 워커는 이러한 파티션을 병렬로 처리할 수 있습니다. 경고: |
| 변경된 문서를 게시할지 아니면 전체 변경 스트림 문서를 게시할지 지정합니다.
이 설정은 기본값: |
| 오프셋을 사용할 수 없는 경우 connector 를 시작하는 방법을 지정합니다. 이 설정은 다음 값을 허용합니다.
|
| 변경 스트림 출력에 수정된 문서의 사전 이미지를 포함할지 여부를 결정합니다.
기본값입니다: |
다음에서 속성 지정 connection.uri
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
중요
connection.uri 및 해당 줄 모두에 설정을 지정하면 connection.uri 설정이 우선 적용됩니다. 예를 들어, 다음 구성에서 연결 데이터베이스는 foobar입니다. 이는 connection.uri 설정의 값이기 때문입니다.
spark.mongodb.read.connection.uri=mongodb://127.0.0.1/foobar spark.mongodb.read.database=bar
collection 속성에 여러 컬렉션 지정
컬렉션 이름을 쉼표로 구분하여 collection 변경 스트림 구성 속성에서 여러 컬렉션을 지정할 수 있습니다. 컬렉션 이름에 공백이 포함된 경우가 아니라면 컬렉션 사이에 공백을 추가하지 마세요.
다음 예제와 같이 여러 컬렉션을 지정합니다.
... .option("spark.mongodb.collection", "collectionOne,collectionTwo")
컬렉션 이름이 '*'이거나 이름에 쉼표 또는 백슬래시(\)가 포함된 경우 다음과 같이 문자를 이스케이프 처리해야 합니다.
collection구성 옵션에 사용된 컬렉션의 이름에 쉼표가 포함되어 있으면 Spark Connector는 이를 두 개의 서로 다른 컬렉션으로 취급합니다. 이를 방지하려면 앞에 백슬래시(\)를 붙여 쉼표를 이스케이프해야 합니다. 이름이 'my,collection'인 컬렉션을 다음과 같이 이스케이프 처리합니다."my\,collection" collection구성 옵션에 사용된 컬렉션의 이름이 '*'인 경우 Spark Connector는 이를 모든 컬렉션을 스캔하는 사양으로 해석합니다. 이를 방지하려면 앞에 백슬래시(\)를 붙여 별표를 이스케이프 처리해야 합니다. 이름이 '*'인 컬렉션을 다음과 같이 이스케이프 처리합니다."\*" collection구성 옵션에 사용된 컬렉션 이름에 백슬래시(\)가 포함된 경우 Spark Connector는 백슬래시를 이스케이프 문자로 처리하므로 값을 해석하는 방식이 변경될 수 있습니다. 이를 방지하려면 백슬래시 앞에 다른 백슬래시를 붙여 이스케이프 처리해야 합니다. 다음과 같이 '\collection'이라는 이름의 컬렉션을 이스케이프 처리합니다."\\collection" 참고
에서 컬렉션 이름을 리터럴로 지정할 string Java때는 각 백슬래시를 다른 백슬래시로 추가 이스케이프 처리해야 합니다. 예를 들어 '\collection'이라는 이름의 컬렉션을 다음과 같이 이스케이프 처리합니다.
"\\\\collection"
컬렉션 이름에 별표(*)를 string 로 전달하여 데이터베이스의 모든 컬렉션에서 스트리밍할 수 있습니다.
다음 예제와 같이 모든 컬렉션을 지정합니다.
... .option("spark.mongodb.collection", "*")
모든 컬렉션에서 스트리밍하는 동안 컬렉션을 생성하면 새 컬렉션이 자동으로 스트림에 포함됩니다.
여러 컬렉션에서 스트리밍하는 동안 언제든지 컬렉션을 삭제할 수 있습니다.
중요
여러 컬렉션으로 스키마 추론하기
change.stream.publish.full.document.only 옵션을 true 로 설정하면 Spark Connector는 스캔한 문서의 스키마를 사용하여 DataFrame 의 스키마를 추론합니다.
스키마 추론은 스트리밍 시작 시 발생하며 스트리밍 중에 생성된 컬렉션은 고려하지 않습니다.
여러 컬렉션에서 스트리밍하고 스키마를 추론할 때 connector 는 각 컬렉션을 순차적으로 샘플링합니다. 많은 수의 컬렉션에서 스트리밍하면 스키마 추론 성능이 눈에 띄게 느려질 수 있습니다. 이러한 성능 영향은 스키마를 추론하는 동안에만 발생합니다.