이전 중고품 기반 코드를 CQL3으로 업데이트하고 있습니다.varchar 키를 사용하여 CQL3을 사용하여 Cassandra에서 큰 결과를 페이징
코드의 한 부분이 20M + 행으로 구성된 테이블의 전체 데이터 세트를 처리하고 있습니다. 이 부분은 처음에는 메모리 사용으로 인해 프로그램이 손상 되었기 때문에 TokenRanges (및 Hector)를 사용하여 열 패밀리를 반복하는 RowIterator 클래스를 만들었습니다.
CQL3을 사용하여 이것을 다시 쓰려고 할 때 데이터를 페이징하는 데 문제가 있습니다. 나는 http://www.datastax.com/documentation/cql/3.0/cql/cql_using/paging_c.html에서 약간의 정보를 통해 찾았지만, 최초의 "페이지"
resultSet = session.execute("select * from " + TABLE + " where token(key) <= token(" + offset + ")");
이 코드를하려고 할 때 나는 오류를
는 부여 제공된 링크의 예는 숫자 키를 사용한다. varchar (UTF8Type) 키를 사용하여이 작업을 수행 할 수 있습니까?com.datastax.driver.core.exceptions.InvalidTypeException를 얻을 : 잘못된 유형을 가 CQL 형 VARCHAR 값 0, 기대 클래스 java.lang.String하지만 클래스 java.lang.Integer의
현재이 기능이 내장되어있는 것 같습니다 (https://issues.apache.org/jira/browse/CASSANDRA-4415). 그러나 저에게 도움이되는 예제를 찾을 수 없습니다. 게다가, 나는 지금 Cassandra 1.2.9를 위해 그것을 해결해야만한다.
답변 해 주셔서 감사합니다. 예, 곧 2.0으로 업그레이드 할 예정입니다. 그러나 나는 그 전에이 일을해야합니다. 준비된 문장을 사용하고 있지만 작동 시키려고 할 때 문자열로 전환했습니다. <는 첫 번째 청크에 불과했습니다. 다음으로>를 사용합니다. 그러나 단순한 한계 100이 토큰을 사용할 때와 같은 방식으로 결과를 정렬한다는 사실을 알지 못했습니다. 따라서 초기 쿼리가 더 간단 해집니다. – Moonwalkr
그리고 예, 나는 cqlsh에서 같은 오류 메시지를받습니다. 하지만, 지금 당신의 제안 (...> 토큰 (lastkey) 제한 100)을 시도했을 때 나는 그것을 작동 시켰습니다! 일종의. 행을 놓치고있는 것 같습니다. 기본 키는 키와 열의 합성입니다 1 CLI를 사용하면 "키"(IP 주소) 당 하나의 행만 있고 모든 데이터는 열에 있지만 cqlsh를 사용하면 각 IP에 대해 "행"이 10 개 이상있을 수 있습니다. 그 IP와 나는 다음 chunk를 위해 IP를 사용하고 나머지 cql "rows"(열)은 버려진 다 ... – Moonwalkr
그건 분명히 분명하지 않다. 나는 이것을 내 질문에 대한 대답으로 받아 들일 것이다. 선택 작동) 현재 문제에 대한 새로운 질문을 만듭니다. 감사합니다! – Moonwalkr