Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Iceberg Definitive Guide輪読会 Chapter7&8
Search
tanisushi
October 31, 2024
Technology
210
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
130
Other Decks in Technology
See All in Technology
NDIでApple Vision Proにリアルタイム映像送信
jyouryuusui
0
130
DGX Spark でどこまでハッキングができるのか?
kash1064
3
1.4k
WasmをRustにする
sansantech
PRO
0
270
パスキーの自動テストはどこまでいけるのか
teamlab
PRO
0
280
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
200
Temporal 最高!でも改めて「日付」について調べたら人類の負債すぎる件
riyaamemiya
0
180
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
210
その Valkey 使いこなしていますか?
onk
PRO
5
1.6k
オントロジーって 結局なにもの? AI エージェントに「意味」を渡す知識設計の話
greenmidori
0
230
トークン化預金DCJPYの取り組みと活用ユースケース
finengine
0
160
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.7k
Classmethod Company Deck
satoshi7
1
730
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
220
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Navigating Team Friction
lara
192
16k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
760
Designing for Timeless Needs
cassininazir
1
530
Amusing Abliteration
ianozsvald
1
350
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
540
Accessibility Awareness
sabderemane
1
250
A designer walks into a library…
pauljervisheath
211
25k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
330
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日現在) 今後もそれぞれドンドン進化して行くことが予想されるので キャッチアップが欠かせない!