hadoop网站点击流数据分析项目

img


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中,便于工作人员找出重点客户,为客户进行相应的商品推荐。

借助文心一言写的:
项目实验报告

  1. 实验目的

本实验旨在通过数据预处理、创建Hive表和指标统计等步骤,对WebLog数据进行分析,以便为网站运营提供数据支持。

  1. 实验环境
  • Hadoop集群:HDFS、YARN、MapReduce
  • Hive:用于数据存储和查询
  • MySQL:用于存储VIP用户信息
  1. 实验步骤

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找人做项目,真希望以后你的老板也给你15一个月