Skip to content

[Volume 2][Chapter 06] Q&A #22

@KKambi

Description

@KKambi

Parquet (파케이)

제목 없음
컬럼 방식으로 저장하는 데이터 파일

  • 압축 효율 증가
  • 컬럼별로 유리한 인코딩 사용 가능
  • 필요한 컬럼의 데이터만 조회하기 쉬움
  • 쿼리할 때 개연성이 없는 데이터를 신속하게 건너뛸 수 있음

★대신 데이터 추가 시 불리함 (행 기반은 그냥 추가하면 되는데)


Star schema (별 모양의 스키마)

제목 없음

중심이 되는 팩트 테이블과 연결된 차원 테이블들이 존재한다.

  • 정규화 X (중복 O)
  • 팩트테이블
    • 사실을 포함하는 수치 정보 (낮은 수준의 데이터)
    • 차원 테이블에 매핑되는 외래 키

핫스팟 해결 - Local Global Aggregation

w
왼쪽처럼 특정 집계 서비스에 데이터가 편향될 수 있다. 책에서는 스케일 아웃으로 대처했다.

  • Local-Global Agg는 집계 노드로 보내기 전, 미니 배치에서 사전 집계를 수행하는 방법
  • 오른쪽에서 color에 따라 사전 집계를 수행했고, Global Agg에서 편향이 사라졌다.

핫스팟 해결 - Split Distinct Aggregation

w2
위와 같이 color를 group by 조건으로 사용하면서 + id를 distinct로 사용하려면 Local-Global Agg를 사용할 수 없다. id의 cardinality가 높으면 중복이 적어 편향은 여전히 발생한다.


w3
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 color

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions