I have a a filter, "MyCustomFilter" that is similar to the
SingleColumnValueFilter in the sense that I have the toByteArray(),
parseFrom(), and convert() function usage in the same way and also extends
FilterBase.
The filter was originally for an old version of Hbase that used the write
and readFields methods. Despite having the same methods and putting console
output in the parseFrom, toByteArray, and convert functions... running my
code that sets the specific filter, I can see the toByteArray and convert
functions being called 9 times based on the logs.
Then I get the following errors:
java.util.concurrent.TimeoutException
at java.util.concurrent.FutureTask.get(FutureTask.java:201)
at
Mon Feb 16 05:12:16 UTC 2015, null, java.net.SocketTimeoutException:
callTimeout
*Caused by: org.apache.hadoop.hbase.exceptions.DeserializationException:
parseFrom called on base Filter, but should be called on derived type*
at org.apache.hadoop.hbase.filter.Filter.parseFrom(Filter.java:267)
... 12 more
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
I recall that if you see the error in bold, it means your CustomFilter
class does not have a parseFrom method, which I see that no console output
has been written at all that is within my parseFrom function. What is the
problem?