ハイブでSkewed tablesを実行した後、スキュードテーブルのデータの格納方法と、パーティションテーブルの処理方法とが混同されました。誰かが明確にどここれら二つの概念スキューvsハイブのパーティション
Skewed Tables and Partitioned Tables
一致とどこが異なるのとマークされた例との違いを述べることはできますか? 例を挙げてください。
ハイブでSkewed tablesを実行した後、スキュードテーブルのデータの格納方法と、パーティションテーブルの処理方法とが混同されました。誰かが明確にどここれら二つの概念スキューvsハイブのパーティション
Skewed Tables and Partitioned Tables
一致とどこが異なるのとマークされた例との違いを述べることはできますか? 例を挙げてください。
クエリを最適化するために、スキューされたテーブルとパーティションテーブルの両方の目的が同じです。しかし、彼らのやり方や時期は少し異なります。
私たちがStravaのようなフィットネストラッカーを構築しており、ユーザーのデータが絶えず私たちに送信されているとしましょう。
Partitioning
:それは/year=2017/month=10/day=12
などのように、日付と時刻で任意の日付と時間ベースのフィルタは、非常に高速になります例えば、この方法はこの種のデータを分割するために非常に正常です。
Skewed table
SELECT col FROM table WHERE year=2017 AND month=10
UserId
で照会したいのであれば、それが遅くなる:
SELECT col FROM table WHERE year=2017 AND month=10 AND userid=20
しかし、スキューテーブルはここに助けることができます。そのアクティブユーザーが20, 23, 25
であったとします。あなたが見ることができるように、これらのフィットネスフリークは独自のディレクトリを持っ
/year=2017/month=10/day=12/userid=20
/year=2017/month=10/day=12/userid=23
/year=2017/month=10/day=12/userid=27
/year=2017/month=10/day=12/userid=others
:今、あなたのようなストレージ・データを作成することができます。これにより、上記の同じクエリを実行すると(ユーザーIDでフィルタリングする)高速クエリが実行されます。
もう少しですが、refer to this documentationです。