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是一个极其重要的工具,它被广泛应用于大数据分析和数据仓库操作。本实战数据集主要涉及两个核心部分:`video`数据和`user`数据,这些都是构建大数据分析模型的基础元素。让我们深入探讨一下...
在大数据处理领域,Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL(HQL,Hive Query Language)查询和管理存储在Hadoop文件系统(HDFS)中的大规模数据集。Hive元数据是Hive操作的核心部分,它包含了...
9. **Hive优化**:讲解如何优化Hive查询性能,包括表设计优化、查询语句优化和资源管理优化,以提高大数据处理的效率。 10. **综合案例**:通过实际案例,让学生将所学知识应用于解决实际问题,提升实战能力。 11....
在数据加载完成后,我们需要对数据进行清洗和处理,以确保数据的完整性和准确性。在本案例中,我们使用 select 语句查询出字段为空的数据,并进行过滤,确保数据的质量。 知识点五:数据分析 通过对数据的分析,...
【标题】:“基于Hadoop平台Hive数据库处理电影数据”的文档详细介绍了如何在Hadoop分布式环境中利用Hive进行大规模电影数据的分析。该系统的主要目标是建立一个分布式Hadoop集群,并在此基础上对电影数据进行深入...
海量数据处理-hive数据仓库 很好的讲解的大数据海量数据处理的数据仓库模型建设
Hive是Apache Hadoop生态系统中的一个数据仓库工具,它允许用户使用SQL方言(称为HQL,Hive查询语言)对大型分布式数据集进行查询、分析和处理。在大数据处理领域,Hive扮演着重要的角色,因为它的设计目标是提供一...
标题中的“大数据Hive测试数据uaction.rar”指的是一个用于测试Hive处理能力的数据集,这个数据集主要关注用户操作记录。Hive是Apache Hadoop生态系统中的一个组件,它提供了一个基于SQL的查询语言(HQL)来处理和...
(3)sqoop数据迁移,完成HIve与MySQL数据库中的数据交互 (4)Echarts搭建动态可视化大屏 (5)SpringBoot搭建可视化后台系统,完成前端与后台的数据传递与交互。 (6)基于Cenots7 搭建虚拟机,配置Hadoop、HDFS、...
在大数据处理领域,Hive 和 MySQL 分别作为数据仓库与关系型数据库的重要组成部分,在数据流转过程中承担着关键角色。Hive 通常用于存储海量数据并进行批处理分析,而 MySQL 则用于存储结构化数据并提供快速查询服务...
此篇文章主要选取关键性指标,数据校验数据源Hive和目标ES内的数据是否一致; 因为你不知道将Hive的数据导入到了ElasticSearch后,数据量是否准确,所以需要钉钉报警校验ElasticSearch和Hive数据仓库内的数据质量,...
Hive 是一种广泛应用于大数据处理领域的工具,它为用户提供了类 SQL 的查询语言 HiveQL,使用户能够更加便捷地进行数据提取、转换与加载(ETL)。本文主要针对 Ambari 搭建的 Hadoop 环境下,Hive 的几种数据导入...
林子雨Hive数据集下载
Hive优化案例、Hive数据处理模式、Hive常见问题与优化、Hive实践 Hive是一种基于Hadoop的数据仓库工具,用于对大规模数据进行处理和分析。在大数据时代,Hive的应用非常广泛,本文将从Hive优化案例、Hive数据处理...
### Hive数据存储模式详解 #### 一、Hive的数据存储 Hive作为一款基于Hadoop的数据仓库工具,其核心功能之一就是提供了一种高效的管理大数据的方式...理解Hive的数据存储模式对于高效利用Hive进行数据处理至关重要。
Hive.sql
项目文件"SparkOnHiveToEs_v1"可能包含了实现上述步骤的Java源代码,包括Spark配置、Hive连接、数据处理逻辑和ElasticSearch的写入操作。通过阅读和理解这些代码,可以深入学习如何在实际项目中整合这些技术。 ...
### ES-HIVE数据互通知识点详解 #### 环境配置 在进行Elasticsearch与Hive的数据互通之前,首先需要确保环境配置正确无误。本文档提到的环境为实验性的单节点集群,具体配置如下: - **操作系统**:Vagrant + ...