2015-08-24 2 views
1

Voici le code que je vais insérer dans cassandraComment imprimer des valeurs de colonne dans Mutator avant de les exécuter?

Set<String> keys = MY_KEYS; 
Map<String, String> pairsOfNameValues = MY_MUTATION_BY_NAME_AND_VALUE; 

Set<HColumn<String, String>> colums = new HashSet<HColumn<String,String>>(); 
for (Entry<String, String> pair : pairsOfNameValues.entrySet()) { 
    colums.add(HFactory.createStringColumn(pair.getKey(), pair.getValue())); 
} 

Mutator<String> mutator = template.createMutator(); 
String column_family_name = template.getColumnFamily(); 
for (String key : keys) { 
    for (HColumn<String, String> column : colums) { 
     mutator.addInsertion(key, BASIC_COLUMN_FAMILY, column); 
    } 
} 
mutator.execute(); 

Il y a quelques cas où je ne sais pas combien de colonnes sont insérées dans le mutator. Est-il possible d'imprimer les données avant/après la méthode d'exécution.

J'ai essayé Mutationresult.tostring(). Il donne la réponse suivante.

MutationResult a pris (3750us) pour la requête (n/a) sur l'hôte: localhost (127.0.0.1): 9160

également mutateur à cordes ne m'a pas donné résultat souhaité.

Aidez-nous s'il vous plaît.

Répondre

2

Oui, essayez mutator.getPendingMutationCount() avant d'exécuter la requête. À part cela, vous devrez pousser la logique de compter manuellement les colonnes que vous ajoutez au mutateur. Le toString() ne vous donne pas ce que vous voulez car vous êtes censé lier le mutator.execute() à un MutationResult. E.g:

MutationResult mr = mutator.execute(); 

Mais le résultat de la mutation ne vous donne pas beaucoup plus non plus. Vous pouvez connaître ces 3 choses (2 vraiment ...)

// the execution time 
long getExecutionTimeMicro(); 
long getExecutionTimeNano(); 
// host used for the exec. 
CassandraHost getHostUsed();