デルタレイク – パーティショニング、Z-オーダー、リキッドクラスタリング

『デルタレイク:パーティショニング、Z-オーダー、リキッドクラスタリング』

Deltaで異なるパーティショニング/クラスタリングの方法はどのように実装されていますか?実際にはどのように動作しますか?

Photo by frame harirak on Unsplash

ビッグデータを扱う際に常に問題となるのは、その名前にもある通り、それが「ビッグ」であることです。特に効果的に行われるパーティショニングは、実行されるクエリの処理時間を短縮する手段の一つであり、データの一部分しか読み込む必要がないため、非常に効果的です。しかし、データのパーティショニングは複雑で、慎重な計画と前向きな考えが必要です。今日の要件に合致するものが将来の要件にも合致するとは限らないからです。例えば、Hiveスタイルのパーティショニングでは、列を変更したり、カーディナリティを増やしたりして、データを過度にパーティション化(小さなファイルの問題)する必要がある場合があります。その結果、データを完全に再構築する必要があり、それは理想的とは言えません。

Z-Orderクラスタリングは、データのスキップをするための別の技術です。これにより、フルデータのスキャンが回避されます。ただし、この技術にはいくつかの制約があります。1つは、新しく取り込まれたデータがデフォルトでは順序付けられないため、ユーザーは再クラスタリングする必要があるということです。つまり、既にクラスタリングされたデータも再度クラスタリングされ、書き直されるため、操作にかかる時間が増えてしまいます。また、Z-Orderのユーザーは、テーブルのプロパティの一部ではないため、コマンドを実行する度にクラスタリングの列を定義する必要があります。

ここで、Liquid Clusteringが登場します。このアプローチのポイントは、既にクラスタリングされたデータを書き換えることなく、現在のデータのレイアウトにシームレスに適合し、将来のニーズにも適応できることです。

この投稿では、Deltaでの異なるデータの枝刈り戦略の詳細と、どのように適用されるかについて説明します。

パーティションの枝刈り — Hiveスタイルのパーティショニング

Hive-style partitioning — Image by author

Hiveスタイルのパーティショニングは、テーブルを小さなチャンクに分割する方法です。これらのデータチャンクは、パーティションの値のデータを含む複数のサブフォルダに組織化されます。

dbfs://people10m/gender=M/data_0.jsondbfs://people10m/gender=M/data_1.jsondbfs://people10m/gender=F/data_0.json…

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more