`

hive的muti group by

 
阅读更多
使用muti group by之前:
echo "订购 下载 试听 搜索 pv uv :=============================================  "
 hive -e "use platform;
     select ${group},sum(buy),sum(down),sum(listen),sum(search),sum(pv),count(distinct IMSI)  from(
   select ${group},IMSI,
case when action=1 then 1  else 0 end as buy,
case when action=2 then 1  else 0 end as down,
case when action=3 then 1  else 0 end as listen,
case when action=4 then 1  else 0 end as search,
case when (${pvcase}) then 1 else 0 end as pv
from T_FeedbackAccessday2 where ${case}
)middle group by ${group};"  | grep "2013-" >tmp.data


echo "流量:============================================= "
hive -e "use platform;
 select day,porttype,subporttype,'flow',sum(abs(yidong)), sum(abs(notyidong)) from(
select day,porttype,subporttype,
case when (UCASE(network) in('CTWAP','CTNET') and abs(FluxByte)<10485760) then FluxByte  else cast(0 as bigint) end as yidong,
case when (UCASE(network) not in('CTWAP','CTNET') and abs(FluxByte)<10485760) then FluxByte  else cast(0 as bigint) end as notyidong
from T_FeedbackAccessday2 where ${case} and (PortType !=5 OR subporttype!=4) OR (PortType =5  and subporttype =4  and ActionModule= 'actionFeedback')) middle
group by day,porttype,subporttype" | grep "2013-" >flow.data





使用后:
hive -e "use platform;
from T_FeedbackAccessday2
INSERT OVERWRITE TABLE result2 PARTITION(day='${day}',category='buy')
select porttype,subporttype,comefrom,'',sum(case when action=1 then 1  else 0 end) as buy  where ${case} 
group by ${group}
INSERT OVERWRITE TABLE result2 PARTITION(day='${day}',category='down')
select porttype,subporttype,comefrom,'',sum(case when action=2 then 1  else 0 end) as buy  where ${case} 
group by ${group}
INSERT OVERWRITE TABLE result2 PARTITION(day='${day}',category='listen')
select porttype,subporttype,comefrom,'',sum(case when action=3 then 1  else 0 end) as buy  where ${case} 
group by ${group}
INSERT OVERWRITE TABLE result2 PARTITION(day='${day}',category='search')
select porttype,subporttype,comefrom,'',sum(case when action=4 then 1  else 0 end) as buy  where ${case} 
group by ${group}
INSERT OVERWRITE TABLE result2 PARTITION(day='${day}',category='uv')
select porttype,subporttype,comefrom,'',count(distinct IMSI) as buy  where ${case} 
group by ${group}
INSERT OVERWRITE TABLE result2 PARTITION(day='${day}',category='pv')
select porttype,subporttype,comefrom,'',sum(${pvcase}) as buy  where ${case}
group by ${group}
INSERT OVERWRITE TABLE result2 PARTITION(day='${day}',category='yidong')
select porttype,subporttype,'','',sum(${yidongcase}) as buy  where ${case}
group by porttype,subporttype
INSERT OVERWRITE TABLE result2 PARTITION(day='${day}',category='notyidong')
select porttype,subporttype,'','',sum(${notyidongcase}) as buy  where ${case}
group by porttype,subporttype;"




从我的这个使用场景来看,使用前后的运行时间是差不多的.
分享到:
评论

相关推荐

    hive 中join和Group的优化

    set hive.groupby.mapaggr.checkinterval = 100000000; //在 Map 端进行聚合操作的条目数目 set hive.groupby.skewindata = true; //解决数据倾斜的万能钥匙 当map阶段运行不了的时候,可以设置 set hive.map.aggr ...

    Hive优化方法整理

    3. 调整 Hive 的 group by 操作的键对应的记录条数,设置 set hive.groupby.mapaggr.checkinterval=100000; Hadoop HDFS 参数调优 1. 调整 HDFS 的存储格式,例如使用 SequenceFile格式; 2. 调整 HDFS 的压缩格式...

    wing324#helloworld_zh#Hive之各个分组排序关键字的区别1

    二、Distribute by 五、Cluster by 六、如何使用sort by实现全局排序

    hive练习数据和练习题及答案

    hive的group by 和集合函数 hive的Order By/Sort By/Distribute By Join查询,join只支持等值连接 LEFT,RIGHT 和 FULL OUTER JOIN LEFT SEMI JOIN Hive当前没有实现 IN/EXISTS 子查询,可以用 LEFT SEMI JOIN 重写子...

    hive客户端安装_hive客户端安装_hive_

    在大数据处理领域,Hive是一个非常重要的工具,它提供了一个基于Hadoop的数据仓库基础设施,用于数据查询、分析和管理大规模数据集。本教程将详细讲解如何在Linux环境下安装Hive客户端,以便进行数据操作和分析。 ...

    hive参数配置说明大全

    9. hive.groupby.skewindata 该参数决定了group by操作是否支持倾斜的数据。如果设置为true,则Hive将支持倾斜的数据,默认值为false。 10. hive.merge.mapfiles 该参数决定了是否开启合并Map端小文件,对于...

    HIVE安装及详解

    "HIVE安装及详解" HIVE是一种基于Hadoop的数据仓库工具,主要用于处理和分析大规模数据。下面是关于HIVE的安装及详解。 HIVE基本概念 HIVE是什么?HIVE是一种数据仓库工具,主要用于处理和分析大规模数据。它将...

    hive优化.docx

    * 决定Group By操作是否支持倾斜的数据:set hive.groupby.skewindata=true; 2. Join 数据倾斜 Join操作也容易导致数据倾斜问题。解决方法是: * 设置reduce处理的数据量:set hive.exec.reducers.bytes.per....

    hive常见的优化方案ppt

    针对`GROUP BY`和`JOIN`操作,可以通过`hive.groupby.skewindata`、`hive.optimize.skewjoin`等参数调整,使数据均匀分布。对于大小表JOIN,可调整`hive.mapjoin.smalltable.filesize`等相关参数。 3. **避免全局...

    分布式数据仓库Hive大全

    3.1 Group By 28 3.2 Order /Sort By 28 4. Hive Join 29 5. HIVE参数设置 31 6. HIVE UDF 33 6.1 基本函数 33 6.1.1 关系操作符 33 6.1.2 代数操作符 34 6.1.3 逻辑操作符 35 6.1.4 复杂类型操作符 35 6.1.5 内建...

    hive窗口函数

    窗口函数可以实现动态的分组统计,即在不同的分区或窗口范围内进行统计计算,而无需显式地使用GROUP BY语句。 ##### 3. Top N 通过窗口函数,可以轻松地找出每个分区内的Top N记录,例如找出每个月销售额最高的前几...

    Hive SQL 编译过程详解

    - **Group By的实现原理**:在Map阶段,Hive会将Group By字段组合成key,发送到相应的Reduce任务。Reduce阶段利用排序功能,保存最后一个键值,以处理每个分组的数据。 - **Distinct的实现原理**:对于单个...

    hive的学习资料

    Hive 查询会转化为 MapReduce 作业执行,包括 JOIN、GROUP BY、DISTINCT 等操作。 5. 使用 Hive 注意事项 涵盖字符集、压缩、COUNT(DISTINCT)、JOIN、DML 操作、HAVING、子查询、JOIN 中的 NULL 处理、分号字符等...

    利用Hive进行复杂用户行为大数据分析及优化案例

    利用Hive进行复杂用户行为大数据分析及优化案例(全套视频+课件+代码+讲义+工具软件),具体内容包括: ...15_Hive中的数据倾斜及解决方案-group by 16_Hive中使用正则加载数据 17_Hive中使用Python脚本进行预处理

    apache-hive-2.3.9-bin.tar大数据HIVE.zip

    它支持SELECT、INSERT、UPDATE、DELETE等基本操作,以及JOIN、GROUP BY、HAVING等复杂查询。 4. **编译与执行计划**:Hive将HQL语句转换为MapReduce任务,或者在更现代的Hadoop版本中,转换为Tez或Spark任务。这...

    Hive总结.docx

    Hive支持大部分SQL标准,包括SELECT、FROM、WHERE、GROUP BY、JOIN等操作,使得用户可以方便地对Hadoop上的数据进行查询和分析。 【Hive函数】 Hive提供了丰富的内置函数,包括聚合函数(SUM、COUNT、AVG等)、数学...

    Hive sql优化

    这需要设置参数`hive.map.aggr=true`开启此功能,并且通过`hive.groupby.mapaggr.checkinterval`来控制在Map端进行聚合操作的条目数目。 - **负载均衡**:当存在数据倾斜时,可以启用`hive.groupby.skewindata=true...

    Hive_JDBC.zip_hive java_hive jdbc_hive jdbc pom_java hive_maven连

    在大数据处理领域,Apache Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL(HQL,Hive Query Language)查询存储在Hadoop集群中的大型数据集。Hive JDBC(Java Database Connectivity)是Hive提供的一种...

    Hive3.1.2编译源码

    使用hive3.1.2和spark3.0.0配置hive on spark的时候,发现官方下载的hive3.1.2和spark3.0.0不兼容,hive3.1.2对应的版本是spark2.3.0,而spark3.0.0对应的hadoop版本是hadoop2.6或hadoop2.7。 所以,如果想要使用高...

Global site tag (gtag.js) - Google Analytics