3.1 数据预处理(1)获取到每个字段所对应的值(ip、logtime、url、traffic)(2)将logtime字段处理成yyYY/MM/dd HH:mm:ss格式的(3)通过MapReduce将获取静态资源的记录清洗掉,并将url记录处理成只有目录地址的格式。去除以GET /static和GET /uc_server开头的记录,均为请求静态资源;url最终格式:“GET /data/cache/style_1_widthauto.css?y7a HTTP/1.1”,去除请求方式和后缀,得到“/data/cache/style_1_widthauto.css?y7a”。代码如下:3.2 创建Hive表将预处理后的结果数据导入到hive表当中,方便下面使用hive对weblog数据进行统计分析。执行命令:3.3 指标统计(1) 在hive中创建一个外部表,将处理后的weblog数据加载到表中执行命令:(2)PV 分析(浏览量即多少条记录)并将结果写入到hive表中执行命令:(3)分析VIP用户(每天访问网站次数大于50次的用户,通过IP进行统计)执行命令:(4)UV分析(网站每天访客数。通过IP总数进行统计)执行命令:(5)注册人数(统计每天网站的注册人数,通过统计访问注册页面“/member.php?mod=register”的总次数)执行命令:(6)将VIP用户表导出到mysql中,便于工作人员找出重点客户,为客户进行相应的商品推荐。
hadoop网站点击流数据分析项目
3.1 数据预处理(1)获取到每个字段所对应的值(ip、logtime、url、traffic)(2)将logtime字段处理成yyYY/MM/dd HH:mm:ss格式的(3)通过MapReduce将获取静态资源的记录清洗掉,并将url记录处理成只有目录地址的格式。去除以GET /static和GET /uc_server开头的记录,均为请求静态资源;url最终格式:“GET /data/cache/style_1_widthauto.css?y7a HTTP/1.1”,去除请求方式和后缀,得到“/data/cache/style_1_widthauto.css?y7a”。代码如下:3.2 创建Hive表将预处理后的结果数据导入到hive表当中,方便下面使用hive对weblog数据进行统计分析。执行命令:3.3 指标统计(1) 在hive中创建一个外部表,将处理后的weblog数据加载到表中执行命令:(2)PV 分析(浏览量即多少条记录)并将结果写入到hive表中执行命令:(3)分析VIP用户(每天访问网站次数大于50次的用户,通过IP进行统计)执行命令:(4)UV分析(网站每天访客数。通过IP总数进行统计)执行命令:(5)注册人数(统计每天网站的注册人数,通过统计访问注册页面“/member.php?mod=register”的总次数)执行命令:(6)将VIP用户表导出到mysql中,便于工作人员找出重点客户,为客户进行相应的商品推荐。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 才华横溢caozy 2023-06-09 16:09关注
借助文心一言写的:
项目实验报告- 实验目的
本实验旨在通过数据预处理、创建Hive表和指标统计等步骤,对WebLog数据进行分析,以便为网站运营提供数据支持。
- 实验环境
- Hadoop集群:HDFS、YARN、MapReduce
- Hive:用于数据存储和查询
- MySQL:用于存储VIP用户信息
- 实验步骤
3.1 数据预处理
(1)获取到每个字段所对应的值(ip、logtime、url、traffic)
data = [ ("192.168.1.1", "2022/01/01 00:00:00", "http://www.example.com/index.html", 10), ("192.168.1.2", "2022/01/01 00:05:00", "http://www.example.com/static/style_1_widthauto.css?y7a", 5), ("192.168.1.3", "2022/01/01 01:00:00", "http://www.example.com/uc_server", 3), ]
(2)将logtime字段处理成yyYY/MM/dd HH:mm:ss格式的
from datetime import datetime def format_logtime(logtime): return datetime.strptime(logtime, "%Y/%m/%d %H:%M:%S").strftime("%Y%m%d %H:%M:%S") formatted_data = [(ip, format_logtime(logtime), url, traffic) for ip, logtime, url, traffic in data]
(3)通过MapReduce将获取静态资源的记录清洗掉,并将url记录处理成只有目录地址的格式。去除以GET /static和GET /uc_server开头的记录,均为请求静态资源;url最终格式:“GET /data/cache/style_1_widthauto.css?y7a HTTP/1.1”,去除请求方式和后缀,得到“/data/cache/style_1_widthauto.css?y7a”。代码如下:
from collections import defaultdict import re def remove_static_resources(record): url = record[2] if not url.startswith("GET /static") and not url.startswith("GET /uc_server"): parts = re.split("\\?|&", url)[1].split("&")[0].split("/")[-1] + " HTTP/1.1" return (record[0], record[1], parts) else: return record filtered_data = list(map(remove_static_resources, formatted_data))
3.2 创建Hive表将预处理后的结果数据导入到hive表当中,方便下面使用hive对weblog数据进行统计分析。执行命令:
CREATE TABLE weblog_data (ip VARCHAR, logtime DATE, url VARCHAR, traffic INT);
for record in filtered_data: hive_cmd = f"INSERT INTO weblog_data VALUES('{record[0]}', '{record[1]}', '{record[2]}', {record[3]})" os.system(hive_cmd)
3.3 指标统计
(1) 在hive中创建一个外部表,将处理后的weblog数据加载到表中执行命令:CREATE EXTERNAL TABLE weblog_summary (ip VARCHAR, logtime DATE, url VARCHAR, traffic INT) LOCATION '/path/to/hivetable';
hive_cmd = f"LOAD DATA INPATH '/path/to/weblog_data' INTO TABLE weblog_summary;" os.system(hive_cmd)
(2)PV分析(浏览量即多少条记录)并将结果写入到hive表中执行命令:
SELECT COUNT(*) as PV FROM weblog_summary;
(3)分析VIP用户(每天访问网站次数大于50次的用户,通过IP进行统计)执行命令:
SELECT ip, COUNT(*) as VIP_visits FROM weblog_summary WHERE traffic > 50 GROUP BY ip HAVING COUNT(*) > 50;
(4)UV分析(网站每天访客数。通过IP总数进行统计)执行命令:
```sql本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 eclipse无法正常运行
- ¥15 定义了函数,但是无法根据函数定义触发器
- ¥20 5变量卡诺图化简得出与非门电路图
- ¥15 Python爬取交通拥堵指数数据
- ¥15 使用vba抓取重定向网页问题
- ¥20 付费需求测试程序(细谈)。
- ¥15 为什么这段c++代码会报这么多语法错误?
- ¥20 如何利用C语言实现用最小二乘法选配两个经验公式
- ¥50 vue-codemirror如何对指定行 指定位置的 字符进行背景颜色或者字体颜色的修改?
- ¥30 遇到一个的问题,请教各位