Hive虽然强大,但是我们遇到的业务需求必定是千奇百怪的。
往往在数据库中,通过游标来实现的数据读取,再回代到绑定变量的SQL里面进行查询在Hive时代已经不复存在。
举个例子,解析用户最近一年产品购买的金额。时间日期按照最近一次购买倒推一年。
原本我在Oracle数据库里面是通过游标+SQL绑定回查完成的。
现在用Hive,我觉得应该这么写:
select user_id,sum(pay_amount) from( select a.user_id,a.pay_amount,a.pay_date, b.last_pay_date from src_tbl a left outer join ( select user_id, min(pay_date) last_pay_date from src_tbl group by user_id ) b where a.pay_date > b.last_pay_date - 1 year )group by user_id
思路是,如果一个表的数据会互相关联,
则需要将处理好的结果集,关联到原来的表上面,作为条件的一部分。
那么在做日志解析的时候,我们会遇到访客,和访次的概念。
对于在2个小时之内的访问,我们认为是访问一次,对于两个小时之外的访问,我们认定是再次访问。
也就是是说,最新一次访问,与上一次访问之间间隔超过2个小时,则算是第二次访问。
用Hive来做过滤。
理一下思路:
select cookie_id, min(visit_time)
from web_log
group by cookie_id
用上面的计算来求出每个Cookie的第一次访问。
然后把这个访客的第一次访问的数据清理出来
select *
from web_log a
left outer join (
select cookie_id, min(visit_time) first_visit
from web_log
group by cookie_id
) b
on a.cookie_id = b.cookie_id
where a.visit_time > first_visit + 2 hours
这样就取出了一些第二次访问的客户数据了。
重复5-6次。
这样就可以计算出到底有多少防次访问了网站。
虽然不一定是最优解,不知道还有没有更好的办法呢??
想到一个方法,在Reduce阶段,用Distribute By cookie_id。
然后使用Python脚本进行编程。
取一条登陆记录,取其访问的时间。用变量保存。
然后再取一条记录,
如果新的记录的访问时间与上一次的访问记录相差2个小时,则输出上一条记录。
如果在2个小时之内,更新变量,不输出,继续访问。这样就像是个游标一样处理数据。
最后将输出格式为 cookie_id,first_visit_time,last_visit_time这样的格式,每一条这样的记录作为一次的访问。这一次访问包含N次请求。
相关推荐
《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第...
海量数据处理-hive数据仓库 很好的讲解的大数据海量数据处理的数据仓库模型建设
hive造数据
此篇文章主要选取关键性指标,数据校验数据源Hive和目标ES内的数据是否一致; 因为你不知道将Hive的数据导入到了ElasticSearch后,数据量是否准确,所以需要钉钉报警校验ElasticSearch和Hive数据仓库内的数据质量,...
可以从hive元数据生成建表语句的资源。包括表结构、分区等信息
(3)sqoop数据迁移,完成HIve与MySQL数据库中的数据交互 (4)Echarts搭建动态可视化大屏 (5)SpringBoot搭建可视化后台系统,完成前端与后台的数据传递与交互。 (6)基于Cenots7 搭建虚拟机,配置Hadoop、HDFS、...
《Hive数据仓库案例教程》教学大纲.pdf《Hive数据仓库案例教程》教学大纲.pdf《Hive数据仓库案例教程》教学大纲.pdf《Hive数据仓库案例教程》教学大纲.pdf《Hive数据仓库案例教程》教学大纲.pdf《Hive数据仓库案例...
Hive.sql
包含video user数据
林子雨Hive数据集下载
Ambari搭建hadoop环境下,hive的数据导入
Hive的数据存储模式Hive的数据存储模式Hive的数据存储模式Hive的数据存储模式
实现elasticsearch与hive数据互通 环境 实验性单节点集群 vagrant.linux16.4.4(无doctor) hive2.3.3+beeline es6.2.2 kibana6.2.2 elasticsearch-hadoop-6.2.2.jar 没有doctor
datax数据从hive表导入mysql表,数据缺失解决
Hive进行数据处理1
这个是hive测试数据.
hive数据加载的几种方式、数据的导出、数据简单查询
临时文件链接
hive练习数据和hive练习题包含了hive练习数据,hive数据的建表ddl和hive练习题,非常适合做hive练习,新手培训,快速入门等; 包含以下练习: hive的group by 和集合函数 hive的Order By/Sort By/Distribute By Join...
毕业设计,采用Hadoop+Hive构建数据仓库,使用django+echarts构建前端web网站对业务指标进行可视化呈现 1. Hadoop+Hive构建数据仓库 2. django+echarts网站开发 3. 数据清洗,数据模型构建 毕业设计,采用Hadoop+...