`
dacoolbaby
  • 浏览: 1267455 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hive处理数据的头脑风暴

    博客分类:
  • Hive
阅读更多

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数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第...

    大数据 hive 实战数据

    在大数据处理领域,Hive是一个极其重要的工具,它被广泛应用于大数据分析和数据仓库操作。本实战数据集主要涉及两个核心部分:`video`数据和`user`数据,这些都是构建大数据分析模型的基础元素。让我们深入探讨一下...

    hive元数据生成建表语句

    在大数据处理领域,Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL(HQL,Hive Query Language)查询和管理存储在Hadoop文件系统(HDFS)中的大规模数据集。Hive元数据是Hive操作的核心部分,它包含了...

    《Hive数据仓库案例教程》教学大纲.pdf

    9. **Hive优化**:讲解如何优化Hive查询性能,包括表设计优化、查询语句优化和资源管理优化,以提高大数据处理的效率。 10. **综合案例**:通过实际案例,让学生将所学知识应用于解决实际问题,提升实战能力。 11....

    基于 Hive的数据分析案例 -MM聊天软件数据分析

    在数据加载完成后,我们需要对数据进行清洗和处理,以确保数据的完整性和准确性。在本案例中,我们使用 select 语句查询出字段为空的数据,并进行过滤,确保数据的质量。 知识点五:数据分析 通过对数据的分析,...

    基于hadoop平台hive数据库处理电影数据(8965字数32页).doc

    【标题】:“基于Hadoop平台Hive数据库处理电影数据”的文档详细介绍了如何在Hadoop分布式环境中利用Hive进行大规模电影数据的分析。该系统的主要目标是建立一个分布式Hadoop集群,并在此基础上对电影数据进行深入...

    海量数据处理-hive数据仓库

    海量数据处理-hive数据仓库 很好的讲解的大数据海量数据处理的数据仓库模型建设

    hive测试数据

    Hive是Apache Hadoop生态系统中的一个数据仓库工具,它允许用户使用SQL方言(称为HQL,Hive查询语言)对大型分布式数据集进行查询、分析和处理。在大数据处理领域,Hive扮演着重要的角色,因为它的设计目标是提供一...

    大数据Hive测试数据uaction.rar

    标题中的“大数据Hive测试数据uaction.rar”指的是一个用于测试Hive处理能力的数据集,这个数据集主要关注用户操作记录。Hive是Apache Hadoop生态系统中的一个组件,它提供了一个基于SQL的查询语言(HQL)来处理和...

    Hive数据仓库之垃圾分类数据分析系统

    (3)sqoop数据迁移,完成HIve与MySQL数据库中的数据交互 (4)Echarts搭建动态可视化大屏 (5)SpringBoot搭建可视化后台系统,完成前端与后台的数据传递与交互。 (6)基于Cenots7 搭建虚拟机,配置Hadoop、HDFS、...

    datax数据从hive导入mysql数据缺失解决

    在大数据处理领域,Hive 和 MySQL 分别作为数据仓库与关系型数据库的重要组成部分,在数据流转过程中承担着关键角色。Hive 通常用于存储海量数据并进行批处理分析,而 MySQL 则用于存储结构化数据并提供快速查询服务...

    项目实战——钉钉报警校验ElasticSearch和Hive数据仓库内的数据质量(Java版本)

    此篇文章主要选取关键性指标,数据校验数据源Hive和目标ES内的数据是否一致; 因为你不知道将Hive的数据导入到了ElasticSearch后,数据量是否准确,所以需要钉钉报警校验ElasticSearch和Hive数据仓库内的数据质量,...

    Hive几种数据导入方式

    Hive 是一种广泛应用于大数据处理领域的工具,它为用户提供了类 SQL 的查询语言 HiveQL,使用户能够更加便捷地进行数据提取、转换与加载(ETL)。本文主要针对 Ambari 搭建的 Hadoop 环境下,Hive 的几种数据导入...

    林子雨Hive数据集下载

    林子雨Hive数据集下载

    Hive优化案例、Hive数据处理模式、Hive常见问题与优化、Hive实践

    Hive优化案例、Hive数据处理模式、Hive常见问题与优化、Hive实践 Hive是一种基于Hadoop的数据仓库工具,用于对大规模数据进行处理和分析。在大数据时代,Hive的应用非常广泛,本文将从Hive优化案例、Hive数据处理...

    hive数据存储模式

    ### Hive数据存储模式详解 #### 一、Hive的数据存储 Hive作为一款基于Hadoop的数据仓库工具,其核心功能之一就是提供了一种高效的管理大数据的方式...理解Hive的数据存储模式对于高效利用Hive进行数据处理至关重要。

    Hive.sql,hive的元数据

    Hive.sql

    项目实战——Spark将Hive表的数据写入ElasticSearch(Java版本)

    项目文件"SparkOnHiveToEs_v1"可能包含了实现上述步骤的Java源代码,包括Spark配置、Hive连接、数据处理逻辑和ElasticSearch的写入操作。通过阅读和理解这些代码,可以深入学习如何在实际项目中整合这些技术。 ...

    ES-HIVE数据互通

    ### ES-HIVE数据互通知识点详解 #### 环境配置 在进行Elasticsearch与Hive的数据互通之前,首先需要确保环境配置正确无误。本文档提到的环境为实验性的单节点集群,具体配置如下: - **操作系统**:Vagrant + ...

Global site tag (gtag.js) - Google Analytics