| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| # Apache Accumulo Key-Value Pair Removal Example |
| |
| 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 |
| |
| ``` |