hive (二) ----- hive的常用操作
阿新 • • 發佈:2019-01-04
並且 class cluster clu spa task group by partition mapr
一、hive操作
1.創建表
CREATE TABLE t3(id int,name string,age int) PARTITIONED BY (Year INT, Month INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,‘ ;
2.導出表結構+數據
EXPORT TABLE customers TO ‘/user/centos/tmp.txt‘;
3.排序
1)order全排序
order by 會對輸入做全局排序,因此只有一個reducer(多個reducer無法保證全局有序)。
只有一個reducer,會導致當輸入規模較大時,需要較長的計算時間。
select * from orders order by id asc ;
2)sort,map端排序,本地有序。
sort by不是全局排序,其在數據進入reducer前完成排序。
因此,如果用sort by進行排序,並且設置mapred.reduce.tasks>1, 則sort by只保證每個reducer的輸出有序,不保證全局有序。
select * from orders sort by id asc ;
3)distribute by
類似於mysql的group by,進行分區操作。
按照指定的字段對數據進行劃分到不同的輸出reduce文件中。
select cid , ... from orders distribute by cid sort by name ; //註意順序.
select id,orderno,cid from orders distribute by cid sort by cid desc ;
4)cluster by
除了具有 distribute by 的功能外還兼具 sort by 的功能。
但是排序只能是倒序排序,不能指定排序規則為asc 或者desc
cluster by ===> distribute by cid sort by cid
4.設置作業參數
set hive.exec.reducers.bytes.per.reducer=xxx //設置reducetask的字節數。 set hive.exec.reducers.max=0 //設置reduce task的最大任務數 set mapreduce.job.reduces=0 //設置reducetask個數。
5.函數
mysql>select concat(‘tom‘,1000) ;
$hive>select current_database(),current_user() ;
$hive>tab //查看幫助
hive (二) ----- hive的常用操作