当行 ID 相同时,Accumulo 删除行项目
Accumulo delete a row item when row ids are the same
我正在尝试找出一种方法,当它具有与 Accumulo 中的另一对行相同的行 ID 时,从 table 中删除特定行。这就是我 table 设置的方式:
m0 : property : name -> erp
m0 : property : age -> 23
m0 : purchase : food -> 5.00
m0 : purchase : gas -> 24.00
m0 : purchase : beer -> 15.00
假设我想从 table 中删除 gas。我知道我可以使用 connection.tableOperations().deleteRows(table, start, stop)
但如果我将 m0 - 1
和 m0
的行 ID 传递给函数,它将删除所有这些条目。我可以删除 colFam = something 和 colQual = something 吗?我在 API 中没有看到任何支持这一点的内容,但弗兰肯斯坦代码也很酷 :)
是的,这是可能的。我在想行和列仍然在 sql 脑海中。为了删除列(这是我的想法)而不是行。你只需编写另一个突变。例如:
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{
...
}
工作完美:)
我正在尝试找出一种方法,当它具有与 Accumulo 中的另一对行相同的行 ID 时,从 table 中删除特定行。这就是我 table 设置的方式:
m0 : property : name -> erp
m0 : property : age -> 23
m0 : purchase : food -> 5.00
m0 : purchase : gas -> 24.00
m0 : purchase : beer -> 15.00
假设我想从 table 中删除 gas。我知道我可以使用 connection.tableOperations().deleteRows(table, start, stop)
但如果我将 m0 - 1
和 m0
的行 ID 传递给函数,它将删除所有这些条目。我可以删除 colFam = something 和 colQual = something 吗?我在 API 中没有看到任何支持这一点的内容,但弗兰肯斯坦代码也很酷 :)
是的,这是可能的。我在想行和列仍然在 sql 脑海中。为了删除列(这是我的想法)而不是行。你只需编写另一个突变。例如:
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{
...
}
工作完美:)