Spark读取hbase表的几种方式

刚刚五一节,差点忘了还有个博客需要更新,赶紧上来码点字。

开工把!!!

环境:hadoop3.0+Spark2.2+hbase1.2+phoenix4.12

基本上是都是比较新的环境,而且也比较稳定。但是hbase相对来说有点老了,但也还好。这个版本的hbase1.2还没有提供spark直接访问的api,我在github上面看到新版的提供了,但是没安装成功(:-),于是将就了。

在spark中读取hbase大致有5种模式,

1,最简单的phoenix sql读取。和jdbc读取mysql一样:


2.phoenix sql读取改进版,可以动态获取列名,不用手动指定列了。


以上两种读出的数据都是存入List中,可以直接使用,也可以把List转成spark的RDD或者Dataset.

3.使用hbase api,即get\scan操作,速度比较快,但是和spark没什么关系了,需要手动转换。


4.使用spark jdbc驱动的方式读取:

注意下面的变量spark表示SparkSession spark =SparkSession.builder()..master()..config("..","..")..getOrCreate();

5.和上面一个差不多,性能都一般,但是代码简洁。

6. 把hbase转成RDD,代码有点多,分为两部分,都是一个方法内的代码:

先配置hbase


再转换:


这种的话也很快,但是要求对hbase的逻辑结构比较清除才能正确的转换过来,当然还可以改进成可以动态配置schema的形式,比如说通过phoenix直接读取整个schema或者将schema写成这种形式:String str="cf1:name:sex|cf2:adress:age",然后自己再组装schema,这个后面再讲。

好的,大概就有这6种读取方式,后面有空准备来总结一下hbase的几种写入方式。

关注我把:


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值