Slide 1

Slide 1 text

1 2024/03/01 Saki Kitaoka [Delta Lake] Liquid Clusteringとはなにか?

Slide 2

Slide 2 text

Agenda 1 (前提) Delta Lakeとはなにか? 2 Delta Lakeのパフォーマンスチューニング戦略 3 Liquid Clusteringとはなにか?

Slide 3

Slide 3 text

自己紹介 Saki Kitaoka (@ktksq) ● 趣味:ミュージカル、アニメを見ること ● 最近有志で技術書典に出版しました。 ぜひお手にとってみてください!(値下げしておきました笑) ● Blog: https://ktksq.hatenablog.com/ ● Twitter: @ktksq ● 宣伝: @DatabricksJP (中の人やってます!)

Slide 4

Slide 4 text

(前提) Delta Lakeとはなにか?

Slide 5

Slide 5 text

Delta Lakeとはなにか?

Slide 6

Slide 6 text

©2022 Databricks Inc. — All rights reserved Delta Lakeの実体 Delta Lakeとはなにか?

Slide 7

Slide 7 text

©2022 Databricks Inc. — All rights reserved Delta Lakeが生まれた経緯: データレイクとDelta Lakeの違い Delta Lakeとはなにか? ● コンピュートとストレージの分離 ● 無限のストレージ容量 ● 安価なストレージコスト ● あらゆる種類の生データを保存 (e.g. 非構造 データ、構造化データ、ビデオ、オーディオ、テキ スト) ● ACIDトランザクションが担保されていないため、 部分的に完了したトランザクションによりデータが 破損した状態で残り、複雑なリカバリが必要にな る  ● データ品質が担保できないため、一貫性がなく使 い物にならないデータが作成される ● 一貫性/独立性がないため、データの追加とデー タの読込み、バッチとストリーミングを同時に実行 させることが困難 ● 多くの小さいサイズのファイルが存在するため、 ファイルI/Oに時間がかかる ● クラウドストレージのスループットが低い (S3は 20~50MB/scoreに対して、ローカルのNVMe SSDは300MB/score)

Slide 8

Slide 8 text

©2022 Databricks Inc. — All rights reserved Delta Lakeの特徴 Delta Lakeとはなにか?

Slide 9

Slide 9 text

Delta Lakeの パフォーマンスチューニング戦略

Slide 10

Slide 10 text

©2022 Databricks Inc. — All rights reserved (前提) Parquetの課題 customersデータ p3 p1 p2 task task task データ偏り(Skew)の問題 合計処理時間 処理時間 customersデータ p4 p1 p2 p3 task task task task 合計処理時間 理想的な状態(各ファイルを均等に処理) 処理時間 customersデータ p1 pn p2 p.. p.. p1 p.. p1 p.. p1 p.. p1 p.. p1 p.. p1 p.. p.. p.. p.. task task task task 小規模ファイルの問題 合計処理時間 処理時間 customersデータ p4 p1 p2 p3 task task task task 合計処理時間 不正データ問題 処理時間 schema broken file corrupt FAIL FAIL FAIL 10 Delta Lakeのパフォーマンスチューニング戦略

Slide 11

Slide 11 text

©2022 Databricks Inc. — All rights reserved (前提) 既存のパーティショニング戦略 - Hive Style Partitioning Delta Lakeのパフォーマンスチューニング戦略 ➔ データレイクに格納された大規模データセットに対するクエリのパフォーマンスを向上させる一 般的な方法 ➔ データをより小さなパーティションに分割し、パーティション情報は各ファイルのパスの一部とし て保存 ➔ スキャン中にデータをスキップできるようになるので、クエリを大幅に高速化できる /transactions/date=2023-02-05/customer=customerA/{1.parquet, 2.parquet,...} /transactions/date=2023-02-05/customer=customerB/{1.parquet, 2.parquet,...} /transactions/date=2023-02-05/customer=customerC/{1.parquet, 2.parquet,...} /transactions/date=2023-02-06/customer=customerA/{1.parquet, 2.parquet,...} /transactions/date=2023-02-06/customer=customerB/{1.parquet, 2.parquet,...} …

Slide 12

Slide 12 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F (前提) 既存のパーティショニング戦略 - Hive Style Partitioning Delta Lakeのパフォーマンスチューニング戦略

Slide 13

Slide 13 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F (前提) 既存のパーティショニング戦略 - Hive Style Partitioning Delta Lakeのパフォーマンスチューニング戦略

Slide 14

Slide 14 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F (前提) 既存のパーティショニング戦略 - Hive Style Partitioning Delta Lakeのパフォーマンスチューニング戦略

Slide 15

Slide 15 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F (前提) 既存のパーティショニング戦略 - Hive Style Partitioning Delta Lakeのパフォーマンスチューニング戦略 小規模ファイルができる ➔ メタデータ操作のオーバーヘッドが大きい ➔ 読み取り操作が遅い 課題

Slide 16

Slide 16 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F 『Optimize』コマンドを実行し、 ファイルサイズを最適化 Hive Style Partitioning + Compaction (Optimize) Delta Lakeのパフォーマンスチューニング戦略

Slide 17

Slide 17 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F パーティション境界で ファイルサイズを最適化 Hive Style Partitioning + Compaction (Optimize) Delta Lakeのパフォーマンスチューニング戦略 『Optimize』コマンドを実行し、 ファイルサイズを最適化

Slide 18

Slide 18 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F ターゲットファイルサイズ Hive Style Partitioning + Compaction (Optimize) Delta Lakeのパフォーマンスチューニング戦略 パーティション境界内で ファイルサイズを最適化 『Optimize』コマンドを実行し、 ファイルサイズを最適化

Slide 19

Slide 19 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Hive Style Partitioning + Compaction (Optimize) Delta Lakeのパフォーマンスチューニング戦略 小規模ファイルができる ➔ メタデータ操作のオーバーヘッドが大きい ➔ 読み取り操作が遅い データサイズの偏り(Skew)の発生 ➔ パーティション間のファイルサイズの不一致 課題

Slide 20

Slide 20 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Z-Order + Compaction (Optimize) Delta Lakeのパフォーマンスチューニング戦略

Slide 21

Slide 21 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Z-Order + Compaction (Optimize) Delta Lakeのパフォーマンスチューニング戦略 optimize my_table zorder by date, customer_id

Slide 22

Slide 22 text

Z-Order(イメージ) Delta Lakeのパフォーマンスチューニング戦略 同じファイルセットの中に関連する情報をまとめて配置するファイルレイアウト技術

Slide 23

Slide 23 text

Z-Order(イメージ) Delta Lakeのパフォーマンスチューニング戦略 X = 2 またはY = 3を検索する場合

Slide 24

Slide 24 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Z-Order + Compaction (Optimize) Delta Lakeのパフォーマンスチューニング戦略 optimize my_table zorder by date, customer_id

Slide 25

Slide 25 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Z-Order + Compaction (Optimize) Delta Lakeのパフォーマンスチューニング戦略 最適化されたファイルサイズ ➔ 小規模ファイルがたくさんできていない ➔ データの偏りが発生していない

Slide 26

Slide 26 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Z-Order + Compaction (Optimize) Delta Lakeのパフォーマンスチューニング戦略 新規ファイルにすぐに適用されない ➔ 新しく取り込まれたデータはクラスタ化されて いない ➔ 動的にファイルをマージできない 課題

Slide 27

Slide 27 text

Liquid Clusteringとは何か?

Slide 28

Slide 28 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 29

Slide 29 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Liquid cluster by customer ID and date Liquid Clusteringとはなにか? CREATE TABLE my_liquid_table … CLUSTER BY (customer_id, date) AS SELECT …

Slide 30

Slide 30 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Col 1: date Col 2: customer_id Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 31

Slide 31 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Col 1 Col 1 > 2023-02-06 Col 1 <= 2023-02-06 Col 1: date Col 2: customer_id Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 32

Slide 32 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Col 1 Col 1 > 2023-02-06 Col 1 <= 2023-02-06 Col 2 Col 2 Col 2 > C Col 2 <= C Col 2 > B Col 2 <= B Col 1: date Col 2: customer_id Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 33

Slide 33 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Col 1 Col 1 > 2023-02-06 Col 1 <= 2023-02-06 Col 1 Col 2 Col 2 Col 2 > C Col 2 <= C Col 2 > B Col 2 <= B Col 1 > 2023-02-05 Col 1 <= 2023-02-05 Col 1: date Col 2: customer_id Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 34

Slide 34 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Col 1 Col 1 > 2023-02-06 Col 1 <= 2023-02-06 Col 1 Col 2 Col 2 Col 2 Col 2 Col 2 > C Col 2 <= C Col 2 > B Col 2 <= B Col 1 > 2023-02-05 Col 1 <= 2023-02-05 Col 2 > D Col 2 <= D Col 2 > C Col 2 <= C Col 1: date Col 2: customer_id Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 35

Slide 35 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Col 1 Col 1 > 2023-02-06 Col 1 <= 2023-02-06 Leaf1 Col 1 Col 2 Col 2 Leaf6 Leaf7 Col 2 Col 2 Col 2 > C Col 2 <= C Col 2 > B Col 2 <= B Leaf2 Leaf3 Leaf4 Leaf5 Col 1 > 2023-02-05 Col 1 <= 2023-02-05 Col 2 > D Col 2 <= D Col 2 > C Col 2 <= C Col 1: date Col 2: customer_id Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 36

Slide 36 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Col 1 Col 1 > 2023-02-06 Col 1 <= 2023-02-06 Leaf1 Col 1 Col 2 Col 2 Leaf6 Leaf7 Col 2 Col 2 Col 2 > C Col 2 <= C Col 2 > B Col 2 <= B Leaf2 Leaf3 Leaf4 Leaf5 Col 1 > 2023-02-05 Col 1 <= 2023-02-05 Col 2 > D Col 2 <= D Col 2 > C Col 2 <= C Col 1: date Col 2: customer_id Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 37

Slide 37 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F ターゲットファイルサイズに応じ て最適化します。 Col 1 Col 1 > 2023-02-06 Col 1 <= 2023-02-06 Leaf1 Col 1 Col 2 Col 2 Leaf6 Leaf7 Col 2 Col 2 Col 2 > C Col 2 <= C Col 2 > B Col 2 <= B Leaf2 Leaf3 Leaf4 Leaf5 Col 1 > 2023-02-05 Col 1 <= 2023-02-05 Col 2 > D Col 2 <= D Col 2 > C Col 2 <= C Col 1: date Col 2: customer_id Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 38

Slide 38 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Col 1 Col 1 > 2023-02-06 Col 1 <= 2023-02-06 Leaf1 Col 1 Col 2 Col 2 Leaf6 Leaf7 Col 2 Col 2 Col 2 > C Col 2 <= C Col 2 > B Col 2 <= B Leaf2 Leaf3 Leaf4 Leaf5 Col 1 > 2023-02-05 Col 1 <= 2023-02-05 Col 2 > D Col 2 <= D Col 2 > C Col 2 <= C ターゲットファイルサイズ Col 1: date Col 2: customer_id Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 39

Slide 39 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Liquid clustered delta table Write new data Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 40

Slide 40 text

Col 1 Col 1 > 2023-02-06 Col 1 <= 2023-02-06 Leaf1 Col 1 Col 2 Col 2 Leaf6 Leaf7 Col 2 Col 2 Col 2 > C Col 2 <= C Col 2 > B Col 2 <= B Leaf2 Leaf3 Leaf4 Leaf5 Col 1 > 2023-02-05 Col 1 <= 2023-02-05 Col 2 > D Col 2 <= D Col 2 > C Col 2 <= C Write new data Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 41

Slide 41 text

Col 1 leaf1 Col 1 Col 2 Col 2 leaf6 leaf7 Col 2 Col 2 Leaf2 Leaf3 Leaf4 Leaf5 Write Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 42

Slide 42 text

Col 1 leaf1 Col 1 Col 2 Col 2 leaf6 leaf7 Col 2 Col 2 Leaf2 Leaf3 Leaf4 Leaf5 Write Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 43

Slide 43 text

Col 1 leaf1 Col 1 Col 2 Col 2 leaf6 leaf7 Col 2 Col 2 Leaf2 Leaf3 Leaf4 Leaf5 Write Insert more data . . . Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 44

Slide 44 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 45

Slide 45 text

optimize my_table 2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 46

Slide 46 text

Col 1 leaf1 Col 1 Col 2 Col 2 leaf6 leaf7 Col 2 Col 2 Leaf2 Leaf3 Leaf4 Leaf5 2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F optimize my_table Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 47

Slide 47 text

Col 1 leaf1 Col 1 Col 2 Col 2 leaf6 leaf7 Col 2 Col 2 Leaf2 Leaf3 Leaf4 Leaf5 2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F optimize my_table Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 48

Slide 48 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F ノードのファイルを最適化: ● 小さいファイルの数がfiles_numberの閾値より大きい ● ノード・サイズがnode_sizeの閾値より小さい Col 1 leaf1 Col 1 Col 2 Col 2 leaf6 leaf7 Col 2 Col 2 Leaf2 Leaf3 Leaf4 Leaf5 Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 49

Slide 49 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Col 1 leaf1 Col 1 Col 2 Col 2 leaf6 leaf7 Col 2 Col 2 Leaf2 Leaf3 Leaf4 Leaf5 ノードのファイルを最適化: ● 小さいファイルの数がfiles_numberの閾値より大きい ● ノード・サイズがnode_sizeの閾値より小さい Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 50

Slide 50 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Col 1 leaf1 Col 1 Col 2 Col 2 leaf6 leaf7 Col 2 Col 2 Leaf2 Leaf3 Leaf4 Leaf5 Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 51

Slide 51 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Col 1 leaf1 Col 1 Col 2 Col 2 leaf6 leaf7 Col 2 Col 2 Leaf2 Leaf3 Leaf4 Leaf5 リーフノードの拡張 ● ノードサイズがnode_sizeのしきい値より大きい Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 52

Slide 52 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Col 1 leaf1 Col 1 Col 2 Col 2 leaf6 leaf7 Col 2 Col 2 Leaf2 Leaf3 Leaf4 Leaf5 リーフノードの拡張 ● ノードサイズがnode_sizeのしきい値より大きい Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 53

Slide 53 text

2023-02-05 2023-02-06 2023-02-07 Customer A Customer B Customer C Customer D Customer E Customer F Col 1 leaf1 Col 1 Col 2 Col 2 leaf6 Col 2 Col 2 Leaf2 Leaf3 Leaf4 Leaf5 Col1 Col 2 Col 2 leaf 7 leaf 8 leaf 9 leaf 10 リーフノードの拡張 ● ノードサイズがnode_sizeのしきい値より大きい Liquid cluster by customer ID and date Liquid Clusteringとはなにか?

Slide 54

Slide 54 text

➔ 理想的なファイル数とサイズでバラ ンスの取れたデータセットになるよう に、動的にファイルをマージ,分割可 能 ➔ リキッドクラスタリングはステートフル のため、OPTIMIZE コマンドが実行 されるたびに再計算されない ➔ 新しく取り込まれたデータは必要に 応じてクラスタリングされ、以前にク ラスタリングされたデータは無視され る Col 1 leaf1 Col 1 Col 2 Col 2 leaf6 Col 2 Col 2 Leaf2 Leaf3 Leaf4 Leaf5 Col 1 Col 2 Col 2 Leaf7 Leaf8 Leaf9 Leaf10 54 Lazy Clusering Liquid Clusteringとはなにか?

Slide 55

Slide 55 text

55 Thank you!

Slide 56

Slide 56 text

No content