pypark hive 开启动态分区_网站PV分析(Hive)

news/2024/5/17 12:42:09/文章来源:https://blog.csdn.net/weixin_39593718/article/details/110301084

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

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

分析:

(1) pv统计总的浏览量 count(url)

(2) uv统计去重 count(distinct guid)

(3) 获取时间字段,日期和小时(分区表)

最终结果预期

48041fc0ea9efaa20eced84bd6d0176b.png

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

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

67a690ff66071debc72454169df19c99.png

登录beeline客户端

启动服务端:bin/hiveserver2 &

401a9ce28b3b31a12d6a2a4e391d00ff.png

启动客户端

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

4ba2c946f92585add650914ba464968c.png

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

创建数据库

243a7ebd06cb82de1b420adb3806993b.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 '';

2c8d0147c6d6efa8cef3ebc2c3ddd8d7.png

准备数据

e57cc9eabd6ab8d5dfd79faa25d243fe.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;

c90c7a0216ab9a8c2aa2eb66e6467801.png

再查看下

52f6c20eadc3a76941cb7fda39694be5.png

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

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

create table track_log_qingxi(

id string,

url string,

guid string,

date string,

hour string

)row format delimited fields terminated by '';

f0315bfd30c0a6856f4b64b5c6ad0ad0.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;

659e54ab6649e0a99ddbc14f20011327.png

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

create table track_log_part1(

id string,

url string,

guid string

)partitioned by(date string,hour string)

row format delimited fields terminated by '';

1ef087b4b61a1a38cfec8da084496ad5.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';

0b627f92a304b86db559437f7e626d94.png

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

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

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

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

hive.exec.dynamic.partition

true

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

hive.exec.dynamic.partition.mode

strict

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

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

a410226993e22cc09d8b73db2a49a010.png

那我们重新创建分区表

create table track_log_part2(

id string,

url string,

guid string

)partitioned by(date string,hour string)

row format delimited fields terminated by '';

357abedf32b81d5d9d06b05311681995.png

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

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

39b9fe2ca236131535debd4247dcc6eb.png

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

3275bb7fa99d3f628ef5c64af2bbbcb5.png

数据分析

PV查看

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

8e0bf9fd00db65b5c1903217e1967db5.png

UV分析

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

eec4fe7e4f1e7acb1bd246f668afda99.png

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

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

10df89e265af286a4e0b38e059ebcbb4.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)

);

bba312f965023f985cfdf2872d97fd33.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'

8c4f7d126778fc19da14a4ea11a3562b.png

在mysql中查看

edf266ed4d1f25c55be058467e67b504.png

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

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

3fe625ca567079eb59c81f674f7b9706.png

查看下数据

2ab4acbed603394a75f92e428cf7a156.png

查看下数据是没有问题的

16274577b772cdfee36aa9ef74dfb2ea.png

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

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

相关文章

利用huffman编码对文本文件进行压缩与解压_宝塔面板LNMP开启Brotli压缩,可提高网站加载速度...

说明:Brotli是Google推出的开源压缩算法,通过变种的LZ77算法、Huffman编码以及二阶文本建模等方式进行数据压缩,与其他压缩算法相比,它有着更高的压缩效率,性能也比我们目前常见的Gzip高17-25%,可以帮我们更…

js修改json文件_静态网站生成器之React框架Gatsby (三)连接json数据源

前面一篇,我们讲到了替换首页的模板,用antd的首页模板页面。这一篇,我们将使用gatsby的数据源功能,把首页的一些数据从模板页面的js中剥离出来。这里我们将使用json文件作为gatsby的数据源,所以我们首先需要安装依赖的…

小虾视频网站广告屏蔽器 V 5.0

本软件用于屏蔽一些视频网站的广告,也具备屏蔽一些恶意网站的作用!如过你发现在电脑正常的情况下有些网友打开开,那是因为屏蔽的原因,只要单击一键还原广告就OK了!~打开软件后不要老是点击不然容易出错!要是…

当前网站设计风格的发展趋势!

这篇文章翻译至:[url]http://www.webdesignfromscratch.com/current-style.cfm[/url]它总结了一些当前网站设计风格的发展趋势。但是我得先提一句,它说的都是西方网站,未必适合我们中国网站的情况和中国网民的审美观。如果能给你一点点参考和…

网站地图(sitemap)在线生成

网站地图在线生成其实也就是sitemap在线生成,在线生成网站地图(sitemap)的方式其实就两种: 一是、网站后台有sitemap网站地图生成功能; 二是、三方工具从一个入口地址,实现全站地址抓取分析。 如果是网站…

在线地图制作网站

网站地图Sitemap的好处是很多的,对SEO而言,网站地图起到的作用是快速提交链接,加速收录。当网站的层级关系很深的时候,没有网站地图,完全靠搜索引擎比如百度自己去抓取链接,速度是很慢的。所以需要主动让百…

百度、熊掌号、移动专区网站主动推送,网页实时监控解决方案

在网站制作完成之后,很多站长都会使用百度站长工具进行网站内容的自动推送,该功能对网站优化,快照更新以及文章收录都有非常好的提升效果,同时通过实现最新熊账号文章的主动推送也能实现原创文章的保护,那么如何实现百…

网页内容监控 - 怎么才能做到网站内容实时推送百度?

运用业界领先的爬虫技术,判断页面内容是否有新内容产出,并过滤非站内内容,然后将内容链接推送至百度各个数据推送接口(如熊掌号、移动专区等)。 网页内容监控是什么? 网页内容监控是指对网站的指定页面进行定时扫描&…

java https 导入证书_如何把Https网站中的安全证书导入到java中的cacerts证书库

展开全部在项目开发中,有时会遇到62616964757a686964616fe4b893e5b19e31333337613832SSL证书导入,把SSL证书导入java中的cacerts证书库其实很简单,方法如下:第一步:找到安装了SSL证书的网站,点击HTTPS加密协议下载SSL证…

java linux u盘_创建启动U盘或移动硬盘 - 基于Fedora 14搭建高效稳定的Java开发环境_Linux教程_Linux公社-Linux系统门户网站...

创建启动U盘或移动硬盘在这里我们选择Fedora 14 x64为例,其它版本安装过程大同小异。因光驱逐渐淘汰,这里我们选择以U盘或移动硬盘作为安装方式(如果选择光驱方式安装,可以跳过此节,直接将下载的文件刻盘后进入本系列的第三节)&am…

安卓ios混合开发技术_app分析有多少种?app开发技术分析的4种方法 | 免费SEO诊断咨询...

app开发多少钱?开发一个app需要哪些流程?现在市场上的app开发方式,可以分为4种:原生app开发、Web app开发、混合app开发以及免编程app开发。不同app方式的开发流程,开发出来的app功能开发周期及成本不同,大…

discuz修改用户uid_[建站教程]Discuz数据库迁移的详细步骤

在网站发展到一定的阶段后,原先的数据库可能已经跟不上容量和速度的要求。这时,我们就要把数据库切换到其他的高性能库上了。那么如何实现网站数据的迁移呢?大概分为三步:(1)把原数据库中的数据倒出来。&am…

百度排名批量查询_企业网站核心关键词排名消失,什么原因?

自从建立了SEO你问问答的圈子,在很长时间里,我们接触到最多的问题就是为什么我的品牌词排名丢失,我的品牌词怎么搜索不到等相关问题。长沙网站设计|长沙网站制作|长沙app开发公司|长沙做网站|长沙公众号开发公司|长沙网页设计公司|享趣网络​…

兄弟连java网站_IT兄弟连 Java Web教程 URI、URL

原标题:IT兄弟连 Java Web教程 URI、URLURI介绍URI(Uniform Resource Identifier),是统一资源标识符的缩写,是一个用于标识某一个Web资源名称的字符串,该标识允许用户对任何资源通过特定的协议进行交互。Web上可用的每种资源&…

计算机原理WR是什么,8086的引线-微计算机原理-电子发烧友网站

2.5 8086的引线本节概述概念1:有40个引脚,其中地址线有20根,16根分时复用的数据线,还有控制线,如图2-8所示。某些引脚上的信号,在不同时刻具有不同的意义。例如,AD15~AD0,在某些时候…

为什么我php总聘不上,我的phpweb建站经验:[7]招聘、反馈设置

下面我们看看招聘和反馈模块的设置,由于招聘和反馈模块都涉及到表单的设置,所以这一篇将同时做介绍,以免重复。点击招聘模块,我们可以看到左侧的导航栏目,点选职位发布,即可根据表单提交需要招聘的职位内容…

wordpress 最强免插件纯代码sitemap.xml网站地图制作

wordpress 建站我一直是拒绝插件的。 最近想弄个sitemap.xml网站地图文件,不用插件的方法网上有很多相关的代码,但其实好多并不好用。 有的可能是没有全站网站地图,而有的.xml后缀名需要伪静态设置,特别麻烦。 于是,空…

VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

ActiveX控件用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。控件下载一次后就驻留在用户本地机器上,下次再访问相同的主页时&…

html5用语义元素做旅游网站,HTML5: HTML5 语义元素

HTML5 语义元素语义 意义语义元素 有意义的元素什么是语义元素?一个语义元素能够清楚的描述其意义给浏览器和开发者。无语义 元素实例: 和 - 无需考虑内容.语义元素实例: , 浏览器支持Internet Explorer 9, Firefox, Chrome, Safari 和 Opera 支持语义元素。注意: Internet E…

超人气网站集合,快来pick你中意的吧!

网站相对于软件来说,它不用安装就能使用,而且是随时随的就可以打开。那么接下来,就为各位分享几个我觉得很“奶思”的网站,快来pick你中意的吧!http://www.atool88.com/域名查询、链接查询,所有关于互联网方…