Hiveの外部テーブル

ハイブの外部テーブルの紹介

外部テーブルは、ハイブ

外部テーブルとは、ハイブ

外部テーブルとは、ハイブ

外部テーブルとは、ハイブ

外部テーブルとは、ハイブ

外部テーブルとは、ハイブ

外部テーブルとは、ハイブ

外部テーブルとは、ハイブ

外部テーブルとは、ハイブ部ファイルのスキーマまたはメタデータを記述します。 基本的に、HIVE管理テーブルまたは内部テーブルと外部テーブルの2種類のテーブルがあります。 外部テーブルを定義する主な目的は、ハイブの外部に格納されたデータにアクセスしてクエリを実行することです。 これらのデータファイルは、Pig、Azure storage Volumes(ASV)、または任意のリモートHDFSの場所などの他のツールに保存することができます。 Hiveは、外部テーブルのデータの所有権を持たないことを前提としているため、管理対象テーブルや内部テーブルのようにデータを管理する必要はありません。 また、外部テーブルの場合、テーブルの削除時にデータは削除されません。

Hiveでの外部テーブルの作業と作成

デフォルトでは、Hiveのテーブルディレクトリはデータベースディレクトリの下に作成されます。 例外はデフォルトのデータベースです。 場所user/hive/warehouseにはディレクトリがないため、デフォルトのデータベーステーブルにはこの場所の下に直接作成されたディレクトリがあります。 デフォルトの場所を使用したくない場合は、外部テーブルを作成することをお勧めします。

無料のデータサイエンスコースを開始

Hadoop、データサイエンス、統計&その他

外部テーブルは一般的にデータがハイブの外部にある場合に使用されます。

以下のコマンドでキーワード”EXTERNAL”を使用して外部テーブルを作成しましょう。外部テーブルは、以下のコマンドを使用して、既存のテーブルのスキーマとデータをコピーすることによっても作成できます。

CREATE EXTERNAL TABLE if not exists students
(
Roll_id Int,
Class Int,
Name String,
Rank Int)
Row format delimited fields terminated by ‘,’
Location ‘/data/students_details’;

出力:

CREATE EXTERNAL TABLE if not exists students_v2 LIKE students
Location ‘/data/students_details’;

CREATE EXTERNAL TABLE if not exists students_v2 LIKE students
Location ‘/data/students_details’;

XTERNALキーワードを省略すると、ベーステーブルがEXTERNALの場合、作成される新しいテーブルはexternalになります。 同様に、ベーステーブルがexternalキーワードで管理されている場合、作成される新しいテーブルはexternalになります。作成される表のタイプを識別するために、DESCRIBE FORMATTED句を使用できます。 詳細テーブルの説明の最後に、出力テーブルタイプは「管理テーブル」または「外部テーブル」のいずれかになります。

パーティションテーブルは、データを論理サブセグメントまたはパーティションに分割するのに役立ち、クエリのパフォーマ パーティションテーブルは、以下のように作成できます。/p>

CREATE EXTERNAL TABLE if not exists students
( roll_id Int,
name String,
Rank Int)
partitioned by (class Int)
Row format delimited fields terminated by ‘\t’

出力:

外部テーブルのパーティションまたは構造が変更された場合、このコマンドを使用することでメタデータ情報を更新できます。

MSCK REPAIR TABLE external_table_name

1。 パーティション化された外部表

パーティション化されていない外部表の作成時には、LOCATION句が必要です。 ただし、パーティション化された外部表の場合は必須ではありません。 LOCATION句とともにパーティションを追加するには、ALTER TABLE文が必要です。

ALTER TABLE students ADD PARTITION (class =10)
Location ‘here://master_server/data/log_messages/2012/01/02’;

ハイブv0.8から。0以降では、同じクエリに複数のパーティションを追加できます。 また、パーティションの場所は、古い場所からデータを移動または削除することなく、以下のクエリで変更することができます。

ALTER TABLE students_v2 partition( class = 10)
Set location ‘s2n://buckets/students_v2/10’;

パーティションを削除するには、以下のクエリが使用されます。

ALTER TABLE students DROP IF EXISTS PARTITION (class = 12);

このコマンドは、管理テーブルまたは内部テーブルのパーテ ただし、外部表の場合、データは削除されません。

2. 外部テーブルに対する操作SELECT、JOIN、ORDER BY、GROUP BY、CLUSTER BYなどの操作は、外部テーブルに実装されています。 外部テーブルを他のテーブルと簡単に結合して、複雑なデータ操作を実行できます。 パーティション分割、バケット化、およびインデックス作成の概念は、管理テーブルまたは内部テーブルと同じ方法で外部テーブルにも実装されます。 Hiveのすべての構成プロパティは、外部テーブルにも適用できます。 たとえば、skipを設定します。ヘッダ。ライン。 Count=1、データファイルからヘッダー行をスキップできます。HIVEの内部および外部テーブルでは、ORC、AVRO、TEXTFILE、SEQUENCE FILE、PARQUETなどのすべてのファイル形式がサポートされています。 テーブルの作成時には、位置マッピングを使用して列にデータを挿入し、その順序は維持されます。

外部テーブルのデータ型:外部テーブルでは、コレクションデータ型とプリミティブデータ型(integer、string、characterなど)もサポートされています。 コレクションデータ型(配列、構造体、マップなど)の要素の区切り文字を指定する必要があります。Hiveで外部テーブルを使用する場合はどうすればよいですか?通常、内部テーブルはHiveに作成されます。 ただし、特定のシナリオでは、外部テーブルが役立つ場合があります。 これらは次のとおりです。

  1. データがHiveまたはHDFSの場所の外に配置されている場合、外部テーブルを作成すると、テーブルを使用している可能性のある他のツールがこれらのファイルにロックをかけないので、外部テーブルを作成するのに役立ちます。
  2. 既存のテーブルにデータが存在しない場合(つまり、SELECT句を使用して)、外部テーブルを作成できます。
  3. Hiveがデータを所有したり、他のデータコントロールを持たせたくない場合は、外部テーブルを作成する必要があります。
  4. 外部テーブルを削除すると、基本データは削除されないため、外部テーブルは偶発的なデータの損失も防止します。 これは、ハイブのセキュリティ機能として機能します。 これが、TRUNCATEが外部テーブルでも機能しない理由です。

機能

Hiveには、管理対象テーブルまたは外部テーブルのいずれかでのみ使用できる特定の機能があります。 ARCHIVE/UNARCHIVE/TRUNCATE/CONCATENATE/MERGEのようなコマンドは、内部テーブルに対してのみ機能します。ACIDは、管理対象テーブルまたは内部テーブルに対してのみ機能します。

  • ACIDは、管理対象テーブルまたは内部テーブルに対してのみ機能しま
  • DROP句は、外部テーブルのメタデータのみを削除します。 ただし、内部テーブルの基になるデータも削除されます。
  • クエリ結果のキャッシュは、管理対象テーブルに対してのみ可能です。
  • RELY制約は、外部テーブルでのみ使用できます。
  • マテリアライズドビューの一部の機能は、管理対象テーブルに対してのみ機能します。
  • 結論

    このチュートリアルでは、Hiveで外部テーブルをいつ、どのように使用するかを見ました。 このチュートリアルのハイライトは、管理対象以外のテーブルに背景を作成し、ハイブの外部でデータを分析することです。

    推奨記事

    これは、Hiveの外部テーブルのガイドです。 ここでは、Hiveに外部テーブルを導入すること、および機能、およびクエリについて説明します。 また、他の関連記事を参照して詳細を学ぶこともできます–

    1. Hiveでのパーティショニング
    2. Hiveでのマップ結合
    3. Hiveデータ型
    4. Hiveインストール
    5. Hiveクラスターへのガイド
    0共有

    コメントを残す

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