전체 팀을 대표하여, 새로운 Couchbase의 첫 번째 개발자 프리뷰를 출시하게 되어 매우 자랑스럽게 생각합니다. Spark 커넥터. 이 커넥터를 사용하면 Spark RDD를 사용하여 Couchbase에서 직접 데이터를 안팎으로 이동할 수 있습니다. 확장성, 성능, 사용 편의성과 같은 많은 속성을 공유한다는 점에서 Couchbase와 Spark는 완벽한 조합입니다.
이 개발자 프리뷰에서는 다음 기능을 사용할 수 있습니다(더 많은 기능이 곧 제공될 예정입니다):
- 문서, 보기 및 N1QL 쿼리에서 RDD 만들기.
- 카우치베이스에 RDD 및 DStream을 작성합니다.
- 필요한 경우 직접 액세스를 포함하여 완전히 투명한 클러스터 및 버킷 관리.
프로젝트는 github에서 찾을 수 있습니다. 여기. 또한 다음을 제공합니다. 위키 형식의 문서하지만 프로젝트가 GA 릴리스에 가까워지면 더 공식적인 명칭으로 변경할 계획입니다.
받기
개발자 프리뷰는 자체 maven 리포지토리를 통해 제공되며, GA 아티팩트는 maven central에서 사용할 수 있습니다. 다음은 좌표입니다(스파크와 마찬가지로 스칼라 2.10과 2.11로 교차 컴파일하고 있습니다):
- 그룹 ID: com.couchbase.client
- 아티팩트 ID: 스파크-커넥터_2.10 또는 스파크-커넥터_2.11
- 버전: 1.0.0-dp
이 개발자 프리뷰는 Spark 1.2.1로 빌드되었습니다. 로컬 설치로만 사용해보고 싶으시다면 이것으로 시작하시면 됩니다. 프로덕션에 배포해야 하는 경우, 가장 쉬운 방법은 모든 종속성을 "팻 자(fat jar)"로 묶어두는 것입니다. sbt-assembly 플러그인입니다. 엄밀히 말하면 이것은 카우치베이스 커넥터와 큰 관련이 없지만 곧 공식 문서의 일부로 해당 영역에 대한 전체 가이드를 제공할 예정입니다.
설정
모든 것이 클래스 경로에 있으면 이제 구성과 스파크 컨텍스트를 설정할 차례입니다. 전체 구성은 스파크 구성의 속성을 통해 이루어집니다. 설정을 제공하지 않으면 다음 서버에 연결됩니다. localhost 를 사용하여 기본값 버킷.
다음은 약간 사용자 정의된 구성으로 맥주 샘플 버킷을 생성합니다. 원격 클러스터의 맥주 샘플 데이터 집합을 사용합니다.
여러 개의 버킷을 열어 동시에 사용할 수도 있습니다. 현재 문서 를 참조하세요. 이제 스파크 컨텍스트를 초기화하기만 하면 됩니다:
카우치베이스에서 RDD로 읽기
가장 먼저 기억해야 할 것은 올바른 네임스페이스를 가져와서 모든 Couchbase 특정 메서드를 스파크 컨텍스트에서 사용할 수 있도록 하는 것입니다.
이제 우리는 couchbaseGet 메서드를 사용하여 일련의 ID를 RDD로 읽은 다음 선택적으로 모든 종류의 스파크 변환을 적용할 수 있습니다. 다음은 맥주 문서를 로드하고 이름을 추출하여 인쇄하는 간단한 예제입니다:
이 코드는 기본 병렬 처리를 사용하지만 오버로드된 메서드를 사용하여 해당 속성을 사용자 정의할 수 있으므로 필요한 적절한 병렬 처리 계수를 얻을 수 있습니다.
변환하는 방법에는 여러 가지가 있으므로 대상 문서 유형을 SDK에 힌트해야 합니다. 따라서 RawJsonDocument 대신 JsonDocument 변환된 문자열 대신 원시 JSON 문자열에 액세스할 수 있습니다. JsonObject. 비슷한 방식으로 카우치베이스에 문서로 저장하고 있는 바이너리 데이터에 액세스할 수도 있습니다.
뷰 쿼리에서 RDD를 만들 수도 있습니다. 다음 예에서는 뷰 결과에서 처음 10개의 행을 인쇄합니다:
방출된 각 행에 대한 전체 문서를 가져와야 하는 경우도 종종 있습니다. 이를 위해 couchbaseGet을 RDD 변환으로 사용할 수도 있습니다. 다음은 주어진 보기에서 모든 문서를 로드하고 RDD를 캐시하는 보다 완전한 예제입니다. 그런 다음 모든 맥주의 평균 알코올 도수를 부피로 계산하고 가장 긴 이름을 가진 맥주를 찾습니다.
마지막으로 N1QL이 활성화된 서버(또는 최소한 N1QL DP4를 실행 중)가 있는 경우 N1QL 쿼리도 실행할 수 있습니다:
카우치베이스에 RDD 작성
카우치베이스는 뛰어난 쓰기 성능으로 잘 알려져 있기 때문에 이를 스파크에서 활용하지 못한다면 아쉬울 것입니다. 가장 간단한 방법은 RDD[문서] 를 저장하기 RDD 방법을 사용합니다. 다음 코드는 Couchbase에서 100개의 문서를 생성합니다:
생성된 문서에 대한 완전한 제어가 필요하지 않은 경우 상용구를 줄이는 사용자 정의 변환기를 사용할 수도 있습니다. 이 시점에서는 몇 가지 제한 사항이 있지만 플랫 JSON 구조도 위와 유사하게 저장할 수 있습니다:
다음 개발자 프리뷰에서는 변환 기능을 개선하고 사용자가 직접 로직을 연결할 수 있도록 할 예정입니다.
마지막으로, 저희는 또한 데이터를 파이어호스하여 DStream (스파크 스트리밍). 다음은 트위터에서 데이터를 가져와 인기 해시태그를 Couchbase에 문서로 저장하는 전체 예제입니다:
개발자 프리뷰 2 계획
이번 첫 개발자 프리뷰만큼이나 흥미로운 기능이 더 많이 대기 중입니다. 예를 들어, 더욱 긴밀한 N1QL과 Spark SQL 통합을 위해 노력하고 있으며, DCP(내부 스트리밍 프로토콜)를 통해 DStream을 생성하여 실시간으로 문서 변경 사항을 스파크 및 사용자 지정 변환기로 가져올 수 있도록 하고 있습니다.
다음을 통해 피드백을 제공하고 질문해 주세요. 포럼 를 클릭하고 발견한 문제를 버그 추적기 (원하는 기능과 개선 사항을 제출할 수도 있습니다!). 저희는 이 프로젝트가 어디로 나아가고 있는지 매우 기대하고 있으며, 얼리 어답터들의 피드백을 받는 것이 더 멋진 프로젝트를 만드는 데 매우 중요합니다.
이 기능이 작동하려면 Couchbase 클러스터의 각 노드에 설치해야 하는 것이 있나요?