我试图使用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字段时,我只看到一个空白记录现有的。
答案 0 :(得分:0)
我对Pyaccumulo不是很熟悉,但我可以告诉你,RowDeletingIterator不使用正常的删除条目。它只使用具有空列族,限定符和可见性的键以及值DEL_ROW来指示应删除整行。我会尝试不设置is_delete = True并为条目赋予DEL_ROW值,看看是否符合您的要求。
答案 1 :(得分: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)