-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Parquet (파케이)
- 압축 효율 증가
- 컬럼별로 유리한 인코딩 사용 가능
- 필요한 컬럼의 데이터만 조회하기 쉬움
- 쿼리할 때 개연성이 없는 데이터를 신속하게 건너뛸 수 있음
★대신 데이터 추가 시 불리함 (행 기반은 그냥 추가하면 되는데)
Star schema (별 모양의 스키마)
중심이 되는 팩트 테이블과 연결된 차원 테이블들이 존재한다.
- 정규화 X (중복 O)
- 팩트테이블
- 사실을 포함하는 수치 정보 (낮은 수준의 데이터)
- 차원 테이블에 매핑되는 외래 키
핫스팟 해결 - Local Global Aggregation
왼쪽처럼 특정 집계 서비스에 데이터가 편향될 수 있다. 책에서는 스케일 아웃으로 대처했다.
- Local-Global Agg는 집계 노드로 보내기 전, 미니 배치에서 사전 집계를 수행하는 방법
- 오른쪽에서
color에 따라 사전 집계를 수행했고, Global Agg에서 편향이 사라졌다.
핫스팟 해결 - Split Distinct Aggregation
위와 같이 color를 group by 조건으로 사용하면서 + id를 distinct로 사용하려면 Local-Global Agg를 사용할 수 없다. id의 cardinality가 높으면 중복이 적어 편향은 여전히 발생한다.
Split Distinct는 각 미니 배치에서 사전 집계를 수행하지 않는다. 대신 id를 n개의 그룹으로 나눈다.
아래 슈도 코드를 보면 해쉬코드로 4개의 그룹으로 분할했다.
# Apache Flink SQL
SELECT color, SUM(cnt)
FROM (
SELECT color, COUNT(DISTINCT id) as cnt
FROM T
GROUP BY color, MOD(HASH_CODE(id), 4)
)
GROUP BY colorMetadata
Metadata
Assignees
Labels
No labels




