1. 程式人生 > >hive (二) ----- hive的常用操作

hive (二) ----- hive的常用操作

並且 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的常用操作