-
[Apache Iceberg] 아이스버그 테이블 최적화 - BLOOM 필터개발지식 아카이브/Data - Iceberg 2025. 2. 4. 20:40
Apache 아이스버그 테이블 최적화 - BLOOM 필터
개념
블룸 필터 => 데이터 집합에 포함되어 있는지 확인하는 데 사용되는 데이터 구조
- 블룸 필터란?
- 특정 값이 데이터 파일에 포함되어 있는지 빠르게 확인하기 위한 확률적 데이터 구조.
- "포함되지 않음"은 항상 정확하지만, "포함됨"은 잘못된 결과를 반환할 수 있음(거짓 양성).
- Iceberg에서의 역할:
- 파일 스캔 최적화: 불필요한 파일 스캔을 줄임.
- 쿼리 성능 향상: 특정 컬럼 값이 포함된 파일만 읽도록 제한.
- 활성화:
- 테이블 속성을 통해 특정 컬럼에 블룸 필터 적용 가능.
장점: 쿼리 엔진은 블룸 필터를 활용하여, BLOOM이 0인 데이터 파일을 건너뛰어서, 데이터 파일을 읽는 속도를 더욱 높일 수 있다
단점: 추가적인 메모리와 스토리지가 필요하다
활성화 예시
ALTER TABLE temp.test_compaction SET TBLPROPERTIES ( 'write.parquet.bloom-filter-enabled.column.col1'= true, 'write.parquet.bloom-filter-max-bytes'= 1048576 );
- 컬럼에 따라 적합성 차이:
- 카디널리티가 높은 컬럼(값이 매우 다양한 컬럼)에서는 블룸 필터의 효과가 떨어질 수 있다
- 비트 배열이 포화 상태에 가까워져 거짓 양성이 증가.
- 결과적으로 거의 모든 파일을 다 스캔하게 됨
- 일반적으로 카디널리티가 낮거나 중간 수준의 컬럼에 적합하다
- 카디널리티가 높은 컬럼(값이 매우 다양한 컬럼)에서는 블룸 필터의 효과가 떨어질 수 있다
Reference
이 포스팅은 Apache Iceberg The Definitive Guide 4장의 내용에 기반하여 작성하였습니다.
관련 포스팅 보기
2025.01.16 - [개발지식 아카이브/Data - Iceberg] - [Apache Iceberg] 아이스버그 테이블 최적화 - 스토리지 최적화 편
2025.01.15 - [개발지식 아카이브/Data - Iceberg] - [Apache Iceberg] 아이스버그 테이블 최적화 - 메트릭 수집
2025.01.13 - [개발지식 아카이브/Data - Iceberg] - [Apache Iceberg] 아이스버그 테이블 최적화 - 컴팩션과 정렬
'개발지식 아카이브 > Data - Iceberg' 카테고리의 다른 글
[Apache Iceberg] 아이스버그 테이블 최적화 - 메트릭 수집 (0) 2025.01.22 [Apache Iceberg] 아이스버그 테이블 최적화 - COW와 MOR 설정 (0) 2025.01.20 [Apache Iceberg] 아이스버그 테이블 최적화 - 스토리지 최적화 편 (0) 2025.01.17 [Apache Iceberg] 아이스버그 테이블 최적화 - 파티셔닝 (0) 2025.01.15 [Apache Iceberg] 아이스버그 테이블 최적화 - 컴팩션과 정렬 (0) 2025.01.13 - 블룸 필터란?