Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Delta Lake - Liquid Clusteringとは何か?

Delta Lake - Liquid Clusteringとは何か?

#otfsg_tokyoさんの勉強会「OTFSG Tokyo Meetup #2」でお話した資料です。Delta LakeのLiquid Clustering機能について説明しています

Databricks Japan

March 29, 2024
Tweet

More Decks by Databricks Japan

Other Decks in Technology

Transcript

  1. ©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)
  2. ©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のパフォーマンスチューニング戦略
  3. ©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,...} …
  4. 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のパフォーマンスチューニング戦略
  5. 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のパフォーマンスチューニング戦略
  6. 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のパフォーマンスチューニング戦略
  7. 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のパフォーマンスチューニング戦略 小規模ファイルができる ➔ メタデータ操作のオーバーヘッドが大きい ➔ 読み取り操作が遅い 課題
  8. 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のパフォーマンスチューニング戦略
  9. 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』コマンドを実行し、 ファイルサイズを最適化
  10. 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』コマンドを実行し、 ファイルサイズを最適化
  11. 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)の発生 ➔ パーティション間のファイルサイズの不一致 課題
  12. 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のパフォーマンスチューニング戦略
  13. 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
  14. 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
  15. 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のパフォーマンスチューニング戦略 最適化されたファイルサイズ ➔ 小規模ファイルがたくさんできていない ➔ データの偏りが発生していない
  16. 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のパフォーマンスチューニング戦略 新規ファイルにすぐに適用されない ➔ 新しく取り込まれたデータはクラスタ化されて いない ➔ 動的にファイルをマージできない 課題
  17. 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とはなにか?
  18. 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 …
  19. 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とはなにか?
  20. 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とはなにか?
  21. 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とはなにか?
  22. 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とはなにか?
  23. 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とはなにか?
  24. 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とはなにか?
  25. 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とはなにか?
  26. 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とはなにか?
  27. 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とはなにか?
  28. 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とはなにか?
  29. 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とはなにか?
  30. 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とはなにか?
  31. 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とはなにか?
  32. 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とはなにか?
  33. 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とはなにか?
  34. 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とはなにか?
  35. 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とはなにか?
  36. 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とはなにか?
  37. 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とはなにか?
  38. 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とはなにか?
  39. 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とはなにか?
  40. 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とはなにか?
  41. 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とはなにか?
  42. 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とはなにか?
  43. ➔ 理想的なファイル数とサイズでバラ ンスの取れたデータセットになるよう に、動的にファイルをマージ,分割可 能 ➔ リキッドクラスタリングはステートフル のため、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とはなにか?