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
120
Other Decks in Technology
See All in Technology
Tab5をRubyで動くパソコンにする
kishima
2
280
Screen Lens - 今見てる画面を翻訳する
komagata
0
220
2026/09/10 Spring_Bootから_Jakarta_EE_MicroProfileへの移行
megascus
0
290
なぜSRE・セキュリティは評価されないのか?守りの組織を事業成長エンジンに変えた実践
cscengineer
PRO
3
2.4k
2026-09-09 【sigma_ucj#1】Sigma を IaC 管理したい! / IaC for Sigma
civitaspo
0
110
全員がプロダクトへ向き合う組織を持続成長させるために——組織づくりのフライホイールと4象限 / The Flywheel Model and Four Quadrants for Organizational Design
hiro_torii
4
950
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
150
omasushiというライブラリを作った
polidog
PRO
0
190
AIで仕事のやり方を変える
matsu7874
3
1k
Reactの設計論
uhyo
14
7.4k
Redmine 7.0で私が開発した新機能の狙いと背景
vividtone
1
150
AI時代に顧客へ最速で価値を 届けるための試行錯誤 〜「AI × マネジメント」領域におけるmentoのケース〜
posterkeisuke
0
110
Featured
See All Featured
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
510
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.9k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
GraphQLとの向き合い方2022年版
quramy
50
15k
Paper Plane (Part 1)
katiecoart
PRO
1
11k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
500
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Fireside Chat
paigeccino
42
4k
Bash Introduction
62gerente
615
220k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
HDC tutorial
michielstock
2
860
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日現在) 今後もそれぞれドンドン進化して行くことが予想されるので キャッチアップが欠かせない!