[ビッグデータ] Hive シリーズ - Hive-DDL データ定義

図書館運営

データベースを作成する

CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (
	property_name=property_value, 
	...
	)
];
  1. データベースを作成します。HDFS 上のデータベースのデフォルトのストレージ パスは /hive/warehouse/*.db です。
 create database hive_nb; 
  1. 作成するデータベースが既に存在するというエラーを避けるため、存在しない場合の判定を追加します。(標準的な文言)
 create database if not exists hive_nb;
  1. データベースを作成し、データベースが HDFS 上に保存される場所を指定します
 create database hive_nb location '/hive_nb.db'; 

クエリデータベース

データベースを表示

show databases; 

表示されるデータベースをフィルタリングする

show databases like 'hive_nb*'; 

データベースの詳細を表示する

データベース情報を表示する

desc database hive_nb;

データベースの詳細を表示、拡張

desc database extended hive_nb; 

現在のデータベースを切り替える

use hive_nb;

データベースを変更する

ユーザーは、ALTER DATABASE コマンドを使用して、特定のデータベースの DBPROPERTIES のキーと値のペアのプロパティ値を設定し、このデータベースのプロパティ情報を記述することができます。

alter database hive_nb
set dbproperties('createtime'='20230313');

データベースを削除する

空のデータベースを削除する

drop database hive_nb; 

削除されたデータベースが存在しない場合は、if doesn't を使用してデータベースが存在するかどうかを判断することをお勧めします。

drop database if exists hive_nb;

空ではないデータベースを削除する

データベースが空でない場合は、cascade コマンドを使用して強制的に削除できます。

drop database hive_nb cascade;

テーブル操作

テーブル作成構文

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...)
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] [ROW FORMAT row_format]
[STORED AS file_format] [LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)] [AS select_statement]

フィールドの説明

  • CREATE TABLE は、指定された名前でテーブルを作成します。同じ名前のテーブルがすでに存在する場合、例外がスローされます。ユーザーは IF NOT EXISTS オプションを使用してこの例外を無視できます。

  • EXTERNAL キーワードを使用すると、ユーザーは外部テーブルを作成できます。テーブルを作成するとき、実際のデータを指すパス (LOCATION) を指定できます。テーブルを削除すると、メタデータと内部テーブルのデータが一緒に削除されます。外部テーブル データではなくメタデータのみを削除します。

  • COMMENT: テーブルと列にコメントを追加します。

  • PARTITIONED BY パーティションテーブルの作成

  • CLUSTERED BY はバケットテーブルを作成します

  • SORTED BY は一般的には使用されず、バケット内の 1 つ以上の列が追加で並べ替えられます。

  • 行形式区切り [フィールドは文字で終了] [コレクション項目は文字で終了] [マップキーは文字で終了] [行は文字で終了]
    | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, …)]

ユーザーはテーブルの作成時に SerDe をカスタマイズしたり、組み込みの SerDe を使用したりできます。ROW
FORMAT または ROW FORMAT DELIMITED が指定されていない場合は、組み込みの SerDe が使用されます。テーブルを作成するとき、ユーザーはテーブルの列を指定する必要もあります。テーブルの列を指定するとき、ユーザーはカスタム SerDe も指定します。Hive は SerDe を通じてテーブルの特定の列データを決定します。

SerDe は Serialize/Deserilize の略称で、Hive は行オブジェクトのシリアル化と逆シリアル化に Serde を使用します。

  • STORED AS ストレージ ファイル タイプを指定します。 一般的に使用されるストレージ ファイル タイプ: SEQUENCEFILE (バイナリ シーケンス ファイル)、TEXTFILE (テキスト)、RCFILE (カラム
    ストレージ フォーマット ファイル)

ファイルデータがプレーンテキストの場合は、STORED AS TEXTFILE を使用できます。データを圧縮する必要がある場合は、STORED AS SEQUENCEFILE を使用します。

  • LOCATION : HDFS 上のテーブルの保存場所を指定します。

  • AS: クエリ結果に基づいてテーブルを作成するクエリ ステートメントが続きます。

  • LIKE を使用すると、ユーザーは既存のテーブル構造をコピーできますが、データはコピーできません。

テーブルタイプ

Hive によって管理されるテーブルは、内部テーブル外部テーブルに分かれています。

デフォルトで作成されるテーブルはいわゆる管理テーブルであり、内部テーブルと呼ばれることもあります。この種のテーブルにより、Hive は (多かれ少なかれ) データのライフ サイクルを制御します。デフォルトでは、Hive はこれらのテーブルのデータを、構成項目 hive.metastore.warehouse.dir で定義されたディレクトリのサブディレクトリ (/hive/warehouse など) に保存します。管理テーブルを削除すると、Hive はこのテーブル内のデータも削除します。管理テーブルは他のツールとのデータ共有には適していません。

外部テーブルの場合、Hive はそれ自体がデータによって完全に所有されているとはみなしません。テーブルを削除しても、実際に保存されているデータは削除されませんが、テーブルを説明するメタデータ情報は削除されます。

外部テーブルを作成するときは、以下を追加する必要がありますexternal

create external table if not exists computer( no int,
name string, price double
)
row format delimited fields terminated by '\t';

管理テーブルと外部テーブル間の変換

ルックアップテーブルの種類

desc formatted phone; 

内部テーブル電話を外部テーブルに変更する

alter table phone set tblproperties('EXTERNAL'='TRUE');

外部テーブル コンピュータを内部テーブルに変更する

alter table computer set tblproperties('EXTERNAL'='FALSE');

テーブルを変更する

テーブルの名前を変更する

文法

ALTER TABLE table_name RENAME TO new_table_name

ケース

alter table car rename to big_car;

列情報の追加/変更/置換

文法

コラムを更新

ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name]

列の追加と置換

ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)

注: ADD は新しいフィールドを追加することを意味し、フィールドの位置はすべての列の後ろ (パーティション列の前) にあり、
REPLACE はテーブル内のすべてのフィールドを置き換えることを意味します。

ケース

クエリテーブルの構造

desc car;

列を追加

alter table car add columns(desc string); 

コラムを更新

alter table car change column desc desc_detail string;

列を置き換える

alter table car replace columns(no string, name string, price string);

テーブルの削除

drop table car;

記事をご覧になっている方のお役に立てれば幸いです、注目、コメント、お気に入りを忘れずによろしくお願いします

おすすめ

転載: blog.csdn.net/u013412066/article/details/129485054