好久没有更新博客了
来公司三个多月,别的没学到,天天写sql hive,本来很反感这样的重复性劳动,不过呢!既来之则安之
工作中遇到这样一个需求
有这这样一张表t_buy_buyer_time_hongbao_asc
用户id 次序 购买时间
25560 1 1325345254
25560 2 1331043510
25560 3 1331999999
25720 1 1320381121
25720 2 1320461154
25720 3 1320639271
26840 1 1337214675
26840 2 1337214694
26840 3 1337214768
37160 1 1328583075
需求是在某张表中罗列出某用户的第一次购买时间,第二次购买时间,第三次购买时间
比如
用户id 第一次购买 第二次购买 第三次购买
25560 1325345254 1331043510 1331999999
25720 1320381121 1320461154 1320639271
26840 1337214675 1337214694 1337214768
......
于是呢 打一个很形象的比方就是 把竖表变横表的要求
使用两种hive脚本来查询hive1
select
tb1.uid as uid,
tb1.order_time as s1t_deal_time,
tb2.order_time as c2d_deal_time,
tb3.order_time as r3d_deal_time
from
(select * from t_buy_buyer_time_hongbao_asc where row_num=1 and pt='20121010000000')tb1
left outer join
(select * from t_buy_buyer_time_hongbao_asc where row_num=2 and pt='20121010000000')tb2
on tb1.uid=tb2.uid
left outer join
(select * from t_buy_buyer_time_hongbao_asc where row_num=3 and pt='20121010000000')tb3
on tb1.uid=tb3.uid
本hive脚本只需要一个job,执行时间376.005 s
hive2
select
tb1.uid as uid,
s1t_deal_time,
c2d_deal_time,
r3d_deal_time
from
(select uid,sum(if(row_num=1,order_time,0)) as s1t_deal_time,sum(if(row_num=2,order_time,0)) as c2d_deal_time,sum(if(row_num=3,order_time,0)) as r3d_deal_time from t_buy_buyer_time_hongbao_asc where pt='20121010000000' group by uid)tb1
本hive脚本也只需要一个job,执行时间是328.733 s
额,不要嫌慢,在hadoop上跑数据的确是很慢很慢的
其实执行效率被优化了五十多s,但疑问是为什么hive1会只生成一个job呢?原因在于我们的连接条件是同一张表的同一个uid,于是呢,hive会做一个效率优化。
分享到:
相关推荐
apache-hive-2.1.1-bin.tar apache-hive-2.1.1-bin.tar apache-hive-2.1.1-bin.tarapache-hive-2.1.1-bin.tar apache-hive-2.1.1-bin.tar apache-hive-2.1.1-bin.tarapache-hive-2.1.1-bin.tar apache-hive-2.1.1-...
含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-3.1.2-bin.tar.gz 含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-3.1.2-bin.tar.gz 含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-...
02、hive-exec-2.1.1-cdh6.3.1.jar 03、hive-jdbc-2.1.1-cdh6.3.1.jar 04、hive-jdbc-2.1.1-cdh6.3.1-standalone.jar 05、hive-metastore-2.1.1-cdh6.3.1.jar 06、hive-service-2.1.1-cdh6.3.1.jar 07、libfb303-...
Hive调优全方位指南,总结了25条关于Hive调优的经验,对于大数据及hive工程师是不可多得的资源。
dbeaver连接hive时需要的驱动包hive-jdbc-uber-2.6.5.0-292.jar
hive-jdbc-3.1.2-standalone适用于linux
hive-jdbc-2.1.1-cdh6.2.0(ieda等jdbc链接hive2.1.1);cdh6.2.0安装的hive2.1.1
hive-jdbc-1.2.1-standalone.jar hive-jdbc驱动jar包,欢迎下载
hive-jdbc-uber-2.6.5.0-292.jar驱动
Hive连接的jar包——hive-jdbc-3.1.2-standalone.jar,使用数据库连接软件连接数据仓库时需要使用相应的驱动器驱动,希望对大家有所帮助
hive-jdbc-2.3.7-standalone,可用dbeaver连接hive数据库,在工具中进行数据库记录的新增改查
hive JDBC jar包全家桶。由于项目使用,此jar包从国外下载费了好大劲,现分享给大家。 cdh6.3.2版本的
hive-jdbc-uber-2.6.5.0-292.jar DbVisualizer (as of version 9.5.5) Below is an example configuration using DbVisualizer: Open the Diver Manager dialog ("Tools" > "Driver Manager...") and hit the ...
hive-jdbc-uber-2.6.5.0-292.jar 驱动下载,hive-jdbc-uber-2.6.5.0-292.jar,hive-jdbc-uber-2.6.5.0-292.jar
Missing Hive Execution Jar: /hive/hive1.2.1/lib/hive-exec-*.jar
jdbc连接hive所需的一个包 ( hive-jdbc-3.1.2.jar)
hive-jdbc-2.1.0.jar
Hive调优,数据工程师成神之路。
被编译的hive-hbase-handler-1.2.1.jar,用于在Hive中创建关联HBase表的jar,解决创建Hive关联HBase时报FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoop....