나는 이벤트와 같은 데이터를 저장할 C * 열 패밀리가 있습니다. 이 방법으로 CQL3에서 만든 열 가족 :스파크 + 카산드라. 클러스터링 순서 문제가있는 복합 키
CREATE TABLE event (
hour text,
stamp timeuuid,
values map<text, text>,
PRIMARY KEY (hour, stamp)
) WITH CLUSTERING ORDER BY (stamp DESC)
파티션 설정이 Murmur3 파티션 프로그램입니다. 그런 다음 Calliope 라이브러리를 통해 해당 데이터에 대한 스파크 쿼리를 작성하려고했습니다. 클러스터링 키 ('시간'필드)에 대한 1000 개 이상의 레코드가 내 경우에는
- 하지만 반응은 키 당 처음 1000 개 개의 레코드를 포함 : 결과에서 나는 두 가지 문제를 받게됩니다. 더 많은 데이터를 받기 위해 쿼리에서 페이지 크기를 늘릴 수는 있지만, 이해할 수있는 한, 데이터를 통과하여 슬라이스 할 페이징 인의 작업이어야합니다.
- 각 레코드를 두 번 이상 수신합니다.
첫 번째 문제 Cil3 드라이버가 데이터에 페이지 매김을해야한다는 Calliope 작성자의 대답을 얻습니다. 그는 DataStax article을 읽도록 권합니다. 하지만 드라이버에 올바른 지침을 사용하여 쿼리를 작성하는 방법에 대한 답을 찾을 수 없습니다.
두 번째 문제에 대해 카산드라의 Hadoop 커넥터에 문제가 있음을 발견했습니다. < 1.2.11. 하지만 C * 2.0.3을 사용하고 Spark을 필요한 라이브러리 버전으로 다시 빌드합니다. 또한 Calliope 버전 0.9.0-C2-EA를 사용합니다.
이러한 문제를 해결하거나 해결 방법을 설명하는 올바른 방법을 설명하는 문서 또는 코드 샘플을 알려주십시오. 나는 C * -to-Spark 커넥터를 부적절한 방법으로 사용한다고 생각하지만 해결책을 찾을 수 없습니다.
미리 감사드립니다.
"WITH CLUSTERING ORDER"절이 두 문제의 근원 인 것 같습니다. 비슷한 테이블에서 (단지 ORDER BY로 CLUSTERING하지 않고) 결과를 제한하거나 중복을 기록하지 않습니다. –