建表語法
create
[external]
table[if
notexists
] 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不常用,對桶中的乙個或多個列另外排序
row format
delimited [
fields
terminated
bychar
][collection items terminated
bychar
][map keys
terminated
bychar][
lines
terminated
bychar
]| 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進行行物件的序列與反序列化。
8. stored as指定儲存檔案型別
常用的儲存檔案型別:sequencefile(二進位制序列檔案)、textfile(文字)、rcfile(列式儲存格式檔案)
如果檔案資料是純文字,可以使用stored as textfile。如果資料需要壓縮,使用 stored as sequencefile。
9. location :指定表在hdfs上的儲存位置。
10. as:後跟查詢語句,根據查詢結果建立表。
11. like允許使用者複製現有的表結構,但是不複製資料。
理論預設建立的表都是所謂的管理表,有時也被稱為內部表。因為這種表,hive會(或多或少地)控制著資料的生命週期。hive預設情況下會將這些表的資料儲存在由配置項hive.metastore.warehouse.dir(例如,/user/hive/warehouse)所定義的目錄的子目錄下。 當我們刪除乙個管理表時,hive也會刪除這個表中資料。管理表不適合和其他工具共享資料
案例實操
普通建立表
create
table
ifnot
exists student2(
id int
, name string
)row format delimited fields
terminated
by'\t'
stored as textfile
location '/user/hive/warehouse/student2'
;
根據查詢結果建立表(查詢的結果會新增到新建立的表中)
create
table
ifnot
exists student3 as
select id, name from student;
根據已經存在的表結構建立表
create
table
ifnot
exists student4 like student;
查詢表的型別
hive (
default
)>
desc formatted student2;
table
type: managed_table
理論
因為表是外部表,所以hive並非認為其完全擁有這份資料。刪除該錶並不會刪除掉這份資料,不過描述表的元資料資訊會被刪除掉
管理表和外部表的使用場景
案例實操
分別建立部門和員工外部表,並向表中匯入資料
上傳資料到hdfs
hive (
default
)> dfs -mkdir /student;
hive (
default
)> dfs -put /opt/module/datas/student.txt /student;
建表語句
hive (
default
)>
create external table stu_external(
id int
, name string)
row format delimited fields
terminated
by'\t'
location '/student'
;
檢視建立的表
hive (
default
)>
select
*from stu_external;
okstu_external.id stu_external.name
1001 lisi
1002 wangwu
1003 zhaoliu
檢視**式化資料
hive (
default
)>
desc formatted dept;
table
type: external_table
刪除外部表
hive (
default
)>
drop
table stu_external;
外部表刪除後,hdfs中的資料還在,但是metadata中stu_external的元資料已被刪除
查詢表的型別
hive (
default
)>
desc formatted student2;
table
type: managed_table
修改內部表student2為外部表
alter
table student2 set tblproperties(
'external'
='true'
);
查詢表的型別
hive (
default
)>
desc formatted student2;
table
type: external_table
修改外部表student2為內部表
alter
table student2 set tblproperties(
'external'
='false'
);
查詢表的型別
hive (
default
)>
desc formatted student2;
table
type: managed_table
csdn:
HiveDDL資料定義 資料庫操作
create database if notexists database name comment database comment location hdfs path with dbproperties property name property value,建立乙個資料庫,資料庫在hdfs...
大資料之Hive DDL資料定義 一
1.建立資料庫 01.建立乙個資料庫,資料庫在hdfs上的預設儲存路徑是 user hive warehouse db hive default create database db hive 02.建立乙個資料庫,指定資料庫在hdfs上存放的位置 hive default create datab...
Hive DDL資料定義之修改資料庫
使用者可以使用alter database命令為某個資料庫的dbproperties設定鍵 值對屬性值,來描述這個資料庫的屬性資訊。資料庫的其他元資料資訊都是不可更改的,包括資料庫名和資料庫所在的目錄位置。hive default alter database db hive set dbprope...