第十六小节:Hive表数据的加载方式
1.加载本地数据文件到hive表中
load data local inpath '/opt/datas/order.txt' into table db_hive.order;
2.加载HDFS文件到hive表中
load data inpath '/opt/datas/order.txt' into table db_hive.order;
3.加载数据覆盖表中已有的数据
load data inpath '/opt/datas/order.txt' overwrite into table db_hive.order;
4.创建表时通过select加载数据
create table order as select * from nopartition;
5.创建表时,通过insert 加载数据
create table order like nopartition;insert into order select * from nopartition;
6.创建表时,通过location指定的数据目录加载
1)创建数据表目录2)将数据文件放到指定的目录3)创建表并location指定数据目录
第十七小节:Hive结果数据的保存方式
1.结果数据保存到本地文件中
//以默认分隔方式生成本地文件INSERT OVERWRITE LOCAL DIRECTORY '/opt/datas/kfk/'SELECT * FROM order;//以制表符为分隔符生成本地文件INSERT OVERWRITE LOCAL DIRECTORY '/opt/datas/kfk/'ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'SELECT * FROM order;
2.结果数据保存到hdfs中
INSERT OVERWRITE DIRECTORY '/user/kfk/datas/order/'SELECT * FROM order;
3.管道符
bin/hive -e "select * from db_hive.order;" > /opt/datas/kfk/order.txt
第十八小节:导入导出备份表
1.export :
//将表导出指定HDFS目录EXPORT TABLE db_hive.orderTO '/user/kfk/datas/export/order'
2.import:
//将HDFS目录上的数据导入新表里import table order_imp from '/user/kfk/datas/export/order';//也可以导入指定路径的表里IMPORT TABLE order_imp_1FROM '/user/kfk/datas/export/order'LOCATION '/user/kfk/datas/imp/order'; --(location)指定数据表目录
第十九小节:常用的查询
1.字段查询
select userid,username from order;
2.where查询
select * from order where price > 200;
3.limit查询
select * from order limit 2; //取前两条数据
4.distinct
select distinct city from order; //去重
5.max/min/count/sum/avg
select max(price),min(price),count(price),sum(price),avg(price) from order;
6.group by / having
select sum(price) price,city from order group by city having price > 500;
第二十小节:join表的关联
1.等值连接
SELECT *FROM customer t1, order t2WHERE t1.userid = t2.userid ;
2.左连接
//要注意:左连接要数据少的表放在前面,否则会产生空值select t1.username,t2.product_name from customer t1 left join order t2 on t1.userid = t2.userid;select t2.username,t1.product_name from order t1 left join customer t2 on t1.userid = t2.userid;
3.右连接
select t1.username,t2.product_name from customer t1 right join order t2 on t1.userid = t2.userid;select t2.username,t1.product_name from order t1 right join customer t2 on t1.userid = t2.userid;
4.全连接
select t2.username,t1.product_name from order t1 full join customer t2 on t1.userid = t2.userid;
第二十一小节:order/sort/cluster/distribute by
1.order by (只有一个reduce ,全局排序)
select * from order order by price desc;select * from order order by price asc;set mapreduce.job.reduces=3; //设置后可以看到reduce数还为1
2.sort by (对每一个reduce内部的数据进行排序,最后的全局结果集不排序)
insert overwrite local directory '/opt/datas/kfk/sort'ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','select * from order sort by price desc;
3.distribute by (作用类似于partition,一般与sort by 一起使用)
insert overwrite local directory '/opt/datas/kfk/sort'ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','select * from order distribute by username sort by price desc;
4.cluster by (distribute by 和order by字段相同时,使用cluster by 代替)
insert overwrite local directory '/opt/datas/kfk/sort'ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','select * from order cluster by username;
文章转载自数据信息化,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




