최근 사내 Kylin 저장소를 이전하며 Kylin 큐브 구조를 전반적으로 재구성하였다.
그 이후 Kylin 조회 성능이 많이 향상된 것이 체감된다.
(물론 여기엔 새로운 저장소의 저장공간이 넉넉한 것도 영향을 줬다.)
…
나는 최근 들어온 요구사항에 맞춰서 Kylin Cube를 새로 생성하는 일을 하고 있다.
Kylin은 기존 큐브에 존재하지 않는 Dimension을 추가해서 조회할 수 없고, 큐브를 새로 생성해야 한다. 슬프다.
그러면서 Kylin 큐브 생성시 어떤 설정들이 조회 성능과 큐브의 용량에 영향을 주는지 배우고 있다.
…
Kylin의 아래 내용을 글로 쓸 예정인데, 이 포스팅에서는 '1. 데이터 모델 생성' ← 이 부분을 정리했다.
- 데이터 모델 생성
- 데이터 큐브 생성
- 데이터 큐브 빌드
- 데이터 큐브 최적화
사내 저장소를 캡쳐할 수 없으므로 Kylin 공식 웹사이트 가이드를 참고했다.
이 포스팅에서는 데이터 모델을 생성하는 방법 외에 특별한 내용은 없기에 가이드 문서 정도라고 생각하면 된다.
시간 관계상 큐브 생성, 최적화 관련된 내용은 다음에 다루도록 한다. :')
그래도 한글 문서가 거의 없는 키린 레퍼런스 생태계에 작은 도움이 되길 바란다.
Data Model이란?
wiki에서는 일반적인 데이터 모델을 아래와 같이 정의한다.
데이터 모델은 데이터의 관계, 접근과 그 흐름에 필요한 처리 과정에 관한 추상화된 모형이다.
kylin 공식 문서에서는 데이터 모델을 아래와 같이 정의한다.
데이터 요소를 구성하고 데이터 요소가 서로 관련되는 방식을 표준화한 모델
Kylin의 데이터 모델에서는 아래와 같은 요소들을 정의한다.
- 팩트 테이블 선택
- Dimension & Measure 정의
- 그 외 설정들
- Partition Date & Time Column (중요)
- Cube Size & Filter ..
Data Model 생성하기
데이터 모델을 생성하기 전에 우선 데이터를 가져올 Hive Table을 정의하고 동기화 해주는 작업을 거쳐야 한다.
하이브 테이블 동기화
Data Source
탭에서Load Hive Table
버튼을 눌러서 하이브 테이블을 동기화
- 하이브 테이블 이름을 입력 후 (쉼표로 구별)
Sync
클릭
- 성공하면 왼쪽
Table
섹션에 테이블이 추가된 것을 확인할 수 있음
- 백그라운드에서 Kylin이 MapReduce 작업을 실행하여 새로 동기화 된 테이블의 대략적인 카디널리티를 계산함. 작업이 끝나면 카디널리티가 테이블 정보에 표시 됨
데이터 모델 생성
큐브를 생성하기 전에 데이터 모델을 정의해야 함. 하나의 데이터 모델은 스타 스키마를 정의하며, 여러 큐브에서 재사용할 수 있음
1.Model
메뉴 표시 줄에서 New Model
클릭
- 모델 이름 및 설명 입력
Data Model
탭에서Fact Table
선택
3.1 (옵션) 룩업 테이블을 추가하길 원한다면 Add Lookup Table
클릭. 테이블 이름 및 조인 유형 (inner, left ..) 선택
3.2 (옵션) New Join Condition
버튼을 클릭하고 왼쪽 팩트 테이블의 FK 컬럼을 선택한 다음, 오른쪽 룩업 테이블의 PK 컬럼을 선택.
3.3 OK
클릭, 윗 단계를 반복해서 룩업 테이블을 추가한다. 전부 끝나면 Next
클릭
Dimensions
탭은 하위 큐브에서 'Dimension'으로 사용할 컬럼을 선택함
Column
표의 셀을 클릭하고, 드롭 다운 목록에서 컬럼을 선택함.
Measure
탭에서는 measure & metrics 으로 사용될 컬럼을 선택함. Measure 컬럼은 팩트 테이블에 있는 컬럼에서만 선택할 수 있다.
Settings
탭 -Partition Date Column
: 만약 팩트 테이블의 데이터가 하루마다 증가하는 경우, 해당하는 날짜의 date format 컬럼을 설정. 아니라면 빈칸으로 내버려 둠.
(예를 들어 Hive에 데이터가 일별로 'yyyyMMdd' 포맷으로 저장한다면 반드시 'yyyyMMdd' 포맷을 선택해야 한다. 안 그러면 하이브 풀스캔해서..폭망)
- (옵션) 큐브의 크기를 나타내는
Cube Size
를 선택할 수 있다. (기본값 : Medium) - (옵션)
Filter
에서 제외하고 싶은 데이터를 지정할 수 있다. (ex : dirty data)
- 모델 생성이 완료되면 오른쪽의
Models
리스트에서 생성한 모델을 확인할 수 있다.
끝! 다음 장에서는 큐브 생성 및 빌드 과정을 정리해 볼 예정이다.
댓글 영역