Computer Science/데이터베이스(DB)

[Python] HappyBase를 이용한 HBase 접근

깜태 2020. 6. 1. 10:42
728x90

파이썬을 이용해 HBase에 접근하기 위해선 HappyBase 라이브러리가 필요하다.

따라서 이용시엔 첫번째로 HappyBase 라이브러리를 설치를 해야한다.

 

나의 경우는 다수의 이미지를 입출력하는 게 목적이였고,

실행환경은 도커를 구축해 아래의 링크에 따라 설치를 진행하였다.

아래의 사이트에서 설치와 간단한 튜토리얼을 확인할 수 있다.

 

https://hub.docker.com/r/dajobe/hbase

 

Docker Hub

 

hub.docker.com

정상적으로 설치가 되었을경우, 다음의 테스트로 연결을 확인할 수 있다.

import happybase
connection = happybase.Connection('hostname', 9090) #hostname = IP address, port=9090
connection.open()

 

Hbase에 데이터를 넣고 싶은 경우에는 테이블을 생성해야한다.

테이블 생성 시엔 테이블 구조를 적어야 하고, 테이블을 생성하는 명령어는 다음과 같은데,

나는 2개의 테이블을 생성하였다.

connection.create_table('A_imgs', { 'imgs': dict() } )
connection.create_table('B_imgs', { 'imgs': dict() } )
connection.tables()

 

테이블을 생성한 후에는, Hbase의 특성에 맞게 row-key, column family를 만들어 넣어야한다. 

 

나는 Hbase를 처음으로 만지게 되면서 이해가 부족해 column family를 넣기까지 애를 좀 먹었다 ㅜㅜ

 

왜냐하면

 

1. 이미지를 넣을 땐, byte() 구조로 변경해야하고,

 

2.column까지만 접근하면 데이터가 불러와지는 줄 알았는데, 여기서 잘못 이해하고 있었다.

 

나는 row-key, column-family 만 입력하면 데이터가 접근이 끝나는 줄 알았는데, column-family가 key-value 구조로 되어있다.

 

다시 말하면, HBase에선 row-key,{key:value} 값까지 들어갔을 때 매칭되는 값이 리턴된다.

 

아무튼, 데이터를 입력하고 싶을 때 데이터를 입력하는 방법은 다음과 같다.

 

for filename in folder_A:
    img = cv2.imread(filename, cv2.IMREAD_COLOR)
    img = img.tobytes()
    table.put('A_imgs', 'cf:col1': img)

for filename in folder_B:
    img = cv2.imread(filename, cv2.IMREAD_COLOR)
    img = img.tobytes()    
    table.put('B_imgs', 'cf:col1': img)

 

그리고, 다시 HBase에 들어간 데이터를 불러와, 이미지가 잘 들어갔는지 확인.

 

 

 

테이블 제거는 table에서 지원하는 메소드를 보면 delete_table이 있는데,

 

connection.delete_table(name) 명령어를 입력하면 된다.

 

 

 

참고링크

https://happybase.readthedocs.io/en/latest/

 

HappyBase — HappyBase 1.2.0 documentation

HappyBase is a developer-friendly Python library to interact with Apache HBase. HappyBase is designed for use in standard HBase setups, and offers application developers a Pythonic API to interact with HBase. Below the surface, HappyBase uses the Python Th

happybase.readthedocs.io

https://happybase.readthedocs.io/en/happybase-0.4/tutorial.html

 

Tutorial — HappyBase 0.4 documentation

Tutorial This tutorial explores the HappyBase API and should provide you with enough information to get you started. Note that this tutorial is intended as an introduction to HappyBase, not to HBase in general. Readers should already have a basic understan

happybase.readthedocs.io

 

728x90