天天看點

Hadoop學習(10)—— Hive SQL語言:DDL建庫、建表

作者:技術閑聊DD

1 Hive SQL之資料庫與建庫

1.1 Hive資料模型總覽

Hadoop學習(10)—— Hive SQL語言:DDL建庫、建表

1.2 SQL中DDL文法的作用

  • 資料定義語言 (Data Definition Language, DDL),是SQL語言集中對資料庫内部的對象結構進行建立,删除,修改等的操作語言,這些資料庫對象包括database、table等。
  • DDL核心文法由CREATE、ALTER與DROP三個所組成。DDL并不涉及表内部資料的操作。

1.3 建立資料庫

  • 在Hive中,預設的資料庫叫做default,存儲資料位置位于HDFS的/user/hive/warehouse下。
  • 使用者自己建立的資料庫存儲位置是/user/hive/warehouse/database_name.db下。
  • 建立資料庫文法

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name

[COMMENT database_comment]

[LOCATION hdfs_path]

[WITH DBPROPERTIES (property_name=property_value, ...)];

COMMENT:資料庫的注釋說明語句

LOCATION:指定資料庫在HDFS存儲位置,預設/user/hive/warehouse/dbname.db

WITH DBPROPERTIES:用于指定一些資料庫的屬性配置。

案例:

create database if not exists hive_test
comment "hive測試庫"
with dbproperties ('createdBy'='Allen');           
Hadoop學習(10)—— Hive SQL語言:DDL建庫、建表

注意:如果需要使用location指定路徑的時候,最好指向的是一個新建立的空檔案夾。

1.4 選擇特定資料庫

切換目前會話使用哪一個資料庫進行操作。

use hive_test;           

1.5 删除資料庫

預設行為是RESTRICT,這意味着僅在資料庫為空時才删除它。

要删除帶有表的資料庫(不為空的資料庫),我們可以使用CASCADE進行強制删除。

2 Hive SQL之表與建表

2.1 表Table

建表文法樹(基礎)

CREATE TABLE [IF NOT EXISTS] [db_name.]table_name

(col_name data_type [COMMENT col_comment], ... )

[COMMENT table_comment]

[ROW FORMAT DELIMITED …];

資料類型

  • Hive資料類型指的是表中列的字段類型;
  • 整體分為兩類:原生資料類型(primitive data type)和複雜資料類型(complex data type)。
  • 最常用的資料類型是字元串String和數字類型Int。

分隔符指定文法

ROW FORMAT DELIMITED文法用于指定字段之間等相關的分隔符,這樣Hive才能正确的讀取解析資料。或者說隻有分隔符指定正确,解析資料成功,我們才能在表中看到資料。

Hadoop學習(10)—— Hive SQL語言:DDL建庫、建表
  • LazySimpleSerDe是Hive預設的,包含4種子文法,分别用于指定字段之間、集合元素之間、map映射 kv之間、換行的分隔符号。
  • 在建表的時候可以根據資料的特點靈活搭配使用。
Hadoop學習(10)—— Hive SQL語言:DDL建庫、建表

Hive預設分隔符

  • Hive建表時如果沒有row format文法指定分隔符,則采用預設分隔符;
  • 預設的分隔符是'\001',是一種特殊的字元,使用的是ASCII編碼的值,鍵盤是打不出來的。
  • 在vim編輯器中,連續按下Ctrl+v/Ctrl+a即可輸入'\001' ,顯示^A。
  • 在一些文本編輯器中将以SOH的形式顯示:

2.2 案例

建表

--建立資料庫并切換使用
create database if not exists hive_test;
use hive_test;
--ddl create table
create table t_archer(
id int comment "ID",
name string comment "英雄名稱",
hp_max int comment "最大生命",
mp_max int comment "最大法力",
attack_max int comment "最高物攻",
defense_max int comment "最大物防",
attack_range string comment "攻擊範圍",
role_main string comment "主要定位",
role_assist string comment "次要定位"
) comment "王者榮耀射手資訊"
row format delimited
fields terminated by "\t";           

建表成功之後,在Hive的預設存儲路徑下就生成了表對應的檔案夾;

把archer.txt檔案上傳到對應的表檔案夾下。

#執行指令把檔案上傳到HDFS表所對應的目錄下
hadoop fs -put archer.txt /user/hive/warehouse/hive_test.db/t_archer           
Hadoop學習(10)—— Hive SQL語言:DDL建庫、建表

3 show文法功能

  • Show相關的語句可以幫助使用者查詢相關資訊。
  • 比如我們最常使用的查詢目前資料庫下有哪些表 show tables。
1、顯示所有資料庫 SCHEMAS和DATABASES的用法 功能一樣
show databases;
show schemas;
2、顯示目前資料庫所有表
show tables;
SHOW TABLES [IN database_name]; --指定某個資料庫
3、查詢顯示一張表的中繼資料資訊
desc formatted t_archer;           
下一篇: PDB調試

繼續閱讀