この記事では主にHiveのデータベース定義言語について説明します。関連するコンテンツをもっと見るには、「繭を壊して蝶になる-ビッグデータ」の列に注目してください。
目次
1つは、データベースです。
1.1データベースを作成する
CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_comment] # 数据库注释
[LOCATION hdfs_path] # 指定数据库存放在hdfs上的位置
[WITH DBPROPERTIES (property_name=property_value, ...)]; # 属性参数
1.2データベースの表示
show databases;
show databases like 'xz*';
1.3データベースの詳細を表示する
desc database xzw;
desc database extended xzw;
1.4データベースの切り替え
1.5データベースを変更する
ユーザーは、ALTER DATABASEコマンドを使用して、データベースのキーと値のペアの属性値を設定し、このデータベースの属性情報を記述することができます。データベース名やデータベースが配置されているディレクトリの場所など、データベースの他のメタデータ情報は変更できません。
alter database xzw set dbproperties('createtime'='20201213');
1.6データベースを削除する
drop database [if exists] database_name;
カスケードコマンドを使用して、データベースを強制的に削除することもできます。
drop database database_name cascade;
第二に、データシート
2.1テーブルを作成する
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]
表のフィールドは次のとおりです。
(1)CREATE TABLE:指定した名前でテーブルを作成します。同じ名前のテーブルがすでに存在する場合、例外がスローされます。ユーザーは、IF NOTEXISTSオプションを使用してこの例外を無視できます。
(2)EXTERNAL:キーワードにより、ユーザーは外部テーブルを作成できます。テーブルを作成するときに、実際のデータへのパス(LOCATION)を指定できます。テーブルが削除されると、内部テーブルのメタデータとデータが削除されます。外部テーブルはメタデータのみを削除し、データは削除しません。
(3)コメント:テーブルと列にメモを追加します。
(4)PARTITIONED BY:パーティションテーブルを作成します。
(5)CLUSTERED BY:バケットテーブルを作成します。
(6)並べ替え:一般的には使用されません。バケット内の1つ以上の列が個別に並べ替えられます。
(7)行形式の区切り[charで終了するフィールド] [charで終了するコレクションアイテム] [charで終了するマップキー] [charで終了する行] | SERDE serde_name [WITH SERDEPROPERTIES(property_name = property_value、property_name =)]: SerDeをカスタマイズするか、テーブルを作成するときに組み込みのSerDeを使用できます。ROWFORMATまたはROWFORMAT DELIMITEDが指定されていない場合、組み込みのSerDeが使用されます。テーブルを作成するとき、ユーザーはテーブルの列も指定する必要があります。テーブルの列を指定するとき、ユーザーはカスタムSerDeも指定します。HiveはSerDeを使用してテーブルの特定の列データを決定します。SerDeはSerialize / Deserilizeの略語で、HiveはSerdeを使用して行オブジェクトをシーケンスおよび逆シリアル化します。
(8)STORED ASは、ストレージファイルタイプを指定します。一般的に使用されるストレージファイルタイプ:SEQUENCEFILE(バイナリシーケンスファイル)、TEXTFILE(テキスト)、RCFILE(列ストレージ形式ファイル)。ファイルデータがプレーンテキストの場合は、STORED ASTEXTFILEを使用できます。データを圧縮する必要がある場合は、STORED ASSEQUENCEFILEを使用してください。
(9)LOCATION:HDFS上のテーブルの保存場所を指定します。
(10)AS:クエリステートメントに続いて、クエリ結果に基づいてテーブルを作成します。
(11)LIKEを使用すると、ユーザーは既存のテーブル構造をコピーできますが、データはコピーされません。
2.2 内部表
管理テーブルとも呼ばれる内部テーブルは、デフォルトで作成されるテーブルです。デフォルトでは、Hiveはこれらのテーブルのデータを構成アイテムhive.metastore.warehouse.dirで定義されたディレクトリーのサブディレクトリーに保管します。内部テーブルを削除すると、Hiveはこのテーブルのデータも削除します。
2.2.1例
1.内部テーブルを作成します
create table if not exists inner_table(
id int,
name string
)
row format delimited fields terminated by '\t';
2.次のコマンドでテーブルタイプを表示します
=
2.3 外部表
テーブルは外部テーブルであるため、Hiveはこのデータを完全に所有しているとは考えていません。したがって、テーブルを削除してもこのデータは削除されませんが、テーブルを説明するメタデータ情報は削除されます。
2.3.1例
1.外部テーブルを作成します。渡す場合、テーブル作成ステートメントの後にlocation属性が続き、HDFS上のデータの保存場所を指定します。
create external table outer_table(
id int,
name string
)
row format delimited fields terminated by '\t';
2.次の方法でテーブルのタイプを表示します
2.4内部テーブルと外部テーブルの相互変換
内部テーブルと外部テーブルは、次のコマンドを使用して相互に変換できます。
内部表转外部表:
alter table test set tblproperties('EXTERNAL'='TRUE');
外部表转内部表:
alter table test set tblproperties('EXTERNAL'='FALSE');
上記のコードの括弧内の内容は固定された表現であり、自由に小文字に変更することはできないことに注意してください。
2.5パーティションテーブル
パーティションテーブルは、実際にはHDFSファイルシステム上の独立したフォルダーに対応しており、パーティションのすべてのデータファイルはこのフォルダーの下にあります。Hiveのパーティションはサブディレクトリであり、ビジネスニーズに応じて大きなデータセットを小さなデータセットに分割します。クエリを実行するときは、WHERE句の式を使用してクエリに必要な指定のパーティションを選択すると、パーティション化によってクエリの効率が大幅に向上します。注:パーティションのフィールドをテーブルの既存のフィールドにすることはできません。
create table partition_tab(
id int,
name string
)
partitioned by (rq string)
row format delimited fields terminated by '\t';
1.次のコマンドを使用して、データをパーティションテーブルにロードします。
load data local inpath '/root/files/stu.txt' into table xzw.partition_tab partition(rq='202012');
2.次のコマンドを使用して、パーティションテーブルのデータをクエリします。
select * from partition_tab where rq='202012';
3.パーティションを増やします
增加单个分区:
alter table partition_tab add partition(rq='202011');
增加多个分区:
alter table partition_tab add partition(rq='202011') partition(rq='202010');
4.パーティションを削除します
删除单个分区:
alter table partition_tab drop partition (rq='202010');
删除多个分区:
alter table partition_tab drop partition (rq='202010'), partition (rq='202011');
5.パーティションテーブルにパーティションがいくつあるかを確認します
show partitions partition_tab;
6.パーティションテーブルはセカンダリパーティションを作成できます
create table partition_tab(
id int,
name string
)
partitioned by (rq string, loc string)
row format delimited fields terminated by '\t';
7.パーティションテーブルをデータにリンクするいくつかの方法
(1)まず、hdfsに対応するパーティションにデータをアップロードしてから、パーティションテーブルを修復します。修復コマンドは次のとおりです。
msck repair table partition_tab;
(2)最初にデータをアップロードしてから、パーティションを追加します。
2.6テーブルの変更
2.6.1テーブル名を変更する
ALTER TABLE table_name RENAME TO new_table_name;
2.6.2列情報の変更
1、更新列
ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name]
2、增加列
ALTER TABLE table_name ADD COLUMNS (col_name data_type [COMMENT col_comment], ...)
3、替换列
ALTER TABLE table_name REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)
2.7テーブルを削除する
drop table tab_name;
上記は、この記事のHive DDLデータ定義の全内容です。プロセスでどのような問題が発生しましたか。メッセージを残して、どのような問題が発生したかを確認させてください。