关于AggregationClient 除了rowCount以外的其他聚合函数抛空指针异常的解释

今天测试使用AggregationClient来统计最大最小年龄,结果返回空指针异常,然后我执行了一下rowCount聚合函数,是可以正确返回行数的,因此可以判断coprocessor设置是成功的。

经过一番折腾后发现,原来在hbase shell里put进去的年龄变成了字符串。。。。我是这么写的:put 'member2','row-1','info:age',20 。因为我突然发现我在shell控制台scan表时可以直接看到age的值!!!如果是数字类型的话,在shell控制台上显示的应该是16进制的字符串。

于是我改用API的形式put了一些测试数据数据进去,采用Bytes.toBytes(25L)的形式设置age的值。然后我重新scan了一下表,现在看到的是16进制值了。

然后我重新执行了一下聚合函数min,max,可以正常返回最大年龄和最小年龄了。。

记录一下避免再犯错。

相关文章

适配器模式将一个类的接口转换成客户期望的另一个接口,使得原本接口不兼容的类可以相互合作。
策略模式定义了一系列算法族,并封装在类中,它们之间可以互相替换,此模式让算法的变化独立于使用算法...
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,它是针对软件开发中经常遇到的一些设计问题...
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,使得子类可以在不改变算法结...
迭代器模式提供了一种方法,用于遍历集合对象中的元素,而又不暴露其内部的细节。
外观模式又叫门面模式,它提供了一个统一的(高层)接口,用来访问子系统中的一群接口,使得子系统更容...