我已经根据给定的示例here制作了HBase端点协处理器。我想使用HBaseTestingUtility对其进行测试,但是没有加载协处理器的建议似乎可以在此设置中正常工作。
我通过以下方式启动集群:
HBaseTestingUtility hbaseUtility = new HBaseTestingUtility();
hbaseUtility.startMiniCluster();
hbaseUtility.createTable(TableName.valueOf("test"), "a");
在线部署建议包括:
hbase-site.xml
添加属性,将协处理器jar放在HBase lib目录中,然后重新启动HBase。 hTableDescriptor.addCoprocessor(...)
。 3.
听起来像是唯一可行的远程选择,但我必须将协处理器jar放在一个已知的位置,并且必须设置一个本地HDFS集群。我非常希望能够从本地Maven存储库中提取协处理器jar并从本地位置进行部署。谁能推荐使用HBaseTestingUtility测试协处理器的最佳方法?
最佳答案
HTableDescriptor
有一个 addCoprocessor(String class)
method,它将在类路径上找到协处理器。我的测试类(class)现在看起来像:
HBaseTestingUtility hbaseUtility = new HBaseTestingUtility();
hbaseUtility.startMiniCluster();
TableName table = TableName.valueOf("test");
hbaseUtility.createTable(table , "a");
hBaseAdmin.disableTable(table);
HTableDescriptor hTableDescriptor = new HTableDescriptor(table);
hTableDescriptor.addCoprocessor("uk.co.hadoopathome.hbase.coprocessor.SumEndpoint");
HColumnDescriptor colFam = new HColumnDescriptor("a");
hTableDescriptor.addFamily(colFam);
hBaseAdmin.modifyTable(table, hTableDescriptor);
hBaseAdmin.enableTable(table);
其中
SumEndpoint
类是实现Coprocessor
的类。