2013-06-11 4 views
0

Я использую Java Гектор API для извлечения данных из Cassandra Databse следующим образом:Fetch строку из объекта Hector QueryResult

public static void retrieveData() { 
    try { 
     //Create a cluster object from your existing Cassandra cluster 
     Cluster cluster = HFactory.getOrCreateCluster("Test Cluster", "localhost:9160"); 

     //Create a keyspace object from the existing keyspace we created using CLI 
     Keyspace keyspace = HFactory.createKeyspace("TestDB", cluster); 

     SliceQuery<String, String, String> sliceQuery = HFactory.createSliceQuery(keyspace, stringSerializer, stringSerializer, stringSerializer); 
     sliceQuery.setColumnFamily("ClientHeaders").setKey("1234"); 
     sliceQuery.setRange("", "", false, 10); 
     sliceQuery.setColumnNames("ip_address","uuid"); 
     QueryResult<ColumnSlice<String, String>> result = sliceQuery.execute();     
     System.out.println("\nInserted data is as follows:\n" + result.get()); 
    } catch (Exception ex) { 
     System.out.println("Error encountered while retrieving data!!"); 
     ex.printStackTrace() ; 
    } 

Так я получаю извлекаемые значения в соответствии с запросом в следующем порядке:

ColumnSlice ([HColumn (ip_address = 203.110.85.171), HColumn (UUID = a3363400-abfd-0130-e2cf-07b5c765964c)])

Однако я хочу извлечь результат в некоторой строковой переменной (string ip = ip_address и т. д.) и использовать. Но я не мог понять, как это сделать? Пожалуйста помоги. Благодарю.

ответ

1

Попробуйте сделать это:

if (result != null && result.get() != null) { 
      List<HColumn<String, String>> resultCols = result.get().getColumns(); 
      for (HColumn<String, String> col : resultCols) 
      { 
       System.out.println(col.getValue()); 
      } 
+0

Спасибо человек. это сработало. –

1

на основе JavaDoc Гектора (QueryResult, ColumnSlice и HColumn), вы должны быть в состоянии сделать это:

ColumnSlice columnSlice = result.get(); 
HColumn<String, String> column = columnSlice.getColumnByName("ip_address"); 
System.out.println("The value of ip_address is " + column.getValue()); 

Или

for (HColumn<String, String> column : result.get().getColumns()) { 
    System.out.println("The value of " + column.getName() + " is " + column.getValue()); 
} 
+0

Спасибо , это сработало. –