HBase 통합
HBase 통합 (HBase Integration)
Hive와 HBase를 연동해 HBase에 저장된 데이터를 Hive 테이블로 다루는 방법을 설명하는 문서예요. HBase StorageHandler를 사용하면 Hive SQL로 HBase 테이블을 만들고 읽고 쓸 수 있습니다.
출처: 문서
본문
이 문서는 HBase와 Hive의 통합 방법을 설명합니다. Hive의 HBase StorageHandler를 이용하면 기존 HBase 테이블을 Hive 테이블로 매핑하거나, Hive에서 HBase 테이블을 직접 생성할 수 있습니다.
HBase 테이블을 매핑한 Hive 테이블 만들기:
CREATE TABLE hbase_table_1
(key int, value string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "xyz");
hbase.columns.mapping— Hive 컬럼과 HBase 컬럼 패밀리·퀄리파이어의 매핑을 정의합니다.hbase.table.name— 이 테이블이 대응하는 실제 HBase 테이블 이름 (지정하지 않으면 Hive 테이블 이름 사용).:key는 HBase의 row key입니다.
기존 HBase 테이블을 읽기만 하는 경우:
CREATE EXTERNAL TABLE hbase_ext (key int, value string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "existing_hbase_table");
외부 테이블(EXTERNAL)로 만들면 Hive에서 테이블을 지워도 HBase 데이터는 남습니다.
Hive에서 HBase 테이블에 데이터 입력:
INSERT OVERWRITE TABLE hbase_table_1 SELECT ... FROM ...;
연동 설정:
HBase에 접근하려면 hbase.zookeeper.quorum 등 ZooKeeper/HBase 연결 설정이 필요하며, Hive 클래스패스에 HBase jar가 포함되어야 합니다.
Hive에서 HBase로 / HBase에서 Hive로의 형태:
Hive 테이블과 HBase 테이블 사이의 일대일 매핑을 통해, Hive SQL로 HBase의 실시간 데이터에 접근하는 것이 핵심입니다.
참고 사항:
- Hive와 HBase의 버전 호환성을 확인해야 합니다 (사용 중인 Hive 버전에 맞는 HBase 버전 선택).
- 매핑 정의는 정확해야 하며, 모든 컬럼이 올바르게 매핑되어야 합니다.
- HBase에 이미 데이터가 있다면
EXTERNAL테이블로 매핑하는 것이 안전합니다.
더 알아보기 (Learn more)
- StorageHandler — Hive 저장 핸들러 개요.
- LanguageManual DDL — 테이블 생성 구문.