m0_68487028 2023-06-09 15:32 采纳率: 50%
浏览 87
已结题

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

  • 写回答

3条回答 默认 最新

  • 才华横溢caozy 2023-06-09 16:09
    关注

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

    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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
  • 成都渔民 2023-06-09 21:29
    关注

    你如果自己写了七八成,我们还可以帮你修改一下,解决遇到的问题。从头做确实工作量太大。

    评论
  • 夜深人静的码农 2023-06-09 20:49
    关注

    直接结题吧,15找人做项目,真希望以后你的老板也给你15一个月

    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月9日
  • 已采纳回答 6月9日
  • 修改了问题 6月9日
  • 创建了问题 6月9日

悬赏问题

  • ¥15 eclipse无法正常运行
  • ¥15 定义了函数,但是无法根据函数定义触发器
  • ¥20 5变量卡诺图化简得出与非门电路图
  • ¥15 Python爬取交通拥堵指数数据
  • ¥15 使用vba抓取重定向网页问题
  • ¥20 付费需求测试程序(细谈)。
  • ¥15 为什么这段c++代码会报这么多语法错误?
  • ¥20 如何利用C语言实现用最小二乘法选配两个经验公式
  • ¥50 vue-codemirror如何对指定行 指定位置的 字符进行背景颜色或者字体颜色的修改?
  • ¥30 遇到一个的问题,请教各位