一、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 //查看帮助
原文地址:https://www.cnblogs.com/water-sky/p/10221248.html
时间: 2024-11-04 11:01:11