Spark读取hbase表的几种方式

时间:2024-03-30 15:00:50

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

开工把!!!

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

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

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

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

Spark读取hbase表的几种方式

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

Spark读取hbase表的几种方式

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

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

Spark读取hbase表的几种方式

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

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

Spark读取hbase表的几种方式

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

Spark读取hbase表的几种方式

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

先配置hbase

Spark读取hbase表的几种方式

再转换:

Spark读取hbase表的几种方式

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

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

关注我把:

Spark读取hbase表的几种方式