`
gengu
  • 浏览: 86313 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

hive调优 ------- 竖表变横表

阅读更多

好久没有更新博客了

 

来公司三个多月,别的没学到,天天写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会做一个效率优化。

 

 

 

 

 

分享到:
评论

相关推荐

    含两个文件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-3.1.2-bin.tar.gz 含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-...

    apache-hive-2.1.1-bin.tar

    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-2.1.1-CDH-3.6.1 相关JDBC连接驱动 Jar 包集合

    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-...

    hive2.1.1-cdh6.3.2

    1. **hive-jdbc-2.1.1-cdh6.3.2-standalone.jar**:这是Hive JDBC的独立版本,包含了所有必要的依赖,可以直接在没有其他CDH库的环境中运行。开发者可以将这个JAR文件添加到他们的项目中,以便通过Java应用程序或Web...

    hive驱动包hive-jdbc-uber-2.6.5.0-292.jar(用户客户端连接使用)

    标题中的"**hive-jdbc-uber-2.6.5.0-292.jar**"是一个Uber(也称为Shaded)JAR文件,它集成了Hive JDBC驱动的所有依赖项。Uber JAR的目的是为了方便部署,因为它将所有必需的库合并到一个单一的文件中,避免了类路径...

    Apache Hive(apache-hive-3.1.3-bin.tar.gz)

    Apache Hive(apache-hive-3.1.3-bin.tar.gz、apache-hive-3.1.3-src.tar.gz)是一种分布式容错数据仓库系统,支持大规模分析,并使用 SQL 促进读取、写入和管理驻留在分布式存储中的 PB 级数据。Hive 构建在 Apache...

    hive-jdbc-3.1.2-standalone

    hive-jdbc-3.1.2-standalone适用于linux

    Hive调优全方位指南.pdf

    Hive调优全方位指南,总结了25条关于Hive调优的经验,对于大数据及hive工程师是不可多得的资源。

    hive-jdbc-2.1.1-cdh6.2.0-standalone.jar

    hive-jdbc-2.1.1-cdh6.2.0(ieda等jdbc链接hive2.1.1);cdh6.2.0安装的hive2.1.1

    DBeaver链接hive驱动包下载: hive-jdbc-uber-2.6.5.0-292.jar

    "hive-jdbc-uber-2.6.5.0-292.jar"就是这样一个驱动包,它集成了所有依赖项,使得在DBeaver中直接使用变得简单。 二、DBeaver与Hive的连接 1. 下载驱动:首先,你需要从官方源或可靠的第三方网站下载"hive-jdbc-...

    hive-jdbc-1.2.1-standalone.jar

    hive-jdbc-1.2.1-standalone.jar hive-jdbc驱动jar包,欢迎下载

    hive-jdbc-uber-2.6.5.jar

    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-2.1.0-standalone.jar

    hive-jdbc-2.1.0-standalone.jar

    hive-jdbc-uber-3.1.2+yanagishima-18.0

    这里我们关注的是"Hive-jdbc-uber-3.1.2",这是一个包含所有依赖的Uber jar包,旨在简化部署和使用流程。 Hive JDBC Uber 3.1.2是Hive的Java数据库连接器的一个优化版本,它通过将所有必需的依赖项打包到一个单一的...

    hive-jdbc-3.1.2-standalone.jar

    Hive连接的jar包——hive-jdbc-3.1.2-standalone.jar,使用数据库连接软件连接数据仓库时需要使用相应的驱动器驱动,希望对大家有所帮助

    hive-hcatalog-core-1.2.1.jar

    hive-hcatalog-core-1.2.1.jarhive-hcatalog-core-1.2.1.jarhive-hcatalog-core-1.2.1.jar

    hive-jdbc-2.3.7-standalone.jar

    hive-jdbc-2.3.7-standalone,可用dbeaver连接hive数据库,在工具中进行数据库记录的新增改查

    hive-exec-*.jar包

    Missing Hive Execution Jar: /hive/hive1.2.1/lib/hive-exec-*.jar

    apache-hive-3.1.2-bin.tar.gz

    3. `conf/`:默认的配置文件,如`hive-default.xml`和`hive-site.xml`,用户可以在此修改Hive的行为。 4. `scripts/`:包含Hive的一些初始化和管理脚本。 5. `metastore/`:元数据存储相关的库和脚本,Hive使用元...

Global site tag (gtag.js) - Google Analytics