hive從入門到放棄(二)——DDL資料定義

Max_Lyu發表於2022-03-16

前一篇文章,介紹了什麼是 hive,以及 hive 的架構、資料型別,沒看的可以點選閱讀:hive從入門到放棄(一)——初識hive
今天講一下 hive 的 DDL 資料定義

建立資料庫

CREATE DATABASE [IF NOT EXISTS]① database_name
[COMMENT database_comment]②
[LOCATION hdfs_path]③
[WITH DBPROPERTIES (property_name=property_value, ...)]④;

①若存在則不建立,不存在則建立

②資料庫註釋

③資料庫對映到HDFS的資料路徑

④可以增加其它資料庫配置

查詢資料庫

show databases --顯示資料庫 
desc database db_name  --檢視資料庫資訊
desc database extended db_name  --檢視資料庫詳細資訊

修改資料庫屬性

alter database db_hive 
set dbproperties('createtime'='20170830');

使用者可以使用 ALTER DATABASE 命令為某個資料庫的 DBPROPERTIES 設定鍵-值對屬性值,
來描述這個資料庫的屬性資訊。

刪除資料庫

 drop database [if exists] database_name [cascade]

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 | like⑩ table_name]

① EXTERNAL關鍵字可以建立一個外部表,當刪除表的時候,只刪除描述表的後設資料,不刪除存在於 HDFS 上的資料;

與之相反的是內部表,或者叫管理表,管理表在刪除的時候會把 HDFS 上的資料一起刪除;

這兩者可以互相轉換:
alter table table_name set tblproperties('EXTERNAL'='TRUE');

② PARTITIONED BY 用以建立分割槽表,需要指定列用於分割槽,一個分割槽對應一個目錄,可以提高效率;

③ CLUSTERED BY 建立分桶表,分桶將整個資料按照某列屬性值的 hash 值進行區分;

④ SORTED BY 對桶中的一個或多個列另外排序;

⑤ ROW FORMAT 用於指定資料切分格式;官方的用法:

⑥ STORED AS 用以指定儲存檔案型別,比如 parquet、textfile 等;

⑦ LOCATION 指定檔案儲存在 HDFS 上的路徑;

⑧ TBLPROPERTIES 可用於新增表的其它屬性,一般是鍵值對形式;

⑨ AS 後面接的是查詢語句,根據查詢結果建立表;

⑩ LIKE 後接表名,複製表結構,但不復制資料。

修改表

-- 更新列
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 是代表新增一欄位,欄位位置在所有列後面(partition 列前);REPLACE 則是表示替換表中所有欄位。

刪除表

drop table table_name;

小結

本文主要展示了 hive 的 DDL 用法,包括資料庫和表的語法。實際上這裡面有部分內容是簡單概括,比如分割槽分桶表的含義作用以及用法,這些後面的文章我會展開描述,可以持續關注【大資料的奇妙冒險】,獲取更多知識!

相關文章