私はハイブが初めてで、バケット化とMapSide結合について読んでいました
「マップ結合は、バケット化されたテーブル (バケット) を利用できます。これは、左側のテーブルのバケットで作業しているマッパーが、結合を実行するために右側のテーブルの対応するバケットをロードするだけでよいためです。結合の構文は、インメモリ....」
次のようにテーブルを作成するとします
CREATE TABLE bucketed_users (id INT, name STRING) CLUSTERED BY (id) INTO 4 BUCKETS;
私の質問は
1> 4 つのバケットすべてが同じサイズになるかどうか それともデータ内のidの頻度に依存しますか? つまり、ID が何度も繰り返される場合、関連するバケットは他のバケットよりも大きなサイズになります。
2> ID に関連するデータが 2 つの異なるバケットに存在するシナリオはありますか? つまり、ID の 1 つのレコードがバケット 1 に存在し、別のレコードがバケット 4 に存在します。
はいの場合、オプティマイザーはバケット化されたデータをどのように処理しますか?
誰かがこれを試したことがあれば、彼らの経験を共有できれば素晴らしいことです.