一.標準hql建表語法格式1.官方標準語法:(hql不區分大小寫,下麵[]里的屬性是可選屬性) 具體參考官網界面:HIVE官網建表說明文檔 二.標準建表語法各項參數說明1.CREATE TABLE 創建一個指定名字的表。如果相同名字的表已經存在,則拋出異常;用戶可以用 IF NOT EXISTS 選 ...
一.標準hql建表語法格式
1.官方標準語法:(hql不區分大小寫,下麵[]里的屬性是可選屬性)
具體參考官網界面:HIVE官網建表說明文檔
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]
二.標準建表語法各項參數說明
1.CREATE TABLE 創建一個指定名字的表。如果相同名字的表已經存在,則拋出異常;用戶可以用 IF NOT EXISTS 選項來忽略這個異常,一般也可以不加這個IF NOT EXISTS語句,最多拋出錯誤。
2.EXTERNAL關鍵字可以讓用戶創建一個外部表,預設是內部表,外部表在建表的必須同時指定一個指向實際數據的路徑(LOCATION),Hive 創建內部表時,會將數據移動到數據倉庫指向的路徑;若創建外部表,僅記錄數據所在的路徑,不對數據的位置做任何改變。在刪除表的時候,內部表的元數據和數據會被一起刪除,而外部表只刪除元數據,不刪除數據。
3.COMMENT 後面跟的字元串是給表欄位或者表內容添加註釋說明的,雖然它對於表之間的計算沒有影響,但是為了後期的維護,所以實際開發都是必須要加COMMENT的。
4. PARTITIONED BY其實是給表做分區,決定了表是否是分區表。Hive中所謂分區表就是將表裡新增加一個欄位,就是分區的名字,這樣你在操作表中的數據時,可以按分區欄位進行過濾。具體分區解釋後面博客有說明。
5.[ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ] 這裡指定表存儲中各列的劃分格式,預設是\001,這裡指定的是逗號分隔符,還可以指定其他列的分隔符,看實際需求
6.STORED AS SEQUENCEFILE|TEXTFILE|RCFILE如果文件數據是純文本,可以使用 STORED AS TEXTFILE。如果數據需要壓縮,使用 STORED AS SEQUENCEFILE。這裡主要牽涉到hive存儲的三種文件格式,具體區別參考後續博客。
7.CLUSTERED BY對於每一個表(table)或者分區, Hive可以進一步組織成桶,也就是說桶是更為細粒度的數據範圍劃分。Hive也針對某一列進行桶的組織。Hive採用對列值哈希,然後除以桶的個數求餘的方式決定該條記錄存放在哪個桶當中
8.LOCATION 其實是定義hive表的數據在hdfs上的存儲路徑,一般管理表(內部表不不要自定義),但是如果定義的是外部表,則需要直接指定一個路徑。實際上不指定也沒事,會使用預設路徑