Hector를 사용하여 두 값을 (열 이름으로) 저장하려고합니다. 내가 아는 한, DoubleSerializer와 함께 LONGTYPE 비교기를 사용해야합니다. 비교 자로 ComparatorType.LONGTYPE 및 유효성 검사기로 ComparatorType.UTF8TYPE이있는 columnFamily를 만들었습니다. 내가 이렇게 내 열 가족에 데이터를 삽입 : rowKey이 String 인Cectorandra에서 Hector를 사용하여 double 값을 검색하면 잘못된 결과가 나타납니다.
Mutator<String> m = HFactory.createMutator(_keyspace, _ss);
m.addInsertion(rowKey, cf, HFactory.createColumn(colKey, "", _ds, _ss));
이 colKey가 이중 인 DoubleSerializer을 _ds하고 StringSerializer을 _ss. 긍정적 인 이중 값은 모든 것이 제대로 작동하는 것 같습니다. 그러나 음의 시작 및/또는 종료 매개 변수를 사용하여 범위 쿼리를 수행하려고 할 때 이상한 점이 있습니다. START 마무리가 긍정적 인 경우
SliceQuery<String, Double, String> q =
HFactory.createSliceQuery(ks, _ss, _ds, _ss);
q.setRange(START, FINISH., false, 500);
이 모든 것이 괜찮 : 이것은 내가 쿼리에 사용하는 코드입니다.
START가 음수이고 FINISH가 양수이면 정확한 양수 값을 반환하지만 실제로 START보다 작은 음수 값만 반환합니다.
모두 음과 시작 (그것이 있어야로!?)를 모두 부정적인 때 마침, 그것이
InvalidRequestException(why:range finish must come after start in the order of traversal).
를 던질 것이다, 그러나 START 완료 후 더 큰 작은 경우 (즉, 낮은 음) , 올바른 결과를 반환하지만 잘못된 순서로 표시됩니다 (가장 작은 것, 가장 큰 것, 가장 먼저).
아무도 그것에 대해 언급 할 수 있습니까? 내가 뭔가 잘못하고있는 중이거나 어쩌면 어딘가에서 hector에 버그가있을 수 있습니까?
편집 : 불행히도, DoubleType은 이전 버전의 hector에서 제거되었습니다. 내가 사용하는 버전이 1.1-0이라는 것을 잊어 버렸다.