私はハイブを学んでいて、歪んだテーブルに出くわしました。それを理解するのを手伝ってください。
Hive の歪んだテーブルとは何ですか?
歪んだテーブルを作成するにはどうすればよいですか?
パフォーマンスにどのように影響しますか?
Hive の歪んだテーブルとは何ですか?
歪んだテーブルは特殊なタイプのテーブルで、非常に頻繁に表示される (大きな歪曲) 値が個別のファイルに分割され、残りの値は別のファイルに移動します。
歪んだテーブルを作成するにはどうすればよいですか?
create table <T> (schema) skewed by (keys) on ('value1', 'value2') [STORED as DIRECTORIES];
例 :
create table T (c1 string, c2 string) skewed by (c1) on ('x1')
パフォーマンスにどのように影響しますか?
歪んだ値を指定することにより、Hive はそれらを自動的に個別のファイルに分割し、クエリ中にこの事実を考慮して、可能であればファイル全体をスキップ (または含める) してパフォーマンスを向上させます。
編集 :
x1 は、実際には列 c1 が歪んでいる値です。複数の列に対して複数のそのような値を持つことができます。例えば、
create table T (c1 string, c2 string) skewed by (c1) on ('x1', 'x2', 'x3')
このようなセットアップの利点は、他の値よりも頻繁に表示される値が個別のファイル (または STORED AS DIRECTORIES 句を使用している場合は個別のディレクトリ) に分割されることです。この情報は、クエリの実行中に実行エンジンによって使用され、処理がより効率的になります。