This example shows how Accumulo internals handle removing a key-value pair
$ /path/to/accumulo shell -u username -p secret
username@instance> createnamespace examples
username@instance> createtable examples.deleteKeyValuePair
username@instance examples.deleteKeyValuePair> insert 567890 name first Joe
username@instance examples.deleteKeyValuePair> insert 567890 name last Smith
username@instance examples.deleteKeyValuePair> insert 567890 address city Columbia
username@instance examples.deleteKeyValuePair> scan
567890 address:city [] Columbia
567890 name:first [] Joe
567890 name:last [] Smith
username@instance examples.deleteKeyValuePair> flush -w
2019-04-18 11:01:47,444 [shell.Shell] INFO : Flush of table deleteKeyValuePair completed.
Get the examples.deleteKeyValuePair table id.
username@instance examples.deleteKeyValuePair> tables -l
accumulo.metadata => !0
accumulo.replication => +rep
accumulo.root => +r
deleteKeyValuePair => 1t
Scan accumulo.metadata table to see the list of RFiles Accumulo is currently using.
username@instance examples.deleteKeyValuePair> scan -t accumulo.metadata -c file -r 1t<
1t< file:hdfs://localhost:8020/accumulo/tables/1t/default_tablet/F00007em.rf
View the contents of RFile and verify each key-value pair's deletion flag is false.
$ /path/to/accumulo rfile-info -d hdfs://localhost/accumulo/tables/1t/default_tablet/F00007em.rf
RFile Version : 8
Locality group : <DEFAULT>
Num blocks : 1
Index level 0 : 37 bytes 1 blocks
First key : 567890 address:city [] 1555418057811 false
Last key : 567890 name:last [] 1555418063052 false
Num entries : 3
Column families : [address, name]
Meta block : BCFile.index
Raw size : 4 bytes
Compressed size : 12 bytes
Compression type : gz
Meta block : RFile.index
Raw size : 141 bytes
Compressed size : 97 bytes
Compression type : gz
567890 address:city [] 1618581304723 false -> Columbia
567890 name:first [] 1618581291527 false -> Joe
567890 name:last [] 1618581297272 false -> Smith
Delete a key-value pair and view a newly created RFile to verify the deletion flag is true.
$ /path/to/accumulo shell -u username -p secret
username@instance> table examples.deleteKeyValuePair
username@instance examples.deleteKeyValuePair> delete 567890 name first
username@instance examples.deleteKeyValuePair> flush -w
username@instance examples.deleteKeyValuePair> scan -t accumulo.metadata -c file -r 1t<
1t< file:hdfs://localhost:8020/accumulo/tables/1t/default_tablet/F00007em.rf
1t< file:hdfs://localhost:8020/accumulo/tables/1t/default_tablet/F00007fq.rf
$ /path/to/accumulo rfile-info -d hdfs://localhost/accumulo/tables/1t/default_tablet/F00007fq.rf
RFile Version : 8
Locality group : <DEFAULT>
Num blocks : 1
Index level 0 : 38 bytes 1 blocks
First key : 567890 name:first [] 1555419184531 true
Last key : 567890 name:first [] 1555419184531 true
Num entries : 1
Column families : [name]
Meta block : BCFile.index
Raw size : 4 bytes
Compressed size : 12 bytes
Compression type : gz
Meta block : RFile.index
Raw size : 121 bytes
Compressed size : 68 bytes
Compression type : gz
567890 name:first [] 1618581499491 true ->
Compact the RFiles and verify the key-value pair was removed. The new RFile will start with 'A'.
$ /path/to/accumulo shell -u username -p secret
username@instance> compact -t examples.deleteKeyValuePair -w
2019-04-17 08:17:15,468 [shell.Shell] INFO : Compacting table ...
2019-04-17 08:17:16,143 [shell.Shell] INFO : Compaction of table examples.deleteKeyValuePair
completed for given range
username@instance> scan -t accumulo.metadata -c file -r 1t<
lt< file:hdfs://localhost:8020/accumulo/tables/1t/default_tablet/A00007g1.rf
$ /path/to/accumulo rfile-info -v hdfs://localhost/accumulo/tables/1t/default_tablet/A00007g1.rf
RFile Version : 8
Locality group : <DEFAULT>
Num blocks : 1
Index level 0 : 37 bytes 1 blocks
First key : 567890 address:city [] 1555418057811 false
Last key : 567890 name:last [] 1555418063052 false
Num entries : 2
Column families : [address, name]
Meta block : BCFile.index
Raw size : 4 bytes
Compressed size : 12 bytes
Compression type : gz
Meta block : RFile.index
Raw size : 141 bytes
Compressed size : 96 bytes
Compression type : gz
Locality Group: <DEFAULT>
Visibility Number of keys Percent of keys Number of blocks Percent of blocks
2 100.00% 1 100.00%
Number of keys: 2