【Hive】Hive 建表語句詳解

[TOC]

一宏赘、hql 建表語法格式

hql不區(qū)分大小寫览爵,[]里的屬性是可選屬性置鼻。

 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]  

二蜓竹、參數(shù)說明

  1. CREATE TABLE 創(chuàng)建一個指定名字的表。如果相同名字的表已經(jīng)存在俱济,則拋出異常;用戶可以用 IF NOT EXISTS 選項來忽略這個異常蛛碌。

  2. EXTERNAL 關(guān)鍵字可以讓用戶創(chuàng)建一個外部表,默認是內(nèi)部表蔚携。外部表在建表的必須同時指定一個指向?qū)嶋H數(shù)據(jù)的路徑(LOCATION),Hive 創(chuàng)建內(nèi)部表時酝蜒,會將數(shù)據(jù)移動到數(shù)據(jù)倉庫指向的路徑;若創(chuàng)建外部表亡脑,僅記錄數(shù)據(jù)所在的路徑堕澄,不對數(shù)據(jù)的位置做任何改變霉咨。在刪除表的時候,內(nèi)部表的元數(shù)據(jù)和數(shù)據(jù)會被一起刪除途戒,而外部表只刪除元數(shù)據(jù),不刪除數(shù)據(jù)棺滞。

  3. COMMENT 是給表字段或者表內(nèi)容添加注釋說明的。

  4. PARTITIONED BY 給表做分區(qū)继准,決定了表是否是分區(qū)表。

  5. CLUSTERED BY 對于每一個表(table)或者分區(qū)移必, Hive 可以進一步組織成桶,也就是說桶是更為細粒度的數(shù)據(jù)范圍劃分崔泵,Hive采用對列值哈希秒赤,然后除以桶的個數(shù)求余的方式?jīng)Q定該條記錄存放在哪個桶當中

  6. ROW FORMAT DELIMITED FIELDS TERMINATED BY ','憎瘸, 這里指定表存儲中列的分隔符,默認是 \001幌甘,這里指定的是逗號分隔符痊项,還可以指定其他列的分隔符。

  7. STORED AS SEQUENCEFILE|TEXTFILE|RCFILE鞍泉,如果文件數(shù)據(jù)是純文本,可以使用 STORED AS TEXTFILE咖驮,如果數(shù)據(jù)需要壓縮,使用 STORED AS SEQUENCEFILE训枢。

  8. LOCATION 定義 hive 表的數(shù)據(jù)在 hdfs 上的存儲路徑,一般管理表(內(nèi)部表不不要自定義)恒界,但是如果定義的是外部表,則需要直接指定一個路徑仗处。

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

3.1婆誓、 使用 create 命令

CREATE  TABLE `employee`(  
      `dept_no` int,   
      `addr` string,   
      `tel` string)
    partitioned by(statis_date string ) 
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ','

詳細參考上述建表說明。

可以使用describe formatted employee查看建表相關(guān)的各種配置屬性以及默認屬性洋幻。

3.2、 create table ...as select..(CTAS)

[AS select_statement] 這個語句是用來通過查詢已有的表來創(chuàng)建一張新表文留,這樣可以根據(jù)已有的表來創(chuàng)建子表,對于數(shù)據(jù)分析和優(yōu)化都是有很大的好處的燥翅。

create table employee1 
        as   
       select *  from employee where statis_date='20180229';
  1. 使用查詢創(chuàng)建并填充表骑篙,select 中選取的列名會作為新表的列名(所以通常是要取別名)靶端;
  2. 會改變表的屬性、結(jié)構(gòu)凛膏,比如只能是內(nèi)部表、分區(qū)分桶也沒了:
    • 目標表不允許使用分區(qū)分桶的猖毫,FAILED: SemanticException [Error 10068]: CREATE-TABLE-AS-SELECT does not support partitioning in the target table,對于舊表中的分區(qū)字段吁断,如果通過 select * 的方式镊折,新表會把它看作一個新的字段,這里要注意 ;
    • 目標表不允許使用外部表骂因,如 create external table … as select… 報錯 FAILED: SemanticException [Error 10070]: CREATE-TABLE-AS-SELECT cannot create external table炎咖;
    • 創(chuàng)建的表存儲格式會變成默認的格式 TEXTFILE 乘盼。
  3. 可以指定表的存儲格式,行和列的分隔符等俄烁。

3.3、 使用 like 創(chuàng)建相同結(jié)構(gòu)的表

CREATE TABLE LIKE
  • 用來復(fù)制表的結(jié)構(gòu)
  • 需要外部表的話页屠,通過 create external table like … 指定
  • 不填充數(shù)據(jù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市辰企,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌牢贸,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件潜索,死亡現(xiàn)場離奇詭異,居然都是意外死亡竹习,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門整陌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蔓榄,你說我怎么就攤上這事∩#” “怎么了逃魄?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵伍俘,是天一觀的道長邪锌。 經(jīng)常有香客問我癌瘾,道長,這世上最難降的妖魔是什么妨退? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮咬荷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘幸乒。我一直安慰自己懦底,他們只是感情好罕扎,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拱层,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宴咧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天掺栅,我揣著相機與錄音,去河邊找鬼氧卧。 笑死桃笙,一個胖子當著我的面吹牛沙绝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播闪檬,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼粗悯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤铺遂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后茎刚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡膛锭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了泉沾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妇押。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖敲霍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肩杈,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布扩然,位于F島的核電站艘儒,受9級特大地震影響夫偶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜兵拢,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一翻斟、第九天 我趴在偏房一處隱蔽的房頂上張望说铃。 院中可真熱鬧,春花似錦腻扇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚓峦。三九已至济锄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間霍转,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工避消, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人岩喷。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓恕沫,卻偏偏與公主長得像纱意,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子偷霉,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應(yīng)的列上鍵入重復(fù)值時,會觸發(fā)此異常类少。 O...
    我想起個好名字閱讀 5,320評論 0 9
  • 時間:2017-08-16 19:36:53來源:CSDN Hive 是基于Hadoop 構(gòu)建的一套數(shù)據(jù)倉庫分析系...
    majyer閱讀 1,481評論 0 2
  • Hive 是基于Hadoop 構(gòu)建的一套數(shù)據(jù)倉庫分析系統(tǒng),它提供了豐富的SQL查詢方式來分析存儲在Hadoop 分...
    三萬_chenbing閱讀 12,149評論 0 10
  • Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具信轿,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供類SQL查詢功能残吩。本...
    felix521閱讀 1,308評論 0 0
  • 快樂大數(shù)據(jù)第5次課 hive(1)工作原理Hive的執(zhí)行入口是Driver,執(zhí)行的SQL語句首先提交到Drive驅(qū)...
    快樂大數(shù)據(jù)閱讀 410評論 0 0