I want to do a hbase scan with filters. For example, my table has column family A,B,C, and A has a column X. Some rows have the column X and some do not. How can I implement the filter to filter out all the rows with column X?
I guess you are looking for SingleColumnValueFilter
in HBase. As mentioned in the API
To prevent the entire row from being emitted if the column is not found on a row, use
setFilterIfMissing(boolean)
on Filter object. Otherwise, if the column is found, the entire row will be emitted only if the value passes. If the value fails, the row will be filtered out.
But SingleColumnValueFilter
would want a value to have Column X "CompareOp" to something, say bring this row if ColumnX == "X"
or
bring this row if ColumnX != "A sentinel value that ColumnX can never take" and setFilterIfMissing(true)
so that if ColumnX has some value, it is returned.
I hope this nudges you in the right direction.
You can use a SkipFilter along with ColumnPrefixFilter. The ColumnPrefixFilter gets keys where the column exists (an HBase row will only have a column if it has a value) the Skip filter will give you the "Not" on the first filter so the row will be omitted
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With