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的幾種寫入方式。

關注我把:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章