Hive 内部テーブルと外部テーブルの比較

Hive テーブルのさまざまな種類とそれらが互いにどのように異なるかを知りたくありませんか?

Hive データ モデルにおける Hive テーブルの基本を説明しましたが、ここでは Hive 内部および外部テーブルの大きな違いを探ってみましょう。 そして、Hive 内部テーブルと外部テーブルの違いを列挙します。 また、これらの Hive テーブルを使用できるさまざまなケースも紹介します。

では、Hive 内部テーブルと外部テーブルから始めましょう。

最新の技術動向を常に把握
DataFlair on Telegram に参加する!!

Hiveの内部テーブルと外部テーブルの紹介

hive internal and external tables

基本的に、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 internal and external tableshive internal and external tables

ここで、両方のHiveテーブル間の相違点を見ていきましょう。 Hive の内部テーブルと外部テーブルの主な違いは次のとおりです:

LOAD semantics

Load semantics は、両方のテーブルで異なります。 内部テーブルと外部テーブルのロード セマンティクスの違いを見てみましょう。 内部テーブル

内部テーブルにデータをロードすると、Hiveはデータをウェアハウス ディレクトリに移動します。

たとえば、この例では、’internaldemo’ テーブルを作成します。 internaldemo’テーブルにデータをロードすると、次にHiveはデータをwarehouseディレクトリに移動します。

Learn Apache Hive Installation on Ubuntu to run Hive queries.

create internal table - hive internal and external table

Now, loading data into the internal table created above. load data into internal table - hive internal and external tables

テーブルを記述すると、テーブルのデータはHive warehouseディレクトリに移動することが分かります。describe internal table - hive internal and external tables

b. External Table

EXTERNALキーワードで、Hiveはテーブルデータを管理していないことを知っているので、データをそのwarehouseディレクトリに移動させないようにします。 たとえば、

この例では、指定された場所(/home/dataflair/)に外部テーブル ‘external_demo’ を作成します。

create external table - hive internal and external tables

ここで、上記で作成した外部テーブルにデータをロードしてください。 load data into external table - hive internal and external tables

テーブルを閲覧してみると、HiveテーブルのデータはHive warehouseディレクトリに移動していないことがわかります。 describe external table - hive internal and external tables

DROP semantics

ロード セマンティクスと同様に、ドロップ セマンティクスも両方のテーブルで異なっています。 内部テーブルと外部テーブルのドロップセマンティックの違いを見てみましょう。 内部テーブル

内部テーブルを削除すると、テーブル データとテーブルに関連付けられたメタデータが削除されます。

例:

この例では、管理テーブル ‘internaldemo’ を削除しています。

drop internal table - hive internal and external tables

locating hive internal table - hive internal and external tables

テーブルのデータも HDFS から削除されます。

b.管理テーブルのメタデータも削除されました。 外部テーブル

外部テーブルを削除すると、テーブルのメタデータのみが削除されます。 テーブルのコンテンツはそのまま残ります。

たとえば、この例では、外部テーブル ‘external demo’ を削除しても、テーブルのコンテンツは HDFS の場所にまだ存在することがわかります。

外部テーブルのドロップ - ハイブ テーブル

外部テーブルの配置 - ハイブ テーブル

TRUNCATE サポート

TRUNCATE コマンドは内部テーブルに対してのみ機能します。

たとえば、この例では ‘externaldemo’ テーブルで truncate コマンドを使用しようとしています。 この場合、’Cannot truncate non-managed table externaldemo’ というエラー メッセージが表示されます。

truncate external table - hive tables

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!

以下、質問してください。

コメントを残す

メールアドレスが公開されることはありません。