2013-06-17 2 views
0

모든 슈퍼 열 이름 및 모든 하위 열 (이름 및 값)를 조회하고이 같은 쿼리 할 때 모든 것이 잘 작동 :카산드라 헥터 - 나는 슈퍼 열 가족이

private static Cluster cluster = HFactory.getOrCreateCluster("cluster1", "localhost:9160"); 
private static Keyspace keyspace = HFactory.createKeyspace("keyspace1",cluster); 
private static Serializer se = StringSerializer.get(); 
SuperColumnQuery<String, String, String, String> scq = HFactory.createSuperColumnQuery(keyspace, se, se, se, se); 
scq.setColumnFamily("step_wise_stats") 
.setKey("1001") 
.setSuperName("124"); 
QueryResult<HSuperColumn<String, String, String>> qres = scq.execute(); 
System.out.println(qres.get()); 

을하지만 아래에 더 슈퍼 이름이있다 125, 126 등의 1001 키. 그리고 그것들 역시 역동적입니다 (나는 그 이름들을 미리 모른다). 어떻게 모두 쿼리합니까?

답변

0

많은 전문가와 문서에 따르면 수퍼 컬럼의 경우와 비교할 때 수퍼 컬럼보다 훨씬 뛰어납니다. 보조 색인이 없기 때문에 가능한 경우 복합 컬럼을 사용하십시오.이 경우에는 timeUUID를 사용해야합니다. 동적 값 대신 아래 코드로 변경, MultigetSubSliceQuery과 노력이 필요한 결과를 생성하는 프로그래밍 노력을 증가시킬 수

ArrayList<String> listco = new ArrayList<String>(); 
     listco.add("1001"); 


listco.add("1002"); 

MultigetSubSliceQuery<String,String, String, String> rangeSlicesQuery = 
       HFactory. 
       createMultigetSubSliceQuery(keyspace,stringSerializer, stringSerializer, stringSerializer, stringSerializer); 

rangeSlicesQuery.setColumnFamily("step_wise_stats"); 
rangeSlicesQuery.setSuperColumn("your super column"); 

rangeSlicesQuery.setKeys(listco); 
rangeSlicesQuery.setRange("", "", false, 1000); 
QueryResult<Rows<String, String, String>> result = rangeSlicesQuery.execute(); 
+0

그러나 문제는 여전히 .. 그래서 캔트 .. 내가 슈퍼 열 이름을 잘 모릅니다 지속 rangeSlicesQuery.setSuperColumn ("슈퍼 열"); -이 모든 것이 필요합니다 ... –

+0

"이것은 프로그래밍을 향상시킬 수 있습니다 ..."라는 말은 시간당 UUID 또는 timekey (예 : yyyymmddHH = 2013061713)를 수퍼 열 이름으로 사용해야한다는 것을 의미합니다. 시간당 UUID/timekey를 가져와 수동으로 시간을 트래버스해야합니다. 주문,이 programatically 달성 할 수 –

+0

알았어 .. 고마워 .. –

관련 문제