2016-07-12 11 views

答えて

0

外部表は、実際のファイルがまだ意志削除されるだけの参照を持っています場所に保持されます。

外部表のデータファイルは、テーブルによって所有でもない倉庫のディレクトリにハイブに移動されません

唯一のパーティションのメタは、ハイブメタストアのテーブル..から削除されます

内部&外部テーブル間の

違い:

外部テーブル用 -

外部タブレットeはHDFSサーバにファイルを保存しますが、テーブルはソースファイルに完全にはリンクされません。

外部テーブルを削除すると、そのファイルはまだHDFSサーバーに残ります。一例として、

あなたはHIVE-QLを使用してHIVEに「table_test」と呼ばれる外部表を作成し、「ファイル」をファイルにテーブルをリンクする場合は、削除HIVEから「table_testが」HDFSから「ファイル」を削除しません。

外部テーブルファイルは、HDFSファイル構造にアクセスできるすべての人がアクセスできるため、HDFSファイル/フォルダレベルでセキュリティを管理する必要があります。

メタデータはマスターノードで維持され、HIVEから外部テーブルを削除すると、データ/ファイルではないメタデータのみが削除されます。 hive.metastore.warehouse.dirの設定に基づいて、ディレクトリに格納されている

内部Tables-については

、デフォルトで内部テーブルは、次のディレクトリに格納されている「/ユーザー/ハイブ/倉庫」のことができます。設定ファイルの場所を更新して変更してください。 テーブルを削除すると、マスターノードとHDFSのそれぞれのメタデータ&が削除されます。 内部テーブルファイルセキュリティは、HIVEを介してのみ制御されます。セキュリティはHIVE内で管理する必要があります。おそらくスキーマレベルで行われます(組織の組織に依存します)。

ハイブには、内部または外部のテーブルがあります。これは、データのロード、制御、および管理方法に影響する選択肢です。

データもハイブの外で使用されている:

使用する外部テーブル。たとえば、データファイルは、ファイルをロックしない既存のプログラムによって読み取られ、処理されます。 DROP TABLEの後でも、データは基になる場所にとどまる必要があります。これは、複数のスキーマ(表またはビュー)を単一のデータ・セットで指定している場合や、さまざまなスキーマを反復処理している場合に適用できます。 ハイブはデータや制御設定、ディレクトリなどを所有してはいけません。それらのことをする別のプログラムやプロセスがあるかもしれません。 既存のテーブル(AS SELECT)に基づいてテーブルを作成していません。データは一時的なものである

使用INTERNALテーブル。 Hiveにテーブルとデータのライフサイクルを完全に管理させたいとします。

注:データベースになります場合は、メタテーブルが(detailsを設定して)

|BUCKETING_COLS  | 
| COLUMNS   | 
| DBS    | 
| NUCLEUS_TABLES  | 
| PARTITIONS   | 
| PARTITION_KEYS  | 
| PARTITION_KEY_VALS | 
| PARTITION_PARAMS | 
| SDS    | 
| SD_PARAMS   | 
| SEQUENCE_TABLE  | 
| SERDES    | 
| SERDE_PARAMS  | 
| SORT_COLS   | 
| TABLE_PARAMS  | 
| TBLS    | 
+0

このコマンドの正確な結果はどうなりますか?それは明らかにテーブルへの参照を削除していない、それはパーティションを削除していますが、それは特定のパーティションだけでも、実際に何が起こっているかについては少し混乱します。 – Dhiraj

+0

PARTITIONメタのみがハイブメタストアテーブルから削除されます... –

+0

これは、単純にALTER TABLE MyTable DROP IF EXISTS PARTITION(年、月、日)と言っている可能性があります。それはパーティションメタデータを削除してしまいました - なぜ特定のパーティションの値を提供するのですか? – Dhiraj

0

パーティショニング方式はパーティションではありません。パーティショニングスキームはテーブルDDLの一部です。パーティション情報はメタデータに格納されます(単にパーティションキー値+その場所です)。データそのものは、ファイル内でパーティションの場所(フォルダ)に保存されます。外部テーブルのパーティションを削除すると、その場所はそのまま残りますが、パーティションとしてアンマウントされます。パーティションの場所がアンマウントされているバージョンはほとんどありません(以前のバージョンなど)。パーティションを削除し、別のフォルダ(ディレクトリ)をパーティションとしてマウントすることもできます(alter table add partition ...)。また、外部テーブルを削除すると、その中のファイルでテーブルフォルダを削除しないでください。そして、後でこの場所(フォルダ)でテーブルを作成することができます。

関連する問題