Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Iceberg Definitive Guide輪読会 Chapter7&8
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
tanisushi
October 31, 2024
Technology
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Iceberg Definitive Guide輪読会 Chapter7&8
tanisushi
October 31, 2024
More Decks by tanisushi
See All by tanisushi
Iceberg Definitive Guide輪読会 Chapter9
tanisuhi
0
110
Other Decks in Technology
See All in Technology
現場回帰したデータエンジニアが考える AI 時代のキャリア開発 / Career Development in the Age of AI Perspectives from a Hands-on Data Engineer
medley
0
320
dbt と Snowflake と tag
kevinrobot34
1
220
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.3k
属人化を叩き割れ!「制作加速」と「安定化」の矛盾を打破する:8年目プロダクトが辿り着いた「ミスが起こり得ない」アセット制作フローの全貌
gree_tech
PRO
0
460
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
12
85k
Kiro Crew で始める マルチエージェント開発
miu_crescent
PRO
0
180
RelayerというPHPのフレームワークを作った
polidog
PRO
0
140
VLMで2.3万枚のPyCon JP写真を検索!
terapyon
1
470
AI・HPC開発を支えるGPU環境の新しい選択肢 液冷GPUシステム「AquSys」の取り組み
gpuunite_official
0
240
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
AI開発に用いられるHPC技術について
gpuunite_official
0
270
会計事務所と顧問先の契約関係をOIDC・OAuthで表現する
terara
0
120
Featured
See All Featured
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
580
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.4k
Raft: Consensus for Rubyists
vanstee
141
7.6k
We Have a Design System, Now What?
morganepeng
55
8.3k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Color Theory Basics | Prateek | Gurzu
gurzu
0
430
How to train your dragon (web standard)
notwaldorf
97
6.8k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
560
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Transcript
Iceberg Definitive Guide輪読会 chapter7&8 Dremio’s SQL EngineとAWS Glue
本日話すこと 各サービスでのIcebergテーブルの作成と最適化の自動 DremioのGitライクなデータ操作 (DMLでの操作とかあんま楽しくなかったから外してしまった・・・)
アジェンダ カタログのおさらい Dremio’s SQL Engine AWS Glue AWS Athena
まとめ
アジェンダ カタログのおさらい Dremio’s SQL Engine AWS Glue AWS
Athena まとめ
カタログの要件 以下の要件を満たしていればカタログとして成立する • Iceberg Catalogは、テーブルのリスト、作成、削除、存在確認、名前変更などの機能 • 現在のテーブルパスをメタデータファイルのファイルパスにマッピングする機能
カタログがたくさん そのためカタログが世にたくさんある状況 それぞれIcebergではあるのだが機能的な差がある • Polarisカタログ • Hiveカタログ •
Glueカタログ • Nessieカタログ • Hadoopカタログ • RESTカタログ • etc…
マネージドなカタログサービス 今回使用するサービスはどちらもマネージドな カタログサービスある Dremio Arctic Nessieカタログをホスティングしている
NessieカタログがデータをGitライクに管理することを目指しているのでそれに付随した 機能が整っている AWS Glue Catalog AWS Glue Data CatalogをIcebergカタログのメタデータレポシトリとして使用しており サーバーレスで動作する コンパクションの自動設定とかも整ってる
アジェンダ カタログのおさらい Dremio’s SQL Engine AWS Glue AWS
Athena まとめ
Dremio SQL Query Engineとは 分散SQLクエリエンジン Icebergを扱うなら一番速くてコスパ最強を謳っている (細かい検証を行った記事等は見つからなかったため真偽不明)
SonarとArctic Dremio Cloud上ではクエリエンジンSonarと マネージドなIcebergカタログであるArcticが提供されている
DremioでIcebergテーブルを作ってみる Icebergを扱うように作られているので特に指定等なく作れる /* Create a new folder in which
your table will reside */ CREATE FOLDER "Defenitive_Catalog"."my_folder" /* Create a new table */ CREATE TABLE "Defenitive_Catalog"."my_folder"."nyc_trips" ( pickup_datetime TIMESTAMP, passenger_count INT, trip_distance_mi FLOAT, fare_amount FLOAT, tip_amount FLOAT, total_amount FLOAT) /* copy data from S3 bucket */ COPY INTO "Defenitive_Catalog"."my_folder"."nyc_trips" FROM '@Samples/samples.dremio.com/' FILES ('NYC-taxi-trips.csv')
自動コンパクション Dremio cloudのArctic Catalogs上で各テーブルに対して設定が設けられる コンパクションをかける周期やターゲットファイズサイズ等を指定可能
自動VACUUM Dremio cloudのArctic Catalogs上でカタログに対して設定が設けられる テーブル単位で実施したい場合はそういうジョブを作成する必要があるらしい
データをGitライクに扱う Nessieカタログのコンセプトにあるように Dremio SonarではSQLクエリでブランチを切って作業ができる /* これでカタログのメインからブランチが切れる */ CREATE
BRANCH etl_branch IN "Defenitive_Catalog"; /* この場合は特定のコミットからブランチが切れる */ CREATE BRANCH etl_branch AT COMMIT "098a092384fa489283498acdfeffba1411287941"
データをGitライクに扱う ブランチごとに違うデータを保持しそれを参照できる (この例ではSELECTだが他クエリについても同様に実行可能) /* mainブランチを参照*/ SELECT COUNT(*) FROM "Defenitive_Catalog"."my_folder"."nyc_trips"
AT REF main; /* etl_branchを参照*/ SELECT COUNT(*) FROM "Defenitive_Catalog"."my_folder"."nyc_trips" AT REF etl_branch;
データをGitライクに扱う ブランチごとに違うデータを保持しそれを参照できる (この例ではSELECTだが他クエリについても同様に実行可能) /* mainブランチを参照*/ SELECT COUNT(*) FROM "Defenitive_Catalog"."my_folder"."nyc_trips"
AT REF main; /* etl_branchを参照*/ SELECT COUNT(*) FROM "Defenitive_Catalog"."my_folder"."nyc_trips" AT REF etl_branch;
データをGitライクに扱う 当然のことながらマージも存在し別ブランチで行った 既存テーブルの更新や新テーブルの追加も可能だった /* etl_branchをmainブランチにマージして変更を反映 */ MERGE BRANCH etl_branch
INTO main IN "Defenitive_Catalog";
データをGitライクに扱う ArcticCatalog上から各ブランチの変更履歴を確認できる。
Dremio CloudをAWS Glue Data Catalogに繋げる AWS Glue Data CatalogにつないでGlueで作られたIcebergテーブルに対して
クエリができる(はずなのだがmetadataに対してアクセスできず敗北)
アジェンダ カタログのおさらい Dremio’s SQL Engine AWS Glue AWS
Athena まとめ
AWS Glueとは 多用なデータソースのメタデータをフルマネージドかつサーバーレスで 管理くれるETLサービス 下手な説明をするよりBlackBeltのリンクを貼るスタイルGlue Black
Belt
GlueでIcebergテーブルを作ってみる ETL jobs > Visual ETLで読み込み対象するとするS3を指定し、 Job details >
Advance propertiesから--datalake-formats=icebergを設定
GlueでIcebergテーブルを作ってみる VisualETLで生成されたScriptにいつも呪文等を追記
今はマネジメントコンソールから普通に作れる テーブル作成時のオプションにIcebergがある
自動コンパクション Glue Data CatalogからEnable compactionすることによって 自動で該当テーブルのコンパクションしてくれるようになるらしい
アジェンダ カタログのおさらい Dremio’s SQL Engine AWS Glue AWS Athena
まとめ
AWS Athenaとは S3上にあるデータに対しSQLクエリを発行して簡単に分析できるクエリサービス 下手な説明をするよりBlackBeltのリンクを貼るスタイルAthena Black
Belt
AthenaでIcebergテーブルを作る アドホックにIcebergテーブルを作りたいだけならAthenaでも可能! CREATE TABLE definitive_guide.iceberg_table_test( pickup_datetime TIMESTAMP, passenger_count INT, trip_distance_mi
FLOAT, fare_amount FLOAT, tip_amount FLOAT, total_amount FLOAT ) PARTITIONED BY (day(pickup_datetime)) LOCATION 's3://definitive-athena/' TBLPROPERTIES ('table_type'='ICEBERG');
AthenaでIcebergテーブルを作る CTASですでにある既存のテーブルからIcebergテーブルを作成できる CREATE TABLE ctas_iceberg_parquet WITH (table_type = 'ICEBERG', format
= 'PARQUET', location = 's3://definitive-athena/CTAS_Iceberg/' is_external = false, partitioning = ARRAY['day(pickup_datetime)'], ) AS SELECT passenger_count, total_amount, pickup_datetime FROM normal_table;
AthenaのIcebegテーブル作成時のオプション Athenaでテーブル作成時にWITH句の中で使用可能な最適化オプション • optimize_rewrite_data_file_threshold ◦ データファイルに対するコンパクションの閾値 • optimize_rewrite_delete_file_threshold
◦ 削除ファイルに対するコンパクションの閾値 • vacuum_min_snapshots_to_keep ◦ メインブランチに保持するスナップショットの最小数 • vacuum_max_snapshot_age_seconds ◦ メインブランチに保持するスナップショットの最大保存期間 • vacuum_max_metadata_files_to_keep ◦ 保持するメタデータファイルの最大数
アジェンダ カタログのおさらい Dremio’s SQL Engine AWS Glue AWS Athena
まとめ
まとめ Dremio、AWSどちらもともに進化Definitive Guideが 書かれた時よりも進化していた(2024年9月9日現在) 今後もそれぞれドンドン進化して行くことが予想されるので キャッチアップが欠かせない!