日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Spark读写Hbase的二种方式对比

發(fā)布時(shí)間:2024/1/17 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark读写Hbase的二种方式对比 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者:Syn良子 出處:http://www.cnblogs.com/cssdongl 轉(zhuǎn)載請(qǐng)注明出處

一.傳統(tǒng)方式

這種方式就是常用的TableInputFormat和TableOutputFormat來(lái)讀寫(xiě)hbase,如下代碼所示

簡(jiǎn)單解釋下,用sc.newAPIHadoopRDD根據(jù)conf中配置好的scan來(lái)從Hbase的數(shù)據(jù)列族中讀取包含(ImmutableBytesWritable, Result)的RDD,

隨后取出rowkey和value的鍵值對(duì)兒利用StatCounter進(jìn)行一些最大最小值的計(jì)算最終寫(xiě)入hbase的統(tǒng)計(jì)列族.

二.SparkOnHbase方式

重點(diǎn)介紹第二種方式,這種方式其實(shí)是利用Cloudera-labs開(kāi)源的一個(gè)HbaseContext的工具類來(lái)支持spark用RDD的方式批量讀寫(xiě)hbase,先給個(gè)傳送門大家感受下

https://github.com/cloudera-labs/SparkOnHBase/blob/cdh5-0.0.2/src/main/scala/com/cloudera/spark/hbase/HBaseContext.scala

https://issues.apache.org/jira/browse/HBASE-13992

https://issues.apache.org/jira/browse/HBASE-14160

雖然這個(gè)hbase-spark的module在Hbase上的集成任務(wù)很早就完成了,但是已知發(fā)布的任何版本我還沒(méi)找到該模塊,不知道什么情況,再等等吧

那么問(wèn)題來(lái)了,這種方式的優(yōu)勢(shì)在哪兒呢,官方的解釋我翻譯如下

1>無(wú)縫的使用Hbase connection

2>和Kerberos無(wú)縫集成

3>通過(guò)get或者scan直接生成rdd

4>利用RDD支持hbase的任何組合操作

5>為通用操作提供簡(jiǎn)單的方法,同時(shí)通過(guò)API允許不受限制的未知高級(jí)操作

6>支持java和scala

7>為spark和 spark streaming提供相似的API

ok,由于hbaseContext是一個(gè)只依賴hadoop,hbase,spark的jar包的工具類,因此可以拿過(guò)來(lái)直接用

廢話不說(shuō),直接用我調(diào)試過(guò)的代碼來(lái)感受下

想用HbaseContext很簡(jiǎn)單,如上面代碼所示,需要說(shuō)明的是hbaseContext的hbaseScanRDD方法,這個(gè)方法返回的是一個(gè) (RowKey, List[(columnFamily, columnQualifier, Value)]類型的RDD,如下 ? ? 剛開(kāi)始用的挺不習(xí)慣的.還得循環(huán)取出來(lái)rowkey對(duì)應(yīng)的這么多列,這里你如果對(duì)它的RDD返回類型不爽,官方很貼心的提供了另外一個(gè)方法 ?

怎么樣,是不是看著很眼熟了?你可以自定義第三個(gè)參數(shù)(ImmutableBytesWritable, Result),對(duì)函數(shù)f進(jìn)行自定義來(lái)返回你自己喜歡的RDD格式,

程序運(yùn)行結(jié)果如下,過(guò)濾出了9:20到9:58所有的rowkey以及對(duì)應(yīng)的列

當(dāng)然HbaseContext還有其他bulkGet,bulkPut,bulkDelete等,都是可以直接將hbase的操作轉(zhuǎn)換成RDD,只要轉(zhuǎn)成RDD了,那么rdd的這么多transform和action就可以玩的很happy了.

參考資料

https://github.com/cloudera-labs/SparkOnHBase

http://blog.cloudera.com/blog/2015/03/how-edmunds-com-used-spark-streaming-to-build-a-near-real-time-dashboard/
https://blog.cloudera.com/blog/2014/12/new-in-cloudera-labs-sparkonhbase/

總結(jié)

以上是生活随笔為你收集整理的Spark读写Hbase的二种方式对比的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。