在HBaseTestingUtility中测试协处理器

时间:2018-03-23 15:27:36

标签: hadoop hbase hbasetestingutility

我已经制作了一个HBase端点协处理器,它基于给定here的示例。我想使用HBaseTestingUtility进行测试,但没有关于加载协处理器的建议似乎可以在此设置中使用。

我通过以下方式启动群集:

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

在线部署建议包括:

  1. 将协处理器jar放在HDFS上并使用HBase shell。
  2. 将属性添加到hbase-site.xml,将协处理器jar放在HBase lib目录中,然后重新启动HBase。
  3. 将协处理器jar放在HDFS上并使用hTableDescriptor.addCoprocessor(...)
  4. 3.听起来像是唯一可行的远程选项,但我必须将Coprocessor jar放在已知位置,并且必须设置本地HDFS集群。我更喜欢能够从我当地的Maven仓库中提取Coprocessor jar并从本地部署它。

    有人可以推荐使用HBaseTestingUtility测试协处理器的最佳方法吗?

1 个答案:

答案 0 :(得分:0)

HTableDescriptoraddCoprocessor(String class) method,它会在类路径中找到协处理器。我的测试类现在看起来像:

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的类。