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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵