对hive的每个分区进行去重_Hive实现网站PV分析

news/2024/5/11 4:55:19/文章来源:https://blog.csdn.net/weixin_29924799/article/details/112065341

7b15f5f04a691738a467602aaa9a765b.png

之前我们做过《java mapreduce实现网站PV分析》,这次我们可以用hive分析一些需求指标

提出需求:统计分析24小时各个时段的pv和uv

分析:

  1. pv统计总的浏览量 count(url)
  2. uv统计去重 count(distinct guid)
  3. 获取时间字段,日期和小时(分区表)

最终结果预期

ad331adc72260cfaa35fb661aa0a460f.png

接下来注意每个阶段:采集阶段,清洗阶段,分析阶段。

准备数据,查看数据字典了解数据的结构和意义(此处省略了数据和数据字典的展示),可以认为此时数据已经采集完成了(采集阶段),一般由采集人员将数据交由到我们手上。

ecce922e6b55b06c105e09ecfcdf8fbd.png

登录beeline客户端

启动服务端:bin/hiveserver2 &

4a660bd20d35e1db08313b70dd6b66a5.png

启动客户端

bin/beeline -u jdbc:hive2://mastercdh:10000 -n root -p password

39c22a4a20b4b027958cf1f0d02d5dd6.png

根据数据字典,创建数据表

创建数据库

ca3db72e59ca2c2ffa4c4369a56bdcc6.png

创建数据表

create table track_log_source(

id string,

url string,

referer string,

keyword string,

type string,

guid string,

pageId string,

moduleId string,

linkId string,

attachedInfo string,

sessionId string,

trackerU string,

trackerType string,

ip string,

trackerSrc string,

cookie string,

orderCode string,

trackTime string,

endUserId string,

firstLink string,

sessionViewNo string,

productId string,

curMerchantId string,

provinceId string,

cityId string,

fee string,

edmActivity string,

edmEmail string,

edmJobId string,

ieVersion string,

platform string,

internalKeyword string,

resultSum string,

currentPage string,

linkPosition string,

buttonPosition string

)row format delimited fields terminated by 't';

ecdd11ec4e37499351accc5e9ba7d74f.png

准备数据

6e3f11f1d73277436efe6a5228918f38.png

将准备好的数据导入

load data local inpath '/data/test/data1' into table track_log_source;

load data local inpath '/data/test/data2' into table track_log_source;

d00a86a8df2517b1345a16b1ee1b8ec4.png

再查看下

f60bff23df0946bb34199069f8533e9f.png

采集完成后,需要对数据进行清洗,比如之前做过的《mapreduce实现数据去重》

根据之前的分析,我们创建表,将我们需要的字段提取出来

create table track_log_qingxi(

id string,

url string,

guid string,

date string,

hour string

)row format delimited fields terminated by 't';

81e396328060edba697bdf91a0a2987a.png

插入数据

insert into table track_log_qingxi select id,url,guid,substring(trackTime,9,2) date,substring(trackTime,12,2) hour from track_log_source;

98d49bff6113486c6947abfd8266a5d8.png

分区表:根据时间字段进行分区

create table track_log_part1(

id string,

url string,

guid string

)partitioned by(date string,hour string)

row format delimited fields terminated by 't';

f0ea7ea6a97bf323b929210997816195.png

插入数据

insert into table track_log_part1 partition(date='20150828',hour='18') select id,url,guid from track_log_qingxi where date='28' and hour='18';

insert into table track_log_part1 partition(date='20150828',hour='19') select id,url,guid from track_log_qingxi where date='28' and hour='19';

6a9e8f9b554ea6d40aed3ce9c468381c.png

这样写的话,每次都需要填写条件,非常的不方便

我们来看一个概念:动态分区

首先在hive的配置文件hive-site.xml中,有两个属性

表示是否启用动态分区(这个是默认开启的)

<property>

<name>hive.exec.dynamic.partition</name>

<value>true</value>

</property>

使用动态分区,需要设置成非严格模式

<property>

<name>hive.exec.dynamic.partition.mode</name>

<value>strict</value>

</property>

我们用命令更改,不直接配置了

set hive.exec.dynamic.partition.mode=nonstrict;

9625c1da795812dd2da5596900357a30.png

那我们重新创建分区表

create table track_log_part2(

id string,

url string,

guid string

)partitioned by(date string,hour string)

row format delimited fields terminated by 't';

490b4a00f397bca8f92f5a567567c017.png

重新插入(这个地方利用动态分区的特性)

insert into table track_log_part2 partition(date,hour) select * from track_log_qingxi;

5b2e814e0e53d83a728ef24a8ae75477.png

查看数据发现自动帮我们分开了,这样如果是多个时间的话也会自动完成

118380863da1fc2edacbe1f806bb3c51.png

数据分析

PV查看

select date,hour,count(url) pv from track_log_part2 group by date,hour;

cee2ddfffc3c6868c139211e74d17a6a.png

UV分析

select date,hour,count(distinct guid) uv from track_log_part2 group by date,hour;

03ecb8633e03d12694ae408ac58ee7cf.png

最终结果导入最终结果表中

create table result as select date,hour,count(url) pv,count(distinct guid) uv from track_log_part2 group by date,hour;

d42b5b501a349585ee79345b2b1dd91c.png

数据导出

将最终的结果保存在mysql中

在mysql中创建表

create table track_pv_uv_save(

date varchar(30),

hour varchar(30),

pv varchar(30),

uv varchar(30),

primary key (date,hour)

);

81505de3ee79cee4d1f7daab80e92a6d.png

sqoop方式(hive-mysql)

bin/sqoop export

--connect jdbc:mysql://mastercdh:3306/track_log_mysql

--username root

--password password

--table track_pv_uv_save

--export-dir /user/hive/warehouse/exp_track_log.db/result

-m 1

--input-fields-terminated-by '001'

7c5965605ed221131afebc14aa0f86f7.png

在mysql中查看

219895f1197f0e52e9812fbfbe302439.png

我们可以将数据下载到本地

bin/hdfs dfs -get /user/hive/warehouse/exp_track_log.db/result/000000_0 /data/test

514efd4e3e90d170ff082369f09356e6.png

查看下数据

8dfe900df2e7847b3c713f0d378a1872.png

查看下数据是没有问题的

4b7236fc5789bf75715411a175ffcf3b.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_753025.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WEB网站常见攻击

2019独角兽企业重金招聘Python工程师标准>>> 1. header name和value中出现CRLF字符 在header中嵌入CRLF&#xff08;回车换行&#xff09;字符是一种常见的攻击手段。攻击者嵌入CRLF以后&#xff0c;使服务器对HTTP请求发生错误判断&#xff0c;从而执行攻击者的恶意…

网站排名不稳定?网站托管专家来支招

网站建设起来了就会为排名情况所忧心。排名靠前才会引来较多流量&#xff0c;并获得转化率。现在网站托管专家来介绍下&#xff0c;怎么样提高网站排名和获得稳定排名&#xff1f;小伙伴赶紧上车get起来。第一、高质量原创内容蜘蛛一直都在提倡原创内容&#xff0c;它也会模拟人…

清理网站服务器空间什么意思,清理网站服务器磁盘内存

清理网站服务器磁盘内存 内容精选换一换本节操作指导您完成Windows操作系统云服务器磁盘空间清理。弹性云服务器匀出一部分磁盘空间来充当内存使用&#xff0c;当内存耗尽时&#xff0c;云服务器可以使用虚拟内存来缓解内存的紧张。但当内存使用率已经非常高时&#xff0c;频繁…

在你的网站上展示Rss Feed

2019独角兽企业重金招聘Python工程师标准>>> 如何在自己的网站上展示别的网站的rss feed&#xff0c;如google news。这样就可以在自己的网站上实时显示别的网站的新闻&#xff0c;就像自己的新闻一样。这个想法我好久前就有了&#xff0c;也在好几个月前找到了方法…

15个震撼视听的优秀 Flash 网站设计欣赏

如果你正在为你的Flash网站设计项目寻找灵感和新思路&#xff0c;那么这篇文章推荐的15个非常有创意的Flash网页作品相信能帮助到你。Flash网站页面美观&#xff0c;互动性强&#xff0c;可以声形并茂&#xff0c;实现普通的HTML网站不能制造出的质感和动作&#xff0c;特别是动…

VS2012+Win7网站发布详细步骤

VS2012Win7网站发布详细步骤 本机环境&#xff1a; 本文分三个部分介绍Web项目发布的常规方法&#xff0c;大神级别可以略过&#xff0c;主要是为了方便一些初学者。 第一部分&#xff1a;VS2012把项目发布到文件系统。 第二部分&#xff1a;IIS配置发布好的项目。 第三部分&a…

Hosts文件与钓鱼网站

有些病毒或***&#xff0c;修改你计算机上hosts文件&#xff0c;你访问某些网站就有可能访问到钓鱼网站&#xff0c;或者你的计算机不能打开某个网址&#xff0c;或者你能够打开网页&#xff0c;但是你的计算机不能升级病毒库&#xff0c;这时候你就应该检查一下你的计算机host…

今天给网站冒了一下险,嘿嘿...

今天中午逛站长之家的时候有一个很吸引人的广告&#xff0c;大概是&#xff1a;200IP/1.19元 云云&#xff0c;反正那些流量都是比较低的价格&#xff0c;而且看他那网站介绍&#xff0c;这些流量是是大型广告公司的弹窗广告效果&#xff0c;是真实的IP流量&#xff0c;所以今晚…

SharePoint Online 创建门户网站系列之定制栏目

前 言 SharePoint Online自带的库就带有二级页面和详细页面&#xff0c;也就是Allitems页面和DispForm页面&#xff0c;但是实在不够美观&#xff0c;尤其对于门户网站这一企业门面来说&#xff0c;更是无法接受。 下面&#xff0c;我们就开始学习如何定制SPO的二级页面和详细页…

ASP.NET Core 一步步搭建个人网站(6)_单页模式和优化

前言 HI&#xff0c;有段时间没有更新了&#xff0c;主要因为第一年前事情比较多&#xff0c;有些事得忙着张罗下&#xff1b;第二呢&#xff0c;对个人网站进行了一次大范围的优化&#xff0c;主要是申请的云服务器资源有限&#xff0c;1m的网络带宽&#xff0c;带上图片展示…

PHP相关系列 - 蚂蚁变大象:浅谈常规网站是如何从小变大的

来源&#xff1a;http://stblog.baidu-tech.com/?p1643 2005年&#xff0c;我开始和朋友们开始拉活儿做网站&#xff0c;当时第一个网站是在linux上用jsp搭建的&#xff0c;到后来逐步的引入了多种框架&#xff0c;如webwork、hibernate等。在到后来&#xff0c;进入公司&…

运维开发实战考题:计算教育网站投票排名

运维开发小项目实战&#xff1a;计算网站投票排名:shell/python/php都可&#xff01;说明&#xff1a;近日老男孩培训受朋友委托&#xff0c;需要帮忙计算下面地址教育品牌投票排名http://vote.runsky.com/2013/12/jiaoyu/要求&#xff1a;1、按全部教育机构排名&#xff0c;按…

怎样在网站中加入baidu 搜索框

2019独角兽企业重金招聘Python工程师标准>>> <form action" http://www.baidu.com/baidu " target"_blank"> <table bgcolor"#FFFFFF"><tr><td> <input nametn typehidden valuebaidu> <a href&quo…

PHP网站使用JavaScript和Iframe简单实现部分刷新效果

本文主要是记录自己寒假作业PHP网站实现加载界面的文章&#xff0c;运行效果如下图所示。主要记录phphtmlApache开发网站的3个功能&#xff1a;(方便以后阅读和其他人学习) 1.如何实现简单页面布局 2.使用jsp如何实现隐藏与显示效果 3.通过iframe实现局…

转载和积累系列 - 大型网站系统架构的演化

转载来源&#xff1a;http://www.cnblogs.com/leefreeman/p/3993449.html 前言 一个成熟的大型网站&#xff08;如淘宝、京东等&#xff09;的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性&#xff0c;它总是随着用户量的增加&#xff0c;业务功能的扩展逐…

2月国内网站统计:百度居首 360安全中心第二

IDC评述网&#xff08;idcps.com&#xff09;03月05日报道&#xff1a;根据中国互联网协会-中国网站排名最新实时数据&#xff0c;截至2014年3月3日&#xff0c;国内网站独立访问量排名前五的是&#xff1a;百度、360安全中心、腾讯网、淘宝网和新浪&#xff0c;如下图。如图所…

知名互联网公司网站架构图

引言 近段时间以来&#xff0c;通过接触有关海量数据处理和搜索引擎的诸多技术&#xff0c;常常见识到不少精妙绝伦的架构图。除了每每感叹于每幅图表面上的绘制的精细之外&#xff0c;更为架构图背后所隐藏的设计思想所叹服。个人这两天一直在搜集各大型网站的架构设计图&…

大型网站技术学习-1. 虚拟化技术概述

牛人就不要看了~ 1.1 引言 先举个例子&#xff0c;一台物理主机有16G内存&#xff0c;用户A的程序只需要2G内存&#xff0c;用户B的程序只需要4G内存&#xff0c;如果没有用虚拟化技术&#xff0c;他们的解决方案如下&#xff1a; 两用户程序放到同一台物理机器上&a…

Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识

目录 前言新建express项目并自定义路由规则如何提取页面中的公共部分?如何提交表单并接收参数? GET 方式POST 方式如何字符串加密?如何使用session?如何使用cookies?如何清除session和cookies?写在之后前言 前面经过五篇Node.js的学习&#xff0c;基本可以开始动手构建一…

在C#开发中如何使用Client Object Model客户端代码获得SharePoint 网站、列表的权限情况...

自从人类学会了使用火&#xff0c;烤制的方式替代了人类的消化系统部分功能&#xff0c;从此人类的消化系统更加简单&#xff0c;加速了人脑的进化&#xff1b;自从SharePoint 2010开始有了Client Side Object Model &#xff0c;我们就可以不用在服务器上开发SharePoint解决方…