最近工作需要使用到Spark操作Hbase,上篇文章已经写了如何使用Spark读写Hbase全量表的数据做处理,但这次有所不同,这次的需求是Scan特定的Hbase的数据然后转换成RDD做后续处理,简单的使用Google查询了一下,发现实现方式还是比较简单的,用的还是Hbase的TableInputFormat相关的API。
基础软件版本如下:
直接上代码如下:
上面的少量代码,已经完整实现了使用spark查询hbase特定的数据,然后统计出数量最后输出,当然上面只是一个简单的例子,重要的是能把hbase数据转换成RDD,只要转成RDD我们后面就能进行非常多的过滤操作。
注意上面的hbase版本比较新,如果是比较旧的hbase,如果自定义下面的方法将scan对象给转成字符串,代码如下:
最后,还有一点,上面的代码是直接自己new了一个scan对象进行组装,当然我们还可以不自己new对象,全部使用TableInputFormat下面的相关的常量,并赋值,最后执行的时候TableInputFormat会自动帮我们组装scan对象这一点通过看TableInputFormat的源码就能明白:
上面代码中的常量,都可以conf.set的时候进行赋值,最后任务运行的时候会自动转换成scan,有兴趣的朋友可以自己尝试。