剛剛五一節,差點忘了還有個博客需要更新,趕緊上來碼點字。
開工把!!!
環境: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的幾種寫入方式。
關注我把: