如何进行聚合&存储过程就像HBase表中的逻辑一样?

时间:2013-08-30 11:12:58

标签: hbase

我是HBase的新手。我已经安装它并使用其基本的JAVA API进行CRUD操作。我的Hbase表有唯一的列限定符(比如A,B,C,D),它们具有数值,现在我需要过滤那些匹配某些公式的行,如A * B> = C(这里可能有更复杂的条件) )然后我需要获取结果集的列限定符D的值的总和。

我怎么能这样做HBase? 简而言之,如何在NoSQL HBase中执行存储过程类型逻辑?

谢谢, 贝

1 个答案:

答案 0 :(得分:1)

您可以使用HBase Coprocessors。具体而言,Endpoint协处理器。您可以将其视为SQL DB中的存储过程。为了使用端点协处理器,您需要在服务器端构建和安装它,然后通过HBase RPC调用它。

要构建和使用端点协处理器,您需要:

  • 有一个扩展了CoprocessorProtocol的新协议接口。
  • 实施端点接口。该实现将加载到区域上下文中并从中执行。
  • 扩展抽象类BaseEndpointCoprocessor。这个便利类隐藏了实现者无需关心的一些内部细节,例如协处理器框架类加载。
  • 在客户端,可以通过两个新的HBase客户端API调用端点:

    针对单个区域执行:

    HTableInterface.coprocessorProxy(类协议,byte []行)

    执行一系列区域

    HTableInterface.coprocessorExec(类协议,byte [] startKey,byte [] endKey,Batch.Call可调用)

有关详细信息,请参阅上面指定的链接。

HTH