Hive表操作一
Hive表操作一 *文本文件 -CSV:以逗號分隔的文本文件 -TSV:以製表符分隔的文本文件 這兩種文件格式Hive都支援,但是有個缺點就是用戶要對文本文件中那些不需要作為分隔符處理的逗號或者製表符格外小心 *創建表 CREATE TABLE語句遵循SQL語法慣例,但比較靈活,可定義表的數據文件存儲在什麼位置,使用什麼存儲格式等 eg:CREATE TABLE IF NOT EXISTS tmp.table1( userId string COMMENT '用戶ID', name string COMMENT '用戶姓名', createtime string COMMENT '創建時間' ) COMMENT '用戶表' TBLPROPERTIES ('creator'='yy', 'created_at'='2018-07-23 20:00:00', …) LOCATION '/user/hive/warehouse/tmp/table1'; 對以上語句分析: 1.如果用戶當前資料庫不是要建表的目標資料庫,可以在表明前增加庫名來進行指定tmp.table1 2.增加 IF NOT EXISTS,若表存在,Hive會忽略後面的建表語句,而且不會有提示,所以第一次建表 IF NOT EXISTS 會有用 3.但需要注意是的,如果已存在的表和這個表模式不一樣,Hive不會做出提示,如果要用新表模式需刪除原表,然後重新建表。或者修改原表。 4.一般情況下,TBLPROPERTIES的主要作用是按鍵值對格式為表增加額外的說明文檔 SHOW TBLPROPERTIES table_name命令,用於列出表的TBLPROPERTIES屬性資訊 5.Hive建表時會自動增加兩個屬性:last_modified_by(保存最後修改這個表的用戶的用戶名) last_modified_time(保存最後一次修改的時間) 6.LOCATION指定一個存儲路徑,這個例子我們使用了默認路徑,Hive默認將創建的表的目錄放置在該表所屬資料庫後 但defult庫是個例外,他在/user/hive/warehouse下沒有對應庫目錄,所以defult庫中的表目錄直接位於/user/hive/warehouse目錄後(明確指定例外) *拷貝表(只拷貝表模式,不拷貝數據) eg: CREATE TABLE IF NOT EXISTS tmp.table2 LIKE tmp.table1; *列舉表 –在該庫下列舉該庫下的所有表 eg:hive >USE tmp; hive > SHOW TABLES; table1 table2 table3 –不在該庫下列舉該庫下的所有表 eg:hive >USE default; hive > SHOW TABLES IN tmp; table1 table2 table3 註:上周提到過的使用正則表達式查詢和 IN databas_name ,這兩個功能不支援同時使用 *刪除表 eg:DROP TABLE IF EXISTS table1; 對於內部表,表的元數據資訊和表內的數據都會被刪除 對於外部表,表的元數據資訊會被刪除,但是表中的數據不會被刪除
END