Hive之Table

創建表

創建表的語句

第一種

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]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]
  [SKEWED BY (col_name, col_name, ...)
     ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
     [STORED AS DIRECTORIES]
  [
   [ROW FORMAT row_format] 
   [STORED AS file_format]
     | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]
  ]
  [LOCATION hdfs_path]
  [TBLPROPERTIES (property_name=property_value, ...)]

說明:
1. IF NOT EXISTS:只會判斷表名是否存在,不會判斷表的結構是不是一樣的,也就意味這只要有相同的表名的表存在,那麼就不會創建新的表了
2. db_name:這個屬性可以使用也可以不使用,假如當前的活動的數據庫不是想要創建表的數據庫,那麼可以使用
3. data_type:hive中屬性的類型,主要有下面幾種:

 primitive_type,array_type,map_type,struct_type,union_type

 array_type:ARRAY < data_type >

 map_type:MAP < primitive_type, data_type >

 struct_type:STRUCT < col_name : data_type [COMMENT col_comment], ...>

 //union,類似於C語言中的union,每一個union單元的值只解析成後面所有類型中的一種
 union_type:UNIONTYPE < data_type, data_type, ... >
  1. PARTITIONED BY:詳解partition
  2. CLUSTERED BY:分桶
  3. EXTERNAL:外部表,默認的情況下,表的數據會被存放在${hive.metastore.warehouse.dir}/database_name/table_name 路徑下,但是使用了EXTERNAL,那麼我們可以創建一個外部表,數據可以存放在自己指定的地方,通過location關鍵字指定。刪除外部表的時候並不會刪除掉表中的數據,不過描述表的元數據信息會被刪除(刪除表結構,不刪除表的數據)

第二種

#這種方式只會創建表的結構
create table table_name like existing_table_name

#

第三種

#創建表的結構,並且從原表獲取數據插入到新表中
create table table_name as select column_name from existing_table_name

查詢數據庫中有哪些表

show tables;
//當我們不在某一個數據庫下的時候,我們還是可以列舉指定數據庫下的表的:
show tables in db01;
//可以使用正則表達式來過濾出所需要的表名
show tables 'db01.*'

查詢table的元數據信息

describe extended db01.employees;
//使用formatted代替extended關鍵字,可以得到更爲可讀詳細的信息,一般使用Formatted較多
describe formatted db01.employees;
//查詢某一個字段的信息,只需要在表名後面加上字段名就可以了
describe db01.employees.salary

刪除表

DROP TABLE [IF EXISTS] table_name;

說明:
如果用戶開啓了Hadoop的回收站的功能,那麼數據將會被轉移到用戶在hdfs用戶根目錄下的.Trash目錄下,如果想要開啓這個功能,只需要設置fs.trash.interval的值設置成一個合理的值就可以了,這個值是回收站檢查點的間隔時間,過了這個時間就會清除.Trash目錄下的文件

修改表

//重命名錶
ALTER TABLE table_name RENAME TO new_table_name;
//修改表的屬性
ALTER TABLE table_name SET TBLPROPERTIES table_properties;
//修改表的描述信息
ALTER TABLE table_name SET TBLPROPERTIES ('comment' = new_comment);

詳細查看官方文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章