소개한 지 꽤 오래되었습니다. 첫 번째 개발자 프리뷰 의 새로운 Couchbase Spark 커넥터를 출시했습니다. 그래서 개선 사항과 몇 가지 새로운 기능을 제공하는 또 다른 릴리스를 출시할 때가 되었다고 생각했습니다. 특히
- Spark SQL에 대한 기본 지원
- 스파크 스트리밍 기본 지원
- 키/값 액세스를 위한 기본 설정 위치
- 종속성 업그레이드
가장 중요한 것은 이제 아파치 스파크 1.3커넥터의 GA 릴리스의 대상 버전이 될 것입니다.
지금 바로 시작하고 싶으시다면 여기 좌표가 있습니다:
- 그룹 ID: com.couchbase.client
- 아티팩트 ID: spark-connector_2.10 또는 spark-connector_2.11
- 버전: 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를 변경할 수 있을 때까지 최대한 많은 피드백을 제공해 주시기 바랍니다.
이 커넥터에 사용할 수 있는 자바 포트가 있나요?
자바 지향 래퍼를 제공하는 자바 패키지 \"japi\"가 있습니다: https://github.com/couchbasela…
인덱스 생성 정보 : 인덱스 생성 정보
인덱스 만들기
testResult_E
ontestResult
(Test12._asda
)를 사용하여 gsi;{
\"requestID\": \”7c7ddd6c-55c5-4aec-9c61-d805c350fdfe\”,
\"서명\": null,
\"결과\": [
],
\"status\": \"성공\",
\"metrics\": {
\"elapsedTime\": \"4.970636925s\",
\"실행 시간\": \"4.969727845s\",
\"결과 수\": 0,
\"결과 크기\": 0
}
}
사실 , 사실
_asda
jsonDoc \'Test12\'의 키가 존재하지 않습니다.오류 정보를 알려주는 이유는 무엇인가요?
색인 생성은 특정 문서를 색인하지 않습니다... 여기서 지시한 것은 \"버킷 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) 팀과의 상호작용 및 기술적인 질문에 대해 훨씬 더 면밀히 관찰하고 쉽게 따라할 수 있습니다.)
안녕하세요,
카우치베이스 SDK에 uuid-generator API가 있나요?
아니요
감사합니다!
가이드에서 보는 UUID는 어디에서 사용할 수 있나요?
CS에서 사용하는 JS 엔진이 무엇인지 알려주실 수 있나요?
안녕하세요,
CS에서 사용하는 JS-LIB의 경로를 어떻게 찾을 수 있나요?
CS에 sef 정의 js-lib를 추가하려면 어떻게 해야 하나요?
포럼을 이용해 주세요(http://forums.couchbase.com) 팀과의 상호작용 및 기술적인 질문은 훨씬 더 면밀히 관찰되고 관련된 모든 사람이 작업하기 쉬우며 더 자세한 질문을 게시할 수 있습니다.
죄송합니다, 지금 웹사이트에 접속할 수 없습니다. http 응답이 항상 비어 있기 때문입니다. 저를 도와줄 수 있는 다른 디스큐즈를 알려주시겠어요?
안녕하세요,
CS는 버킷을 10개만 소유하고 있나요?