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