2015-07-28 1 views
1

J'essaie de trouver un moyen de supprimer une ligne spécifique d'une table lorsqu'elle a le même identifiant de ligne que deux autres lignes dans Accumulo. Voici comment ma table est configurée:Accumulo supprimer un élément de ligne lorsque les ID de ligne sont les mêmes

m0 : property : name -> erp 
m0 : property : age -> 23 
m0 : purchase : food -> 5.00 
m0 : purchase : gas -> 24.00 
m0 : purchase : beer -> 15.00 

Dites que je veux supprimer le gaz de la table. Je sais que je pourrais utiliser connection.tableOperations().deleteRows(table, start, stop) mais si je passe dans l'ID de ligne de m0 - 1 et m0 à la fonction, il va supprimer toutes ces entrées. Puis-je faire une suppression où colFam = quelque chose et colQual = quelque chose? Je n'ai rien vu dans l'API pour supporter cela mais le code de Frankenstein est cool aussi :)

Répondre

2

Oui c'est possible. Je pensais aux lignes et colonnes toujours dans un esprit sql. Afin de supprimer une colonne (ce qui est ce que je pensais) plutôt que d'une ligne. Vous venez d'écrire une autre mutation. Par exemple:

Text rowId = new Text("m0"); 
Text colFam = new Text("purchase"); 
Text colQual = new Text("gas"); 
Mutation mut = new Mutation(rowId); 
mut.putDelete(colFam, colQual); 

writer = connection.createBatchWriter(tableName, new BatchWriter()); 
try{ 
    writer.addMutation(mut); 
}catch{ 
    ... 
} 

fonctionne parfaitement :)