Slide 12
Slide 12 text
© 2015 - 2024 Nowcast Inc. 12
1. Introduction to Apache Iceberg
● Easy to use のところに対応する機能
● Hive の時代では Partition を用いた pruning を利用するためには、物理的な設定を知っている必要があった
○ あるテーブルに4つの時刻・日付に関するカラムがあるとする
■ event_timestamp / event_year / event_month / event_day
○ Partition は event_year / event_month / event_day の3つで設定されている
■ 以下のようなディレクトリ・パスでデータが保存されているイメージ
■ s3://bucket/log_table/event_year=2024/event_month=07/event_day=08/20240708_HHMM_log.csv.gz
○ このような設定だと、以下のように event_timestamp で filter しても pruning はされない
■ event_timestamp >= DATE_SUB(CURRENT_DATE, INTERVAL 90 DAY)
○ Partition で pruning するには直接 event_year / event_month / event_day を利用する必要がある
● Iceberg での Partition の取り扱いの工夫によりこのような問題は解決された
○ Iceberg の Partition では2つの情報が保持されていて、後者が特によしなにやってくれるらしい
■ 物理的な partition に使うカラム
■ オプショナルな transformation の情報(bucket/truncate/year/month/day)
● → 物理的な設定を知らなくても、直感的にクエリしたら Partition の恩恵を受けられるように!
Key Features of Apache Iceberg - Hidden partitioning
CREATE TABLE logs (
level string,
event_ts
timestamptz,
message string
) PARTITIONED BY (
level,
days(event_ts)
)