hive 表分區操作


    hive的數據查詢一般會掃描整個表,當表數據太大時,就會消耗些時間,有時候我們只需要對部分數據感興趣,所以hive引入了分區的概念

   hive的表分區區別於一般的分布式分區(hash分區,范圍分區,一致性分區),hive的分區是比較簡單的。他是根據hive的表結構,分區的字段設置將數據按目錄存放起來,相當於簡單的索引
   hive表分區需要在表模式創建的時候指定模式才能使用,他的字段是虛擬的列,不存在表數據中。 表分區在表模式創建之后使用之前使用alert table 來添加具體的分區,才能使用
 
添加分區
alert table tableName add
partition(ds='2016-12-16',coutry='beiJing')
location='/opt/hive/beiJing/part2016-12-16'
partition(ds='2016-12-17',coutry='beiJing')
location='/opt/hive/beiJing/part2016-12-17'
刪除分區
alert table tableName drop partitionName,partitionName1,partitionName2
例:
alert table tableName drop partition(ds='2016-12-16',coutry='beiJing')
1)刪除分區會連元數據和數據一並刪除
2)在為表指定具體分區時,在創建表時必須要為表添加對應的模式,否則會拋出異常
3)分區的名稱不能與表屬性的名稱一樣
4)還可以創建多個分區,相當於多級索引的功能
 
在使用hsql向表中添加數據,如果hsql中的分區,在hdfs中沒有,則hive會根據hsql自動新建分區(可能有的hive版本不支持自動創建分區,這里使用的是2.1.0)
insert overwrite table zhangTest partition(sexual=2) select studentid, sex,address,email from student_3 where sex=0
 
 
刪除表
alert table drop tableName
刪除表將會數據和元數據一起刪除,如果定義了trash,那么刪除的數據將會到trash/current目錄下 。如果定義了外部表就只會刪除元數據,不會刪除數據
 
刪除和創建視圖
create view viewName [{col_name},....]
as select....
目前只有hive6.0之后的版本才有這個功能,視圖是只讀的,不能對其進行load/insert/alert操作。
視圖中有可能引用了order by 或者limit 子句,如果一個查詢語句引用了這樣一個視圖,那么會優先查詢視圖中的語句,然后返回結果按照視圖中的結果返回
drop vieww viewName//刪除指定的視圖
 
創建或刪除函數
creeate temporary funaction fun_name as classs_name//
drop temporary fun_name//
 
展示描述語句(顯示語句可以使用正則表達式進行匹配“*”,“|”“[]”)
show tables identifier_with_wildcards
顯示表或者分區擴展表
show table extended ..
顯示函數
show function "a"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM