HBase 애플리케이션개발은 보통 Java를 이용하겠지만, go 언어를 이용해서 개발해 보려고 한다. 굳이 go를 이용하는 이유는 아직 java에 익숙치 않아서이다.(결국 java를 해야 할 것 같다.)
개발 환경
virtualbox를 이용해서 하둡클러스터를 만들고 그 위에 hbase를 구성했다. hbase 설치문서그대로 구성했으니 참고 한다.
데이터베이스
개발에 사용할 데이터베이스다.
tutorialspoint.com의 데이터베이스 구조를 그대로 사용했다. personal data와 professional data 두 개의 컬럼 패밀리를 가지고 있다. 여기에 name, city, designation, salary 패밀리 정보들을 저장한다.
GoHbase
GoHbase라는 패키지를 찾았다. 아직 알파버전이기는 하지만 충분히 제품수준에서 사용 할 수 있을 것으로 보인다. pure hbase client로 Thrift gateway와 같은 다른 도구의 도움 없이 즉시 hbase에 접근가능한 장점이 있다.
# go run myhbase.go
4
1 : personal data city seoul
1 : personal data name yundream
1 : professional data designation manager
1 : professional data salary 50000
4
2 : personal data city pusan
2 : personal data name sangbae
2 : professional data designation programer
2 : professional data salary 50000
Contents
Go 언어를 이용한 HBase 애플리케이션 개발
개발 환경
데이터베이스
GoHbase
package main import ( "context" "fmt" "github.com/tsuna/gohbase" "github.com/tsuna/gohbase/hrpc" ) func main() { client := gohbase.NewClient("hadoop01,hadoop02,hadoop03") values := map[string]map[string][]byte{ "personal data": map[string][]byte{"city": []byte("pusan"), "name": []byte("sangbae")}, "professional data": map[string][]byte{"designation": []byte("programer"), "salary": []byte("50000")}, } putRequest, err := hrpc.NewPutStr(context.Background(), "emps", "2", values) if err != nil { panic(err) } _, err = client.Put(putRequest) if err != nil { panic(err) } getRequest, err := hrpc.NewGetStr(context.Background(), "emps", "1") if err != nil { panic(err) } getRsp, err := client.Get(getRequest) fmt.Println(len(getRsp.Cells)) for _, v := range getRsp.Cells { fmt.Println(string(v.Row), ":", string(v.Family), string(v.Qualifier), string(v.Value)) } getRequest, err = hrpc.NewGetStr(context.Background(), "emps", "2") if err != nil { panic(err) } getRsp, err = client.Get(getRequest) fmt.Println(len(getRsp.Cells)) for _, v := range getRsp.Cells { fmt.Println(string(v.Row), ":", string(v.Family), string(v.Qualifier), string(v.Value)) } }Recent Posts
Archive Posts
Tags