2011-04-18 2 views
1

J'essaye Cassandra avec un exemple très simple. J'ai une famille de colonne stockée dans la base de données cassandra:Cassandra récupère une rangée entière

[[email protected]] list Hotel; 
Using default limit of 100 
------------------- 
RowKey: AZS_011 
=> (column=name, value=43616d6272696120537569746573, timestamp=527682928555011) 

La valeur ci-dessus est en fait « Cambria Suites ». Et quand j'utilise le code suivant pour récupérer la valeur de la base de données:

String key = "AZS_011"; 
    Connector connector = new Connector(); 
    Cassandra.Client client = connector.connect(); 

    ColumnPath cp = new ColumnPath("Hotel"); 
    cp.setColumn(to_bb("name")); 

    ColumnOrSuperColumn col = client.get(to_bb(key), cp, CL);                  
    String hotel_name = new String(col.column.value.array(), UTF8); 
    System.out.println("I found: " + hotel_name); 
    connector.close(); 

je me retrouve avec la sortie: J'ai trouvé: getnameCambria Suites ?? B?

Il semble qu'en faisant référence à col.column.value, j'ai tout dans la ligne entière. Ma question est comment puis-je obtenir la valeur sans le nom et la partie timestamp? Merci beaucoup.

Répondre

2

Utilisez la méthode suivante pour obtenir chaque colonne. J'ai fait la méthode obtenir les valeurs comme suit:

for (ColumnOrSuperColumn c : result) { 
      if (c.getColumn() != null) { 
       String name = new String(c.getColumn().getName(), ENCODING); 
       String value = new String(c.getColumn().getValue(), ENCODING); 
       long timestamp = c.getColumn().getTimestamp(); 
       System.out.println(" name: '" + name + "', value: '" + value + "', timestamp: " + timestamp); 
      } else { 

      } 
     } 
+0

Cela fonctionne comme un charme. Merci beaucoup. :-) – Lucas

Questions connexes