golang hbase數(shù)據(jù)庫基本操作筆記

HBase是一個面向列的分布式數(shù)據(jù)庫,適合一些需要實時隨機地訪問超大規(guī)模數(shù)據(jù)集的場合瓦盛,hbase可以提供高并發(fā)讀寫操作的支持喉悴。表是由Key-Value組成的,下面主要介紹一下golang下hbase的一些基本操作禀晓。本文用到的庫主要有:

“github.com/tsuna/gohbase”

“github.com/tsuna/gohbase/filter”

“github.com/tsuna/gohbase/hrpc”

1精续、Hbase的連接

var client gohbase.Client

func ConnectHBase() {

???? hbaseUrl := beego.AppConfig.String("hbaseHost")

???? user := beego.AppConfig.String("userName")

???? option := gohbase.EffectiveUser(user)

???? client = gohbase.NewClient(hbaseUrl, option)

}

2,向表中添加數(shù)據(jù)

func PutsByRowkey(table, rowKey string, values map[string]map[string][]byte) (err error) {

???? putRequest, err := hrpc.NewPutStr(context.Background(), table, rowKey, values)

???? if err != nil {

???????? log4go.Error("hrpc.NewPutStr: %s", err.Error())

???? }

???? _, err = client.Put(putRequest)

???? if err != nil {

???????? log4go.Error("hbase clients: %s", err.Error())

???? }

???? return

}

例如在hbase中建表hbase_table

hbase(main):041:0> create 'hbase_table',? {NAME=>'CF1'}, {NAME=>'CF2'}

此表此表中Key為NAME粹懒,有兩個列族CF1和CF2重付,其中CF1和CF2下分別有兩個列name和gender,Chinese和Math

values := map[string]map[string][]byte{

"CF1": map[string][]byte{

"name": []byte("TigerwolfC"),

"gender":[]byte("man")},

"CF2": map[string][]byte{

"Chinese":? []byte("99"),

"Math": []byte("100")}}

PutsByRowkey(table, rowkey, values)

3凫乖,更新表中數(shù)據(jù)

func UpdataHbase(table, rowKey string, values map[string]map[string][]byte) (err error) {

???? putRequest, err := hrpc.NewPutStr(context.Background(), table, rowKey, values)

???? if err != nil {

???????? log4go.Error("hrpc.NewPutStr: %s", err.Error())

???? }

???? res, err := client.Put(putRequest)

???? fmt.Println(res)

???? if err != nil {

???????? log4go.Error("hbase clients: %s", err.Error())

???? }

???? return

}

4确垫、查看數(shù)據(jù)

func Gets(table, rowKey string) (*hrpc.Result, error) {

???? getRequest, err := hrpc.NewGetStr(context.Background(), table, rowKey)

???? if err != nil {

???????? log4go.Error("hrpc.NewGetStr: %s", err.Error())

???? }

???? res, err := client.Get(getRequest)

???? if err != nil {

???????? log4go.Error("hbase clients: %s", err.Error())

???? }

???? defer func() {

???? if errs := recover(); errs != nil {

???????? switch fmt.Sprintf("%v", errs) {

???????????? case "runtime error: index out of range":

???????????????? err = errors.New("NoSuchRowKeyOrQualifierException")

??????????? case "runtime error: invalid memory address or nil pointer dereference":

?????????????? err = errors.New("NoSuchColFamilyException")

?????????? default:

????????????? err = fmt.Errorf("%v", errs)

???????? }

???? }

}()

return res, nil

}

5弓颈、查看rowkey是否存在

func IsExistRowkey(table, rowKey string) bool {

???? getRequest, err := hrpc.NewGetStr(context.Background(), table, rowKey)

???? if err != nil {

???????? log4go.Error("hrpc.NewGetStr: %s", err.Error())

???? }

???? res, err := client.Get(getRequest)

???? if err != nil {

???????? log4go.Error("get from hbase: %s", err.Error())

???? }

???? if len(res.Cells) > 0 {

???????? return true

???? } else {

???????? return false

???? }

}

6,刪除數(shù)據(jù)

func DeleteByRowkey(table, rowkey string, value map[string]map[string][]byte) (err error) {

???? deleteRequest, err := hrpc.NewDelStr(context.Background(), table, rowkey, value)

???? if err != nil {

???????? log4go.Error("hrpc.NewDelStrRef: %s", err.Error())

???? }

??? //fmt.Println("deleteRequest:", deleteRequest)

???? res, err := client.Delete(deleteRequest)

???? fmt.Println(res)

??? if err != nil {

???????? log4go.Error("hrpc.Scan: %s", err.Error())

???? }

???? return

}

按照rowkey刪除整條記錄可以如下操作

DeleteByRowkey(table, rowkey, nil)

如有不對歡迎指正删掀,相互學習翔冀,共同進步。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載披泪,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者纤子。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市款票,隨后出現(xiàn)的幾起案子控硼,更是在濱河造成了極大的恐慌,老刑警劉巖艾少,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卡乾,死亡現(xiàn)場離奇詭異,居然都是意外死亡缚够,警方通過查閱死者的電腦和手機说订,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來潮瓶,“玉大人陶冷,你說我怎么就攤上這事√焊ǎ” “怎么了埂伦?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長思恐。 經(jīng)常有香客問我沾谜,道長,這世上最難降的妖魔是什么胀莹? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任基跑,我火速辦了婚禮,結果婚禮上描焰,老公的妹妹穿的比我還像新娘媳否。我一直安慰自己,他們只是感情好荆秦,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布篱竭。 她就那樣靜靜地躺著,像睡著了一般步绸。 火紅的嫁衣襯著肌膚如雪掺逼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天瓤介,我揣著相機與錄音吕喘,去河邊找鬼赘那。 笑死,一個胖子當著我的面吹牛氯质,可吹牛的內(nèi)容都是我干的漓概。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼病梢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了梁肿?” 一聲冷哼從身側(cè)響起蜓陌,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吩蔑,沒想到半個月后钮热,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡烛芬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年隧期,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赘娄。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡仆潮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出遣臼,到底是詐尸還是另有隱情性置,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布揍堰,位于F島的核電站鹏浅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏屏歹。R本人自食惡果不足惜隐砸,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蝙眶。 院中可真熱鬧季希,春花似錦、人聲如沸幽纷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽霹崎。三九已至珊搀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尾菇,已是汗流浹背境析。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工囚枪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人劳淆。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓链沼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親沛鸵。 傳聞我的和親對象是個殘疾皇子括勺,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 2,696評論 0 3
  • 簡介 HBase是高可靠性,高性能曲掰,面向列疾捍,可伸縮的分布式存儲系統(tǒng),利用HBase技術可在廉價PC Serve...
    九世的貓閱讀 2,192評論 1 6
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,793評論 0 38
  • 新的一年就要到了栏妖,過去乱豆,我從來沒有對自己有什么規(guī)劃,新的一年要來了吊趾,我打算給自己做一份規(guī)劃 1學好專業(yè)課宛裕,爭取獎學...
    0666ed3f60a1閱讀 77評論 2 0
  • TA理論的分析是該書的第二篇,也就是溝通分析论泛,共有六章揩尸。是拜恩博士提出的,他把一個人內(nèi)心的自我狀態(tài)歸結為:父母自我...
    常妙閱讀 507評論 0 0