나는 cassandra를 사용하고 있으며 주어진 타임 스탬프 범위 사이에있는 레코드를 가져 오려고합니다. 이것에 대한 질문은 무엇일까요? 저주받은 고객을 사용하고 있습니다.cassandra에서 주어진 타임 스탬프로 레코드를 가져 오는 중
이 코드를 사용해 보았습니다.
String columnFamily = "UserColumnFamily";
String keyspace="Enterprise";
final String UTF8 = "UTF8";
String keyUserid="1";
TTransport tr = new TSocket("10.10.10.104", 9160);
TProtocol proto = new TBinaryProtocol(tr);
Cassandra.Client client = new Cassandra.Client(proto);
SlicePredicate predicate = new SlicePredicate();
SliceRange sliceRange = new SliceRange();
String startkey="1293443184521000";
String finishkey ="1293445102333000";
sliceRange.setStart(new byte[0]);
sliceRange.setFinish(new byte[0]);
predicate.setSlice_range(sliceRange);
ColumnParent parent = new ColumnParent(columnFamily);
try {
tr.open();
List<KeySlice> results=client.get_range_slice(keyspace,parent,predicate,startkey,finishkey,100, ConsistencyLevel.ONE);
for (KeySlice result : results) {
Column column = (Column) result.columns;
System.out.println(new String(column.name,UTF8) + " ->> "
+ new String(column.value,UTF8));
}
tr.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
그러나이 오류가 발생합니다 :
InvalidRequestException(why:start key's md5 sorts after end key's md5.
This is not allowed; you probably should not specify end key at all, under RandomPartitioner
을 그리고 넣으면 finishkey
다음 말한다 null
에 : 나는 startkey
로 설정 할 값을 이해하지
Required field 'finish_key' was not present!
Struct: get_range_slice_args(keyspace:NiidleEnterprise,
column_parent:ColumnParent(column_family:UserColumnFamily),
predicate:SlicePredicate(slice_range:SliceRange(start:, finish:, reversed:false, count:100)),
start_key:1293443184521000, finish_key:null, row_count:100, consistency_level:ONE)"
및 finishkey
. 위의 코드에서 :
String startkey="1293443184521000";
String finishkey ="1293445102333000";
이들은 소인 값이다. 시작 및 종료 키를 위해 무엇을 취해야하는지 제안하십시오.
어떤 클라이언트를 사용하고 있습니까? 그 정보는 훨씬 더 유용한 질문이 될 것입니다. –