[解決済み] Hiveでテーブルをパーティショニングすることとバケット化することの違いは何ですか?
質問
両方がテーブルのカラムに対して実行されることは知っていますが、それぞれの操作はどのように違うのですか。
どのように解決するのですか?
パーティション分割
これはパフォーマンス上の利点があり、論理的な方法でデータを整理するのに役立ちます。
例
を扱っている場合、大きな
employee
テーブルを使用してクエリを実行することが多く、その際
WHERE
節を使用して、結果を特定の国や部署に制限することができます。より高速なクエリ応答を得るために、Hive テーブルは
PARTITIONED BY (country STRING, DEPT STRING)
. テーブルをパーティショニングすると、Hiveのデータストレージの構造が変わり、以下のようにパーティショニング構造を反映したサブディレクトリが作成されます。
.../employees/ country=ABC/DEPT=XYZ .
からの従業員に対するクエリ制限の場合
country=ABC
の場合、1つのディレクトリの内容のみをスキャンします。
country=ABC
. これは、クエリのパフォーマンスを劇的に向上させることができますが、パーティショニングスキームが一般的なフィルタリングを反映している場合に限られます。パーティショニング機能はHiveで非常に有用ですが、パーティションが多すぎる設計では、一部のクエリは最適化されても、他の重要なクエリでは不利になる可能性があります。また、パーティションが多すぎると、不必要に多くのHadoopファイルやディレクトリが作成され、ファイルシステムのすべてのメタデータをメモリ内に保持しなければならないため、NameNodeにオーバーヘッドが発生します。
バケット
は、データセットをより管理しやすいパーツに分解するためのもう一つのテクニックです。例えば
date
をトップレベル・パーティションとし
employee_id
を第2レベルのパーティションとして使用すると、小さなパーティションが多くなりすぎてしまいます。その代わりに、従業員テーブルをバケット化して
employee_id
をバケット化カラムとして使用すると、このカラムの値がユーザー定義番号でハッシュ化されてバケット化される。同じ
employee_id
は常に同じバケツに格納される。の数を仮定すると
employee_id
がバケツの数よりはるかに多い場合、それぞれのバケツには多くの
employee_id
. テーブルを作成するときに、次のように指定することができます。
CLUSTERED BY (employee_id) INTO XX BUCKETS;
ここで、XXはバケットの数です。バケット化にはいくつかの利点があります。バケット数は固定なので、データによって変動することがない。もし2つのテーブルが
employee_id
Hiveは論理的に正しいサンプリングを作成することができます。バケッティングはまた、効率的なマップサイド結合などを行う際にも役に立ちます。
関連
-
Hbase公式ドキュメント(中国語
-
HDFSソースコード解析 --- デコミッション
-
Hadoopデータディレクトリの移行
-
コンテナがゼロ以外の終了コード1で終了しました。エラーファイル: prelaunch.err.org.apache.hadoop.mapreduce.
-
Kerberosに関するFailed to find any Kerberos tgt問題を解決する。
-
[解決済み】Hadoop、HBase、Hive、Pigはいつ使う?
-
[解決済み] HDFSからローカルファイルシステムにファイルをコピーする方法
-
[解決済み] Hiveでテーブルをパーティショニングすることとバケット化することの違いは何ですか?
-
[解決済み] HBaseとHadoop/HDFSの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Hbase公式ドキュメント(中国語
-
HDFSソースコード解析 --- デコミッション
-
Hadoopデータディレクトリの移行
-
コンテナがゼロ以外の終了コード1で終了しました。エラーファイル: prelaunch.err.org.apache.hadoop.mapreduce.
-
Kerberosに関するFailed to find any Kerberos tgt問題を解決する。
-
[解決済み] HDFSからローカルファイルシステムにファイルをコピーする方法
-
[解決済み] Hiveでテーブルをパーティショニングすることとバケット化することの違いは何ですか?
-
[解決済み] HBaseとHadoop/HDFSの違いについて