HiveDDL資料定義 建立表

2021-10-05 12:26:09 字數 4607 閱讀 8112

建表語法

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...