Hive的表的創(chuàng)建(轉(zhuǎn)載)

創(chuàng)建表的三種方式

第一種創(chuàng)建方式:普通方式(最常用)

創(chuàng)建格式

# 指定標的類型和表的名稱

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

# 指定每列的名稱和類型

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

# 對表的說明

[COMMENT table_comment]

# 指定分區(qū)表的列名稱,列類型

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

# 指定每列的分隔符、數(shù)據(jù)類型的類型

[

[ROW FORMAT row_format]

[STORED AS file_format]

| STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]

]

# 指定數(shù)據(jù)文件存儲在HDFS的什么位置

[LOCATION hdfs_path]

# 表的屬性設(shè)置

[TBLPROPERTIES (property_name=property_value, ...)]

# 子查詢

示例(創(chuàng)建員工表和部門表)

加載數(shù)據(jù)

格式:load data [local] inpath 'filepath' [overwrite] into table table_name [partition(partcol=val1,partcol2=val2...)]

參數(shù)解釋:local表示是否從本地文件系統(tǒng)尋找文件,默認的是從hdfs上尋找文件;overwrite表示是否覆蓋表中已有的數(shù)據(jù)。

hive (test_db)> load data local inpath '/opt/datas/emp.txt' overwrite into table emp;

hive (test_db)> load data local inpath '/opt/datas/dept.txt' overwrite into table dept;

第二種創(chuàng)健方式:把子查詢的結(jié)果作為一張新表。適用于需要保存查詢的中間結(jié)果。

創(chuàng)建格式

與第一種格式相同,需要注意 子查詢要放在最后。

示例

第三種創(chuàng)建方式:復制另外一個表的結(jié)構(gòu)。

創(chuàng)建格式

create table tablename1 like tablename2;創(chuàng)建表1而且和表2 的表結(jié)構(gòu)和屬性完全一樣,但是不復制表2中的數(shù)據(jù),所以表1的數(shù)據(jù)為空。

示例

Hive兩種表類型

如果在創(chuàng)建表時不指定external關(guān)鍵字,則默認的是創(chuàng)建管理表(內(nèi)部表),內(nèi)部表對應(yīng)的目錄必須存儲在hive的數(shù)據(jù)倉庫中。

還有一種表是指定external關(guān)鍵字的表,即外部表,外部表的數(shù)據(jù)文件可以自己指定目錄(不在局限于hive數(shù)據(jù)倉庫中),指定對的目錄下面的數(shù)據(jù)文件及為這個表的數(shù)據(jù)文件。

如何創(chuàng)建外部表。location指定的是hdfs上的目錄,該目錄表示的是這個外部表目錄,這個目錄下的文件即為這個表的數(shù)據(jù)文件。

內(nèi)部表和外部表的區(qū)別

執(zhí)行刪除表命令操作時,對于內(nèi)部表,會刪除元數(shù)據(jù)和存儲的數(shù)據(jù),而對于外部表只會刪除元數(shù)據(jù)庫里的元數(shù)據(jù)信息,而不會刪除存儲的數(shù)據(jù)。這樣可以防止多個部門同時使用一個表時,一個部門刪除數(shù)據(jù)文件導致其他部門不能使用的情況。方便共享數(shù)據(jù)。

內(nèi)部表默認存儲在數(shù)據(jù)倉庫中,而外部表一般通過location自己指定目錄,便于存放在倉庫外。

Hive分區(qū)表

為什么有分區(qū)表?

如果把一年或者一個月的日志文件存放在一個表下,那么數(shù)據(jù)量會非常的大,當查詢這個表中某一天的日志文件的時候,查詢速度還非常的慢,這時候可以采用分區(qū)表的方式,把這個表根據(jù)時間點再劃分為小表。這樣劃分后,查詢某一個時間點的日志文件就會快很多,因為這是不需要進行全表掃描。

hive中的分區(qū)表

hive中的分區(qū)是根據(jù)“分區(qū)列”的值對表的數(shù)據(jù)進行粗略的劃分,hive中一個表對應(yīng)一個目錄,再根據(jù)分區(qū)列在這個表目錄下創(chuàng)建子目錄,每個子目錄名就是分區(qū)列的名字。分區(qū)列定義與表中字段相似,但是與表中的字段無關(guān),是獨立的列。這樣就加快了數(shù)據(jù)查詢的速度,因為不會對這個表中進行全盤掃描了。

示例

創(chuàng)建分區(qū)表

向分區(qū)表加載數(shù)據(jù)

查看分區(qū)表

查詢分區(qū)表中數(shù)據(jù)

作者:心_的方向

鏈接:http://www.itdecent.cn/p/265456b606dc

來源:簡書

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容