6

HIVEの外部テーブルは、年、月、日でパーティション分割されています。

次のクエリは、このクエリで参照されている特定のパーティションの外部テーブルからデータを削除しますか?:-

ALTER TABLE MyTable DROP IF EXISTS PARTITION(year=2016,month=7,day=11);
4

2 に答える 2

5

パーティショニング スキームはデータではありません。パーティショニング スキームは、メタデータに格納されているテーブル DDL の一部です (簡単に言うと、パーティション キー値 + データ ファイルが格納されている場所)。

データ自体は、パーティションの場所 (フォルダー) 内のファイルに格納されます。外部テーブルのパーティションを削除すると、場所はそのまま残りますが、パーティションとしてアンマウントされます (このパーティションに関するメタデータは削除されます)。パーティションの場所のいくつかのバージョンをアンマウントできます (たとえば、以前のバージョン)。

パーティションを削除して別の場所をパーティションとしてマウントするか ( alter table add partition )、既存のパーティションの場所を変更できます。また、外部テーブルを削除しても、ファイルが含まれるテーブル/パーティション フォルダーは削除されません。後で、この場所の上にテーブルを作成できます。

外部テーブル/パーティションの概念をよりよく理解するために、この回答をご覧ください: HDFS の同じ場所の上に多くのテーブル (管理対象テーブルと外部テーブルの両方) を同時に作成することができます。

于 2016-07-22T18:08:56.903 に答える
3

削除される参照のみを持つ外部テーブルはありません。実際のファイルは引き続き location に保持されます。

外部テーブル データ ファイルはテーブルによって所有されておらず、ハイブ ウェアハウス ディレクトリにも移動されていません

PARTITION メタのみが Hive メタストア テーブルから削除されます。

内部テーブルと外部テーブルの違い:

外部テーブルの場合 -

外部テーブルは HDFS サーバーにファイルを格納しますが、テーブルはソース ファイルに完全にはリンクされていません。

外部テーブルを削除しても、ファイルは HDFS サーバーに残ります。

たとえば、HIVE-QL を使用して HIVE に「table_test」という外部テーブルを作成し、そのテーブルをファイル「file」にリンクする場合、HIVE から「table_test」を削除しても HDFS から「file」は削除されません。

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

メタ データはマスター ノードで維持され、外部テーブルを HIVE から削除すると、データ/ファイルではなくメタデータのみが削除されます。

内部テーブルの場合-

hive.metastore.warehouse.dir の設定に基づくディレクトリに保存されます。デフォルトでは、内部テーブルは次のディレクトリ「/user/hive/warehouse」に保存されます。構成ファイルの場所を更新することで変更できます。テーブルを削除すると、メタデータとデータが master-node と HDFS からそれぞれ削除されます。内部テーブル ファイルのセキュリティは、HIVE によってのみ制御されます。セキュリティは、おそらくスキーマ レベルで HIVE 内で管理する必要があります (組織によって異なります)。

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

次の場合に EXTERNAL テーブルを使用します。

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

次の場合は、INTERNAL テーブルを使用します。

データは一時的なものです。Hive でテーブルとデータのライフサイクルを完全に管理したい。

注: データベースを参照する場合は、メタ テーブル (構成 済みの詳細)

|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               | 
于 2016-07-12T06:30:13.577 に答える