Hive テーブルのさまざまな種類とそれらが互いにどのように異なるかを知りたくありませんか?
Hive データ モデルにおける Hive テーブルの基本を説明しましたが、ここでは Hive 内部および外部テーブルの大きな違いを探ってみましょう。 そして、Hive 内部テーブルと外部テーブルの違いを列挙します。 また、これらの Hive テーブルを使用できるさまざまなケースも紹介します。
では、Hive 内部テーブルと外部テーブルから始めましょう。
最新の技術動向を常に把握
DataFlair on Telegram に参加する!!
Hiveの内部テーブルと外部テーブルの紹介
基本的に、Hiveは2種類の異なるテーブルを認識しています。 インターナル テーブルとエクスターナル テーブルです。
Hive Internal Table
Hiveは内部テーブルのデータを所有します。
これはHiveのデフォルトのテーブルです。
デフォルトでは、内部テーブルは、HDFS の /user/hive/warehouse ディレクトリと同様のフォルダ パスに作成されます。
管理されたテーブルまたはパーティションを削除すると、そのテーブルに関連付けられたテーブルのデータとメタデータがHDFSから削除されます。
Hive External Table
HiveはExternalテーブルのデータを管理しません。
Hiveの外でデータを使用したい場合として、外部用のテーブルを作成します。
外部テーブルはウェアハウス ディレクトリの外に格納されています。
外部テーブルは、ウェアハウス ディレクトリの外に格納され、リモート HDFS ロケーションまたは Azure Storage Volumes などのソースに格納されたデータにアクセスできます。
外部テーブルを削除すると、テーブルと関連付けられたメタデータのみが削除され、テーブル データは Hive で変更されないままです。
Hive create tableステートメントでEXTERNALキーワードを指定すると、外部テーブルを作成できます。
Hive 内部テーブルと外部テーブルの違い
ここで、両方のHiveテーブル間の相違点を見ていきましょう。 Hive の内部テーブルと外部テーブルの主な違いは次のとおりです:
LOAD semantics
Load semantics は、両方のテーブルで異なります。 内部テーブルと外部テーブルのロード セマンティクスの違いを見てみましょう。 内部テーブル
内部テーブルにデータをロードすると、Hiveはデータをウェアハウス ディレクトリに移動します。
たとえば、この例では、’internaldemo’ テーブルを作成します。 internaldemo’テーブルにデータをロードすると、次にHiveはデータをwarehouseディレクトリに移動します。
Learn Apache Hive Installation on Ubuntu to run Hive queries.
Now, loading data into the internal table created above.
テーブルを記述すると、テーブルのデータはHive warehouseディレクトリに移動することが分かります。
b. External Table
EXTERNALキーワードで、Hiveはテーブルデータを管理していないことを知っているので、データをそのwarehouseディレクトリに移動させないようにします。 たとえば、
この例では、指定された場所(/home/dataflair/)に外部テーブル ‘external_demo’ を作成します。
ここで、上記で作成した外部テーブルにデータをロードしてください。
テーブルを閲覧してみると、HiveテーブルのデータはHive warehouseディレクトリに移動していないことがわかります。
DROP semantics
ロード セマンティクスと同様に、ドロップ セマンティクスも両方のテーブルで異なっています。 内部テーブルと外部テーブルのドロップセマンティックの違いを見てみましょう。 内部テーブル
内部テーブルを削除すると、テーブル データとテーブルに関連付けられたメタデータが削除されます。
例:
この例では、管理テーブル ‘internaldemo’ を削除しています。
テーブルのデータも HDFS から削除されます。
b.管理テーブルのメタデータも削除されました。 外部テーブル
外部テーブルを削除すると、テーブルのメタデータのみが削除されます。 テーブルのコンテンツはそのまま残ります。
たとえば、この例では、外部テーブル ‘external demo’ を削除しても、テーブルのコンテンツは HDFS の場所にまだ存在することがわかります。
TRUNCATE サポート
TRUNCATE コマンドは内部テーブルに対してのみ機能します。
たとえば、この例では ‘externaldemo’ テーブルで truncate コマンドを使用しようとしています。 この場合、’Cannot truncate non-managed table externaldemo’ というエラー メッセージが表示されます。
ACID Support
ACID/transactional は内部テーブルに対してのみ作用します。
Query Result Caching
Query Result Caching は、実行された Hive クエリの結果を保存し、その後のクエリで再利用するもので、内部テーブルに対してのみ機能します。
したがって、これらは Hive 内部テーブルと外部テーブルのいくつかの違いです。
When to use Internal and External table?
Hive 内部テーブル
内部テーブルを使用できるのは以下のような場合です。
- 一時テーブルを生成する場合。
- テーブルのライフサイクルを管理する必要がある場合。
Hive 外部テーブル
外部テーブルを使用できるのは、次のような場合です:
- 既存のテーブルを基にテーブルを作成しない場合。 例えば、データファイルをロックしない既存のプログラムで読み込んで処理する場合。
- DROPしてもテーブルデータを完全に削除したくない場合。
以上、Hive内部テーブルと外部テーブルについてでした。
結論
記事を読んだ後、我々は、Hiveのテーブルは2つのタイプ、内部テーブル(管理テーブルとしても知られている)と外部テーブルがあると結論付けることができます。
Hive 内部テーブルを削除すると、テーブル データとメタデータの両方が削除され、Hive 外部テーブルを削除すると、テーブル メタデータのみが削除されます。
See Also-
- Different Ways to Configure Hive Metastore
- Best Apache Hive Books to learn Hive for beginners
Any queries while working with hive internal and external table?
Keep Learning!
以下、質問してください。