2017-07-18 6 views
0

これは簡単なことかもしれませんが、私は答えを見つけるのに苦労しています。データがHDFSにロードされると、そのデータは複数のノードに分散されてロードされます。データは分割され、配布されます。
HIVEには、データをPARTITIONするオプションがあります。 PARTITIONオプションについて言及しなくても、ハイブテーブルをロードするときに、クラスタ上の別のノードにデータが分割されて分散されることは間違いありません。この場合、このコマンドにはどんな利点がありますか。HDFSとHIVEのパーティション分割

+0

ディストリビューションはそれとは関係ありません(パーティショニング)。これは、ローカルファイルシステムとまったく同じ概念です。 –

+0

パーティション分割は、各パーティションのサブディレクトリにデータを格納します。パーティション化列でフィルタすると、ハイブはフィルタで指定されたサブディレクトリのみをスキャンします。これにより、パフォーマンスが向上します。 @DuduMarkovitz氏によると、これはHDFSのデータ配信と複製とはまったく関係がありません。 – Andrew

+0

私が間違っていれば私を訂正してください。データをハイブ・テーブルにロードするとき、データはセグメント化され、ブロックに分割され、クラスタ内の異なるノードに保存されます。私の仮定は、データを分割することも同じことです。データは、HIVEでPARTITIONEDに設定されている場合はフォルダとサブフォルダに配置されますが、HDFSではブロックとして保存されます。もしそうなら、この場合に何が行われているのか。それが何を提供しているのか。 – kris

答えて

-2

HDFSパーティション:主にノード上のファイルのストレージを扱います。フォールトトレランスのために、ファイルはクラスタ全体にレプリケートされます(レプリケーションファクタの使用)

ハイブパーティション:ハイブの最適化手法です。 ハイブDBの内部では、テーブルを格納している間、クエリのパフォーマンスを向上させるために、パーティション分割を行います。 パーティショニングは、データがハイブに格納される方法とデータを読み取る方法に関する情報を提供します。 ハイブパーティション化は、テーブルデータの列レベルで制御できます。

関連する問題