0

我正在尝试使用 RowDeletingIterator 删除一行。我正在运行 Accumulo 1.5.0。这就是我所拥有的

writer = conn.create_batch_writer("my_table")
mut = Mutation("1234")
mut.put(cf="", cq="", cv="", is_delete=True)
writer.add_mutation(mut)
writer.close()
for r in conn.scan("my_table", scanrange=Range(srow="1234", erow="1234"), iterators=[RowDeletingIterator()]):
    print(r)
conn.close()

我正在打印记录以验证扫描仪是否正在扫描适当的记录。可悲的是,它们似乎没有被删除。我会很感激任何见解,因为 Pyaccumulo 的文档不是最好的。

我知道有一个错误 ( ACCUMULO-1800 ) 需要在通过 Thrift 删除时使用时间戳,但是当我指定 ts 字段时,除了现有记录之外,我只看到一条空白记录。

4

2 回答 2

0

pyaccumulo 中应该有一个 delete_rows 方法。

def delete_rows(self, table, srow, erow):
    self.client.deleteRows(self.login, table, srow, erow)

你可以像这样使用它:

conn.delete_rows(table, srow, erow)
于 2015-02-07T00:23:28.273 回答
0

我对 Pyaccumulo 不是很熟悉,但我可以告诉你 RowDeletingIterator 不使用正常的删除条目。它只是使用具有空列族、限定符和可见性的键以及 DEL_ROW 值来指示应删除整行。我会尝试不设置 is_delete=True 并为条目提供 DEL_ROW 的值,看看是否符合您的要求。

于 2013-12-13T00:12:51.810 回答