HBase筛选器-如何在HBase服务器端动态上载筛选器
我使用HBase 0.94.20。我找不到如何使自定义HBase筛选器在HBase服务器端可用并执行。通过阅读,我了解到现在不必手动复制包含HBase服务器端过滤器的jar就可以完成这项工作。但是经过几个小时的谷歌搜索和测试,我没有找到如何将这个自定义过滤器从我的java代码发送到HBase服务器端 我在HBase日志中不断出现错误:HBase筛选器-如何在HBase服务器端动态上载筛选器,hbase,Hbase,我使用HBase 0.94.20。我找不到如何使自定义HBase筛选器在HBase服务器端可用并执行。通过阅读,我了解到现在不必手动复制包含HBase服务器端过滤器的jar就可以完成这项工作。但是经过几个小时的谷歌搜索和测试,我没有找到如何将这个自定义过滤器从我的java代码发送到HBase服务器端 我在HBase日志中不断出现错误: java.lang.RuntimeException: Can't find class com.company.MyHBaseFilter at org.apa
java.lang.RuntimeException: Can't find class com.company.MyHBaseFilter
at org.apache.hadoop.hbase.util.Classes.createWritableForName(Classes.java:121)
at org.apache.hadoop.hbase.client.Scan.readFields(Scan.java:642)
at org.apache.hadoop.hbase.io.HbaseObjectWritable.readObject(HbaseObjectWritable.java:693)
简单来说,这里是基本代码。我应该添加什么才能使MyHBaseFilter中的逻辑在服务器端执行?(注意:MyHBaseFilter扩展了FilterBase)
谢谢假设hbase配置为分布式模式,并在HDFS上运行:
- 检查您的hbase conf:$hbase_HOME/conf/hbase-site.xml并找出您的hbase数据的根目录(hbase.rootdir的值)
- 并使用hadoop cmd将自定义过滤器jar放在${hbase.rootdir}/lib下,这是hbase.use.dynamic.jars的默认位置
Filter filter = new MyHBaseFilter(some_args);
scan.setFilter(filter);
ResultScanner rs = table.getScanner(scan);