카우치베이스 스파크 커넥터 - 개발자 프리뷰 새로 고침

소개한 지 꽤 오래되었습니다. 첫 번째 개발자 프리뷰 의 새로운 Couchbase Spark 커넥터를 출시했습니다. 그래서 개선 사항과 몇 가지 새로운 기능을 제공하는 또 다른 릴리스를 출시할 때가 되었다고 생각했습니다. 특히

  1. Spark SQL에 대한 기본 지원
  2. 스파크 스트리밍 기본 지원
  3. 키/값 액세스를 위한 기본 설정 위치
  4. 종속성 업그레이드

가장 중요한 것은 이제 아파치 스파크 1.3커넥터의 GA 릴리스의 대상 버전이 될 것입니다.

지금 바로 시작하고 싶으시다면 여기 좌표가 있습니다:

  1. 그룹 ID: com.couchbase.client
  2. 아티팩트 ID: spark-connector_2.10 또는 spark-connector_2.11
  3. 버전: 1.0.0-dp2

사전 릴리스이므로 Couchbase 리포지토리를 포함해야 합니다:

일반 메이븐 종속성 외에도 이제 다음에서도 사용할 수 있습니다. spark-packages.org!

Spark SQL 지원

Spark 1.3으로 업그레이드하는 가장 큰 이유는 새로운 DataFrame API를 지원하기 때문입니다. 새로운 DataFrame API는 SQL을 기반으로 하며, 카우치베이스의 언어별 구현인 N1QL을 긴밀하게 통합할 수 있습니다. 이를 통해 친숙하면서도 긴밀하게 통합된 원활한 엔드투엔드 환경을 제공합니다.

커넥터를 사용하면 관계를 정의할 수 있으며(Couchbase 자체는 스키마를 강제하지 않음), 스키마를 수동으로 제공하거나 커넥터가 스키마를 추론하도록 할 수 있습니다. 자동 스키마 추론을 원한다면 정확도를 높이기 위해 일종의 필터(예: 유형 필드)를 제공하는 것이 좋습니다. 커넥터는 샘플 문서를 투명하게 로드하고 사용자가 쿼리할 수 있는 스키마를 생성합니다.

다음은 현재 여행 샘플을 사용한 예시입니다:

그러면 먼저 다음과 같은 스키마가 인쇄됩니다:

그리고 그 결과는 다음과 같은 형식으로 표시됩니다:

이 기능은 작업하기에 좋지만, 서로 다른 소스의 데이터 프레임을 결합할 때 진정한 힘을 발휘합니다. 다음 예는 HDFS와 Couchbase에서 데이터를 가져와서 함께 쿼리하는 예제입니다:

현재 중첩된 JSON 객체와 배열은 지원되지 않지만 다음 버전에서는 지원될 예정입니다. 스키마에는 표시될 수 있지만 쿼리 시간(해당 필드 중 하나를 쿼리하거나 결과에 포함하려는 경우) 동안에는 실패합니다.

스파크 스트리밍 지원

첫 번째 개발자 프리뷰에서는 이미 Spark 스트림에서 Couchbase로 데이터를 쓰는 기능이 지원되었습니다. 이번 개발자 프리뷰에서는 변이 및 스냅샷 정보를 가능한 한 빨리 스파크에 공급하기 위해 "DCP" 프로토콜을 활용하는 실험적 지원을 추가했습니다. 이 프로토콜을 사용하면 Couchbase 클러스터에 도착하는 데이터를 거의 실시간으로 분석할 수 있습니다.

현재 스냅샷 및 롤백 지원은 구현되어 있지 않으므로 장애 조치 및 리밸런싱이 예상대로 작동하지 않습니다.

다음은 버킷에서 잔돈을 지급하는 방법에 대한 간단한 예시입니다:

이 시점에서 여러분이 해야 할 일은 이것뿐입니다. 현재는 버킷의 모든 데이터도 제공하므로 반드시 빈 버킷에서 테스트하세요. 현재 스냅샷에서 시작하는 기능은 향후 릴리스에 추가될 예정입니다. 코드를 실행한 다음 버킷에 문서를 작성하면 스파크 스트리밍이 해당 변경 사항을 알려줍니다:

그런 다음 돌연변이를 필터링하고 머신 러닝 알고리즘에 공급하거나 처리 후 다른 데이터 저장소에 저장하는 등 모든 종류의 스트림 작업을 수행할 수 있습니다(또는 카우치베이스에 다시 저장할 수도 있음).

키/값 액세스를 위한 기본 설정 위치

스파크 사용 시 성능 저하 요인 중 하나는 셔플 작업입니다. "셔플"은 네트워크를 통해 한 작업자에서 다른 작업자로 데이터를 전송하는 작업입니다. 네트워크 트래픽은 항상 인메모리 처리보다 훨씬 느리기 때문에 셔플은 가능한 한 피해야 합니다.

고유 ID를 통해 문서를 로드할 때 커넥터는 이제 항상 (그리고 투명하게) Couchbase에서 문서가 있는 위치를 Spark에 힌트합니다. 그 결과, 모든 Couchbase 노드에 Spark 워커를 배포하면 Spark가 이 워커에 직접 작업을 전송할 수 있을 만큼 지능적으로 처리되므로 네트워크를 통해 문서를 전송할 필요가 없어지고 로컬 처리가 가능해집니다.

위치는 힌트일 뿐이므로 다른 노드에서 워커를 실행할 수 있으며, 완벽하게 일치하는 노드를 찾을 수 없는 경우 Spark가 적절하게 워커를 파견합니다.

향후에는 쿼리가 실행될 대상 노드를 기반으로 N1QL 및 뷰 조회를 위한 기본 위치도 계획하고 있습니다.

계획된 기능 및 다음 단계

이번 릴리스로 완성 단계에 가까워졌지만, 아직 완료해야 할 일이 많이 남아 있습니다. 다음 마일스톤은 베타 릴리스가 될 것이며, 자바 API, Spark SQL 및 스트리밍 지원 개선, 그리고 발견되는 수정 및 안정성 개선과 같은 기능이 포함될 예정입니다.

아직 베타 버전이 출시되지 않았으므로 필요에 따라 API를 변경할 수 있을 때까지 최대한 많은 피드백을 제공해 주시기 바랍니다.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 마이클 니칭거

마이클 니칭어는 Couchbase의 수석 소프트웨어 엔지니어로 일하고 있습니다. 그는 JVM에서 최초의 완전 반응형 데이터베이스 드라이버 중 하나인 Couchbase Java SDK의 설계자이자 유지 관리자입니다. 또한 Couchbase Spark Connector를 작성하고 유지 관리하고 있습니다. Michael은 오픈 소스 커뮤니티에서 활발히 활동 중이며, RxJava 및 Netty와 같은 다양한 프로젝트에 기여하고 있습니다.

댓글 하나

  1. 이 커넥터에 사용할 수 있는 자바 포트가 있나요?

    1. 사이먼 바슬레 9월 10, 2015에서 7:59 오전

      자바 지향 래퍼를 제공하는 자바 패키지 \"japi\"가 있습니다: https://github.com/couchbasela

  2. 인덱스 생성 정보 : 인덱스 생성 정보

    인덱스 만들기 testResult_E on testResult(Test12._asda)를 사용하여 gsi;
    {
    \"requestID\": \”7c7ddd6c-55c5-4aec-9c61-d805c350fdfe\”,
    \"서명\": null,
    \"결과\": [
    ],
    \"status\": \"성공\",
    \"metrics\": {
    \"elapsedTime\": \"4.970636925s\",
    \"실행 시간\": \"4.969727845s\",
    \"결과 수\": 0,
    \"결과 크기\": 0
    }
    }

    사실 , 사실 _asda jsonDoc \'Test12\'의 키가 존재하지 않습니다.
    오류 정보를 알려주는 이유는 무엇인가요?

    1. 사이먼 바슬레 9월 10, 2015에서 7:58 오전

      색인 생성은 특정 문서를 색인하지 않습니다... 여기서 지시한 것은 \"버킷 testResult에 있는 경우 JSON 필드 Test12 내부의 _asda를 색인합니다\"입니다. 단일 문서에 대한 색인을 만드는 것은 의미가 없으므로 \"WHERE META(bucketName).id = documentId\"를 사용합니다.

      간단히 말해서, 구문은 \"CREATE INDEX indexName ON bucketName(oneFieldInJSON, orMore, 또는.even.path.in.JSON)\"입니다.

      필드 중 하나가 카테고리인 경우 특정 카테고리만 인덱싱하는 등 마지막에 where 절을 넣을 수도 있습니다: CREATE INDEX topProductsByPrice ON products(price) WHERE category = \"bestseller\".

      또한 포럼(http://forums.couchbase.com) 팀과의 상호작용 및 기술적인 질문에 대해 훨씬 더 면밀히 관찰하고 쉽게 따라할 수 있습니다.)

      1. 안녕하세요,
        카우치베이스 SDK에 uuid-generator API가 있나요?

          1. 감사합니다!
            가이드에서 보는 UUID는 어디에서 사용할 수 있나요?

            CS에서 사용하는 JS 엔진이 무엇인지 알려주실 수 있나요?

          2. 안녕하세요,
            CS에서 사용하는 JS-LIB의 경로를 어떻게 찾을 수 있나요?
            CS에 sef 정의 js-lib를 추가하려면 어떻게 해야 하나요?

          3. 사이먼 바슬레 10월 9, 2015에서 4:50 오후

            포럼을 이용해 주세요(http://forums.couchbase.com) 팀과의 상호작용 및 기술적인 질문은 훨씬 더 면밀히 관찰되고 관련된 모든 사람이 작업하기 쉬우며 더 자세한 질문을 게시할 수 있습니다.

          4. 죄송합니다, 지금 웹사이트에 접속할 수 없습니다. http 응답이 항상 비어 있기 때문입니다. 저를 도와줄 수 있는 다른 디스큐즈를 알려주시겠어요?

          5. 안녕하세요,
            CS는 버킷을 10개만 소유하고 있나요?

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.