HBase Filters Examples

Create table and insert some sample records. Save the text as sensors.txt and execute using hbase shell.

create "sensors", "vol", "amp"

put "sensors", "d1-2020-01-02", "vol:1", "1.01"

put "sensors", "d1-2020-01-02", "vol:4", "0.0"

put "sensors", "d1-2020-01-02", "vol:10", "1.02"

put "sensors", "d1-2020-01-02", "vol:24", "1.11"

put "sensors", "d1-2020-01-02", "vol:50", "1.41"

put "sensors", "d1-2020-01-02", "amp:1", "5.01"

put "sensors", "d1-2020-01-02", "amp:4", "6.0"

put "sensors", "d1-2020-01-02", "amp:10", "7.02"

put "sensors", "d1-2020-01-02", "amp:24", "5.11"

put "sensors", "d1-2020-01-02", "amp:50", "3.41"


put "sensors", "d2-2020-01-02", "vol:3", "1.01"

put "sensors", "d2-2020-01-02", "vol:4", "0.0"

put "sensors", "d2-2020-01-02", "vol:12", "1.02"

put "sensors", "d2-2020-01-02", "vol:16", "1.11"

put "sensors", "d2-2020-01-02", "vol:30", "1.41"

put "sensors", "d2-2020-01-02", "amp:3", "5.51"

put "sensors", "d2-2020-01-02", "amp:4", "6.2"

put "sensors", "d2-2020-01-02", "amp:12", "6.02"

put "sensors", "d2-2020-01-02", "amp:16", "3.21"

put "sensors", "d2-2020-01-02", "amp:30", "4.41"


Insert sample records

$ hbase shell < sensors.txt




hbase(main):002:0> scan "sensors", {FILTER => "KeyOnlyFilter()"}

ROW COLUMN+CELL

d1-2020-01-02 column=amp:1, timestamp=1589229099711, value=

d1-2020-01-02 column=amp:10, timestamp=1589229099743, value=

d1-2020-01-02 column=amp:24, timestamp=1589229099761, value=

d1-2020-01-02 column=amp:4, timestamp=1589229099728, value=

d1-2020-01-02 column=amp:50, timestamp=1589229099776, value=

d1-2020-01-02 column=vol:1, timestamp=1589229099579, value=

d1-2020-01-02 column=vol:10, timestamp=1589229099629, value=

d1-2020-01-02 column=vol:24, timestamp=1589229099656, value=

d1-2020-01-02 column=vol:4, timestamp=1589229099595, value=

d1-2020-01-02 column=vol:50, timestamp=1589229099696, value=

d2-2020-01-02 column=amp:12, timestamp=1589229099989, value=

d2-2020-01-02 column=amp:16, timestamp=1589229100004, value=

d2-2020-01-02 column=amp:3, timestamp=1589229099919, value=

d2-2020-01-02 column=amp:30, timestamp=1589229100019, value=

d2-2020-01-02 column=amp:4, timestamp=1589229099974, value=

d2-2020-01-02 column=vol:12, timestamp=1589229099859, value=

d2-2020-01-02 column=vol:16, timestamp=1589229099874, value=

d2-2020-01-02 column=vol:3, timestamp=1589229099793, value=

d2-2020-01-02 column=vol:30, timestamp=1589229099900, value=

d2-2020-01-02 column=vol:4, timestamp=1589229099810, value=

2 row(s)



hbase(main):006:0> scan "sensors", {FILTER => "(KeyOnlyFilter() AND PrefixFilter('d2'))"}

ROW COLUMN+CELL

d2-2020-01-02 column=amp:12, timestamp=1589229099989, value=

d2-2020-01-02 column=amp:16, timestamp=1589229100004, value=

d2-2020-01-02 column=amp:3, timestamp=1589229099919, value=

d2-2020-01-02 column=amp:30, timestamp=1589229100019, value=

d2-2020-01-02 column=amp:4, timestamp=1589229099974, value=

d2-2020-01-02 column=vol:12, timestamp=1589229099859, value=

d2-2020-01-02 column=vol:16, timestamp=1589229099874, value=

d2-2020-01-02 column=vol:3, timestamp=1589229099793, value=

d2-2020-01-02 column=vol:30, timestamp=1589229099900, value=

d2-2020-01-02 column=vol:4, timestamp=1589229099810, value=

1 row(s)







hbase(main):009:0> scan "sensors", {FILTER => "(KeyOnlyFilter() AND PrefixFilter('d2') AND ColumnCountGetFilter(1))"}

ROW COLUMN+CELL

d2-2020-01-02 column=amp:12, timestamp=1589229099989, value=

1 row(s)

Took 0.0154 seconds

hbase(main):010:0> scan "sensors", {FILTER => "(KeyOnlyFilter() AND PrefixFilter('d2') AND ColumnCountGetFilter(2))"}

ROW COLUMN+CELL

d2-2020-01-02 column=amp:12, timestamp=1589229099989, value=

d2-2020-01-02 column=amp:16, timestamp=1589229100004, value=

1 row(s)

Took 0.0112 seconds

hbase(main):011:0> scan "sensors", {FILTER => "(KeyOnlyFilter() AND PrefixFilter('d2') AND ColumnCountGetFilter(3))"}

ROW COLUMN+CELL

d2-2020-01-02 column=amp:12, timestamp=1589229099989, value=

d2-2020-01-02 column=amp:16, timestamp=1589229100004, value=

d2-2020-01-02 column=amp:3, timestamp=1589229099919, value=

1 row(s)






TTL Behaviour

create 'session_id', {'NAME' => 'cf1','TTL' => 30} # 30 sec

put 'session_id','row123','cf1:desc', 'TTL Demo' # Create new record

get 'session_id','row123','cf1:desc' # try to get record after 30. it should be gone

scan 'test_table', {RAW => true} # HBase keeps it HFile

flush 'test_table' # Hbase remove the record after major compaction

compact 'test_table'