DB로 cassandra를 사용하여 새 제품을 개발 중입니다. 현재 우분투 13.10 개발 노트북 코어 i7에 설치되었습니다. 컬럼 계열과 쿼리가 있습니다. 이 쿼리는 cqlsh에서 실행되어 33267 개의 행을 제공합니다. 응용 프로그램을 프로파일 링 할 때DataStax Java 드라이버 루프 반복 행
이while (!rs.isExhausted()) {
Row row = rs.one();
long hora = row.getDate(1).getTime();
String clave = row.getString(0);
List<Long> data = row.getList(2, Long.class);
ordenados.put(hora, new Object[]{clave, data.get(0)/100000000.0, data.get(1)});
contador2 +=1;
if (Math.floor(contador2/1000.0) == contador2/1000.0) {
System.out.println("sitio "+ contador2+ " "+clave+ " "+hora);
}
}
, 내가 잠금 경합을 참조하십시오 datastax 자바 드라이버 2.0을 사용, 일부 실행 올바른 행을주고, 내 자바 프로그램에서 실행, 다른 사람은 동일한 행을 또 다시 반복 무한 루프에있어 새로운 I/O 작업자 스레드간에 98 %의 시간이 sun.nio.ch.EPollArrayWrapper.poll 메소드에 소비됩니다. 누군가이 문제를 경험했으며 해결책을 알고 있습니까? 누군가가 소스로 오류를 디버그하여 datastax에보고 할 수 있도록 cassandra-driver-core-2.0.0.src.jar을 다운로드 할 수있는 링크로 안내 할 수 있습니까? 이것은 흥미 진진한 기술이지만 프로덕션 DB가 내 경력에서 처음으로 그렇게 신뢰할 수없는 동작을 제공합니다. By 덧붙여서 : 원래의 쿼리에는 내가 삭제 한 순서가있었습니다. by order by,이 예외가 있습니다 : 스레드 "main"의 예외 com.datastax.driver.core.exceptions.InvalidQueryException : ORDER BY 및 파티션 키의 IN 제한이있는 쿼리를 페이지 할 수 없습니다. ORDER BY 또는 IN을 제거하고 클라이언트 측 정렬을 제거하거나이 쿼리에 대한 페이징을 비활성화해야합니다. 어제 비슷한 쿼리와 cqlsh에서 작업 할 때 추가 순서에 문제없이 작동합니다. 아마도이 문제는 아마 둘 다 관련되어 있기 때문에 이야기합니다. 감사합니다.
답변 해 주셔서 감사합니다. 우분투 13.10에서 cassandra 2.0.6을 사용하고 있습니다. 필자는 자동 페이징에 대해 더 많이 읽었으며 사용하지 않도록 설정했다 : // ResultSet rs = cassandra.execute (query); 문 stmt = 새로운 SimpleStatement (쿼리); stmt.setFetchSize (Integer.MAX_VALUE); ResultSet rs = cassandra.execute (stmt); while (! rs.isExhausted()) {' – Rogelio