刚刚五一节,差点忘了还有个博客需要更新,赶紧上来码点字。
开工把!!!
环境: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的几种写入方式。
关注我把:

本文介绍了在Hadoop3.0+Spark2.2环境下,HBase1.2与Phoenix4.12集成使用的方法,并详细探讨了六种从Spark读取HBase数据的方式,包括Phoenix SQL读取、HBase API使用及RDD转换等。
1252

被折叠的 条评论
为什么被折叠?



