在hbasetestingutility中测试协处理器

4dbbbstv  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(266)

我制作了一个hbase端点协处理器,这个协处理器紧密地基于这里给出的示例。我想使用hbasetestinguility来测试它,但是没有关于加载协处理器的建议,似乎它们在这个设置中可以工作。
我通过以下方式启动群集:

HBaseTestingUtility hbaseUtility = new HBaseTestingUtility();
hbaseUtility.startMiniCluster();
hbaseUtility.createTable(TableName.valueOf("test"), "a");

在线部署建议包括:
将协处理器jar放在hdfs上并使用hbase shell。
将属性添加到 hbase-site.xml ,将协处理器jar放置在hbase lib dir中,然后重新启动hbase。
将协处理器jar放在hdfs上并使用 hTableDescriptor.addCoprocessor(...) . 3. 听起来是唯一远程可行的选择,但我必须将协处理器jar放在已知的位置,并且必须设置本地hdfs集群。我更希望能够从本地maven repo拉入协处理器jar,并从本地位置部署它。
有人能推荐使用hbasetestinguility测试协处理器的最佳方法吗?

ntjbwcob

ntjbwcob1#

HTableDescriptor 有一个 addCoprocessor(String 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 .

相关问题