2013-12-12 30 views
0

我想使用RowDeletingIterator刪除一行。我正在運行Accumulo 1.5.0。這裏是我的東西使用Pyaccumulo在Accumulo中刪除一行

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

我對Pyaccumulo不是很熟悉,但我可以告訴你RowDeletingIterator不使用正常的刪除條目。它只是使用具有空列專列,限定符和可見性的鍵和DEL_ROW值來指示應刪除整行。我會嘗試不設置is_delete = True,並給該條目的值DEL_ROW,看看是否你想要的。

+0

設置的值'DEL_ROW'似乎不工作,我只是風與CF = ROW_ID和Val = DEL_ROW的記錄。 –

+0

您是否意味着所得條目的列族是您在突變中設置的行ID? – billie

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)