HDInsight-Hadoop实战(一)站点日志分析
HDInsight-Hadoop实战(一)站点日志分析
简单介绍
在此演示样例中。你将使用分析站点日志文件的 HDInsight 查询来深入了解客户使用站点的方式。借助此分析。你可查看外部站点一天内对该站点的訪问频率以及用户体验的站点错误总结。
在此教程中,你将学习怎样使用 HDInsight:
- 连接到包括站点日志文件的 Azure Storage Blob
- 创建配置单元表以查询这些日志
- 创建配置单元查询以分析数据
- 使用 Microsoft Excel 连接到 HDInsight(使用 ODBC 连接)以检索已分析的数据
先决条件
已使用群集配置你完毕脚本和查询所需的全部内容。要将已分析的数据导出到 Microsoft Excel,你必须满足下面要求:
- 必须安装了 Microsoft Excel 2010 或 Microsoft Excel 2013。
- 你必须具有 Microsoft 配置单元 ODBC 驱动程序才干将数据从配置单元导入 Excel 中。
基于 Microsoft Excel 的版本号选择 32 位或 64 位版本号。
已载入到 Windows Azure 存储 Blob 的站点日志数据
下面是此演示样例使用的站点日志数据位置。你可从此页顶部的文件浏览器选项卡訪问此数据。也能够在 [default storage account]/[defaultcontainer]/HdiSamples/WebsiteLogSampleData/SampleLog 路径下訪问此演示样例的数据。
站点日志数据
wasb://yzphadoop01@yzpcloud.blob.core.chinacloudapi.cn/HdiSamples/WebsiteLogSampleData/SampleLog/
正在创建配置单元表以查询站点日志数据
下面配置单元语句创建了一个外部表。同意配置单元查询存储在 Azure Blob 存储中的数据。
外部表以初始文件格式保留数据,同一时候同意配置单元针对文件内的数据运行查询。
配置单元语句通过描写叙述文件内的字段、字段间的界定符以及 Azure Blob 存储中文件的位置创建了名为网络日志的新表。在此教程的创建配置单元查询以分析数据章节,你将针对存储在此表中的数据运行查询。
CreateExternal Table weblogs
DROP TABLE IFEXISTS weblogs;
--create tableweblogs on space-delimited website log data
CREATE EXTERNALTABLE IF NOT EXISTS weblogs(s_date date, s_time string, s_sitename string,cs_method string, cs_uristem string,
cs_uriquerystring, s_port int, cs_username string, c_ip string, cs_useragent string,
cs_cookiestring, cs_referer string, cs_host string, sc_status int, sc_substatus int,
sc_win32statusint, sc_bytes int, cs_bytes int, s_timetaken int )
ROW FORMATDELIMITED FIELDS TERMINATED BY ' '
STORED ASTEXTFILE LOCATION'wasb://yzphadoop01@yzpcloud.blob.core.chinacloudapi.cn/HdiSamples/WebsiteLogSampleData/SampleLog/'
TBLPROPERTIES('skip.header.line.count'='2');
创建配置单元查询以分析数据
下面配置单元查询基于网络日志表上运行的查询创建了两个新表。新表名为 clienterrors 和 refersperday。
clienterrors 的查询从介于 400 到 500 之间的 HTTP 状态代码的网络日志表中提取数据。而且按遭遇这些错误的用户以及错误代码类型对其进行分组。状态代码的范围介于 400 到 500 之间,通过网络日志表中的 sc_status 列表示,相应訪问站点时客户端遭遇的错误。
然后,提取的数据按每一个错误代码的发生次数进行排序并写入 clienterrors 表。
refersperday 的查询从引用此站点的全部外部站点的网络日志表中提取数据。外部站点信息从网络日志表的 cs_referer 列中提取。为了确保引用链接不遭遇错误,表仅显示返回 200 到 300 之间的 HTTP 状态代码的页面数据。然后,提取的数据将写入 refersperday 表。
DROP TABLE IFEXISTS ClientErrors;
--create tableClientErrors for storing errors users experienced and their frequencies
CREATE EXTERNALTABLE ClientErrors(sc_status int, cs_referer string, cs_page string, cnt int)
ROW FORMATDELIMITED FIELDS TERMINATED BY ',';
--populate tableClientErrors with data from table weblogs
INSERT OVERWRITETABLE ClientErrors
SELECT sc_status,cs_referer,
concat(cs_uristem,'?',regexp_replace(cs_uriquery,'X-ARR-LOG-ID=[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}',''))cs_page,
count(distinctc_ip) as cnt
FROM weblogs
WHERE sc_status>=400 and sc_status < 500
GROUP BYsc_status, cs_referer, concat(cs_uristem,'?',regexp_replace(cs_uriquery,'X-ARR-LOG-ID=[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}',''))
ORDER BY cnt;
-------------------------------------------------------------------------------------------
DROP TABLE IFEXISTS RefersPerDay;
--create tableRefersPerDay for storing references from external websites
CREATE EXTERNALTABLE IF NOT EXISTS RefersPerDay(year int, month int, day int, cs_refererstring, cnt int)
ROW FORMATDELIMITED FIELDS TERMINATED BY ',';
--populate tableRefersPerDay with data from the weblogs table
INSERT OVERWRITETABLE RefersPerDay
SELECTyear(s_date), month(s_date), day(s_date), cs_referer, count(distinct c_ip) ascnt
FROM weblogs
WHERE sc_status>=200 and sc_status <300
GROUP BY s_date,cs_referer
ORDER BY cntdesc;
-------------------------------------------------------------------------------------------
正在运行查询
单击提交以运行先前章节中显示的查询。查询运行下面任务:
- 从 HDInsight 群集关联的 Azure Blob 存储中的原始站点日志数据创建网络日志表。
- 创建并填充先前章节中描写叙述的 clienterrors 和 refersperday 表。
运行查询时,你可单击查看具体信息来获取有关后台运行任务的很多其它信息。在页底全部作业都处于已完毕状态后。继续运行 将数据载入到 Excel。
DROP TABLE IFEXISTS weblogs;
--create tableweblogs on space-delimited website log data
CREATE EXTERNALTABLE IF NOT EXISTS weblogs(s_date date, s_time string, s_sitename string,cs_method string, cs_uristem string,
cs_uriquerystring, s_port int, cs_username string, c_ip string, cs_useragent string,
cs_cookiestring, cs_referer string, cs_host string, sc_status int, sc_substatus int,
sc_win32statusint, sc_bytes int, cs_bytes int, s_timetaken int )
ROW FORMATDELIMITED FIELDS TERMINATED BY ' '
STORED ASTEXTFILE LOCATION 'wasb://yzphadoop01@yzpcloud.blob.core.chinacloudapi.cn/HdiSamples/WebsiteLogSampleData/SampleLog/'
TBLPROPERTIES('skip.header.line.count'='2');
DROP TABLE IFEXISTS ClientErrors;
--create tableClientErrors for storing errors users experienced and their frequencies
CREATE EXTERNALTABLE ClientErrors(sc_status int, cs_referer string, cs_page string, cnt int)
ROW FORMATDELIMITED FIELDS TERMINATED BY ',';
--populatetable ClientErrors with data from table weblogs
INSERTOVERWRITE TABLE ClientErrors
SELECTsc_status, cs_referer,
concat(cs_uristem,'?',regexp_replace(cs_uriquery,'X-ARR-LOG-ID=[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}',''))cs_page,
count(distinct c_ip) ascnt
FROM weblogs
WHERE sc_status>=400 and sc_status < 500
GROUP BYsc_status, cs_referer, concat(cs_uristem,'?
', regexp_replace(cs_uriquery,'X-ARR-LOG-ID=[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}',''))
ORDER BY cnt;
DROP TABLE IFEXISTS RefersPerDay;
--create tableRefersPerDay for storing references from external websites
CREATE EXTERNALTABLE IF NOT EXISTS RefersPerDay(year int, month int, day int, cs_refererstring, cnt int)
ROW FORMATDELIMITED FIELDS TERMINATED BY ',';
--populatetable RefersPerDay with data from the weblogs table
INSERTOVERWRITE TABLE RefersPerDay
SELECTyear(s_date), month(s_date), day(s_date), cs_referer, count(distinct c_ip) ascnt
FROM weblogs
WHERE sc_status>=200 and sc_status <300
GROUP BYs_date, cs_referer
ORDER BY cntdesc;
作业会话
查询名称 |
日期 |
ID |
操作 |
状态 |
表中无可用数据 |
正在将数据载入到 Excel
id=40886">Microsoft 配置单元 ODBC 驱动器将数据从配置单元导入到 Excel。
安装驱动程序后。请使用下面步骤连接到表。
1. 打开 Excel 并创建空白的工作表。
2. 从数据选项卡中,选择来自其它源。然后选择来自 Microsoft 查询。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZ3poZW5waW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
3. 提示选择数据源时,选择演示样例 Microsoft 配置单元 DSN。
4. 在 Microsoft 配置单元 ODBC 驱动器连接对话框中。输入下面值,然后单击“确定”。
- 主机 - HDInsight 群集的主机名。比如。mycluster.azurehdinsight.net
- 用户名 - HDInsight 群集的管理员名称
- password - 管理员password
全部其它字段均为默认值。
5. 在查询向导中。选择 refersperday 表。然后选择 > button。
6. 单击下一步继续查看向导,直到到达带有完毕button的对话框。
单击完毕。
7. 出现导入数据对话框后,单击确定以接受默认值。
完毕查询后。数据将显示在 Excel 中。
摘要
在本教程中。你了解了怎样使用 Azure HDInsight 分析使用 Apache Hive 的站点日志数据。你浏览了一个流程,了解原始数据怎样先上载到 Azure 存储空间 Blob 再载入到配置单元表以便运行查询。最后,你了解了怎样将配置单元查询的结果导入到 Microsoft Excel。
假设你具有本教程或其它演示样例方面的反馈。请使用上面的帮助 + 反馈链接。
使用下面链接继续了解怎样将配置单元和 Excel 与 HDInsight 一同使用。
- 将配置单元和 HDInsight 中 Hadoop 一同使用
- 使用 HDInsight 中 Hadoop 分析 Twitter 数据
- 使用 Microsoft 配置单元 ODBC 驱动程序将 Excel 连接到 Hadoop
转载请注明出处:http://blog.csdn.net/yangzhenping, 谢谢!
HDInsight-Hadoop实战(一)站点日志分析的更多相关文章
- Awk使用及站点日志分析
Awk使用及站点日志分析 Awk简单介绍 概述 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入, ...
- 一、基于hadoop的nginx访问日志分析---解析日志篇
前一阵子,搭建了ELK日志分析平台,用着挺爽的,再也不用给开发拉各种日志,节省了很多时间. 这篇博文是介绍用python代码实现日志分析的,用MRJob实现hadoop上的mapreduce,可以直接 ...
- 二、基于hadoop的nginx访问日志分析---计算日pv
代码: # pv_day.py#!/usr/bin/env python # coding=utf-8 from mrjob.job import MRJob from nginx_accesslog ...
- spark实战之网站日志分析
前面一篇应该算是比较详细的介绍了spark的基础知识,在了解了一些spark的知识之后相必大家对spark应该不算陌生了吧!如果你之前写过MapReduce,现在对spark也很熟悉的话我想你再也不想 ...
- 四、基于hadoop的nginx访问日志分析---top 10 request
代码: # cat top_10_request.py #!/usr/bin/env python # coding=utf-8 from mrjob.job import MRJob from mr ...
- 五、基于hadoop的nginx访问日志分析--userAgent和spider
useragent: 代码(不包含蜘蛛): # cat top_10_useragent.py #!/usr/bin/env python # coding=utf-8 from mrjob.job ...
- 三、基于hadoop的nginx访问日志分析--计算时刻pv
代码: # cat pv_hour.py #!/usr/bin/env python # coding=utf-8 from mrjob.job import MRJob from nginx_acc ...
- 《ElasticSearch6.x实战教程》之实战ELK日志分析系统、多数据源同步
第十章-实战:ELK日志分析系统 ElasticSearch.Logstash.Kibana简称ELK系统,主要用于日志的收集与分析. 一个完整的大型分布式系统,会有很多与业务不相关的系统,其中日志系 ...
- Linux 日志分析工具之awstats
一.awstats 是什么 官方网站:AWStats is a free powerful and featureful tool that generates advanced web, strea ...
随机推荐
- 对C语言中sizeof细节的三点分析
转自对C语言中sizeof细节的三点分析 1.sizeof是运算符,跟加减乘除的性质其实是一样的,在编译的时候进行执行,而不是在运行时才执行. 那么如果编程中验证这一点呢?ps:这是前两天朋友淘宝面试 ...
- 如何启动 SQL Server Agent(SQL Server 配置管理器)
如何启动 SQL Server Agent(SQL Server 配置管理器) SQL Server 2008 R2 其他版本 4(共 6)对本文的评价是有帮助 - 评价此主题 可以从 SQL S ...
- Log4j配置全说明
转载:http://zhangjunhd.blog.51cto.com/113473/21014/ 1.Log4j简介 Log4j是Apache的一个开源项目,它允许开发者以任意间隔输出日志信息.Lo ...
- 严重: The web application [] registered the JDBC driver 错误
近日发现启动tomcat的时候报如下警告: -- :: org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc 严重: The ...
- http://blog.csdn.net/zhang_xinxiu/article/details/38655311
一.Activiti下载及简介 1.1.Activiti下载 官网下载地址:http://activiti.org/download.html Note:下载时不一定要使用最新版本的,最 ...
- AVPicture、AVFrame和AVPacket
http://blog.csdn.net/ym012/article/details/6540065 从定义上可知,AVPicture是AVFrame的一个子集,他们都是数据流在编解过程中用来保存数据 ...
- Protel封装库
一.目录下面的一些封装库中,根据元件的不同封装我们将其封装分为二大类:一类是分立元件的封装,一类是集成电路元件的封装 1.分立元件类: 电容:电容分普通电容和贴片电容: 普通电容在Miscellane ...
- ActionBar官方教程(5)ActionBar的分裂模式(底部tab样式),隐藏标题,隐藏图标
Using split action bar Split action bar provides a separate bar at the bottom of the screen to displ ...
- Sublime Text修改显示图标
选择喜欢的图片 首先你需要选择一个中意的图片做为新的图标,格式可以是png,jpg,gif的 转为ico格式 我们需要ico格式的图片,所以需要将上述的图片转换一下格式.同样,转ico格式的软件很多, ...
- [swustoj 764] 校门外的树 Plus Plus
校门外的树 Plus Plus(0764) 问题描述 西南某科技大学的校门外长度为 L 的公路上有一排树,每两棵相邻的树之间的间隔都是 1 米.我们可以把马路看成一个数轴,马路的一端在数轴 1 的位置 ...