ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

电商用户行为分析项目 - 完整复盘

2026/8/20 15:10:29 拓冰建站 浏览量
电商用户行为分析项目 - 完整复盘 记录了一个迷你项目的分析判断流程以及遇到的问题文章摘要本迷你数据分析项目因Hive/Hadoop内存不足无法执行MR任务转而采用AWK命令成功完成分析。关键步骤包括创建数据文件、解决Hive建表关键字冲突问题、通过AWK实现三类分析品类转化率/用户行为统计/时段分布。核心收获包括掌握AWK工具使用、理解Hive局限性如内存敏感和关键字限制以及灵活切换技术方案的能力Hive→AWK。项目验证了轻量级工具在小数据场景的高效性建议后续在资源充足时可尝试Hive/Spark处理更大数据集。当前AWK方案已完整输出所有分析指标。项目摘要用Linux Shell和AWK处理了一份电商行为模拟数据约500条记录做了简单的统计汇总。主要目的是练手数据处理流程项目本身不大重在跑通全流程。1 项目背景目标完成一个迷你数据分析项目掌握HiveHadoop的基本操作实际情况成功完成数据分析Hive/Hadoop因内存问题无法正常执行MR任务采用AWK命令替代成功得出分析结果技术栈Hive ,Hadoop , AWK , Linux Shell2 完整操作步骤回顾第1步创建数据文件cd /usr/local/hadoop/project_datapwd记住路径后面要用到遇到的问题找不到文件先查看文件在哪里再进入文件目录用下面的命令查看# 在当前目录查看所有文件 ls -la /usr/local/hadoop/第2步Hive建表遇到障碍-- 第一次建表失败 create table behavior ( user_id int, item_id int, category string, action string, time string -- time是保留关键字 ); -- 报错ParseException line 6:2 cannot recognize input near time修改代码先删掉表再创建表drop table behavior;问题解决完后继续建表并加载数据create table behavior ( user_id int, item_id int, category string, action string, action_time string -- 避开关键字 );加载数据#路径为pwd显示的如 /usr/local/hadoop/hive_data load data local inpath /usr/local/hadoop/hive_data overwrite into table behavior;经验总结time、date、timestamp是Hive保留关键字不能用作字段名建表时加前缀是好习惯user_id、action_time、create_date第3步Hive查询失败执行下面的命令之后出现报错内存问题select count(*) from behavior; -- 报错FAILED: Execution Error, return code 2因为机器内存不够所以MapReduce任务无法启动执行不了hive查询。本地模式设置了减小内存但仍然失败Memory是6GB#关MR走本地 set hive.exec.mode.local.autotrue; set hive.exec.mode.local.auto.inputbytes.max50000000; --50MB /* 50,000,000 bytes ÷ 1024 48,828 KB 48,828 KB ÷ 1024 47.68 MB ≈ 50 MB */应对不用Hive改用Linux命令直接分析CSV文件第4步AWK命令分析分析1各品类转化率awk -F, NR1 { if($3电子 $4浏览) views_e if($3电子 $4购买) buys_e if($3服装 $4浏览) views_c if($3服装 $4购买) buys_c if($3食品 $4浏览) views_f if($3食品 $4购买) buys_f } END { print 品类\t浏览数\t购买数\t转化率% print 电子\t views_e \t buys_e \t buys_e*100/views_e print 服装\t views_c \t buys_c \t buys_c*100/views_c print 食品\t views_f \t buys_f \t buys_f*100/views_f } behavior.csv执行后输出含义服装类转化率100%虽然样本小说明用户浏览后都买了电子类转化率66.67%表现不错食品类转化率0%用户只看不买可能价格或品类有问题分析2用户行为汇总awk -F, NR1 {print $1,$4} behavior.csv | sort | awk -F, { user[$1]; action_list[$1]action_list[$1],$2 } END { print 用户ID\t行为总数\t行为类型数\t做过哪些 for(u in user) { split(action_list[u], arr, ,) delete seen count0 for(i in arr) { if(arr[i]! !seen[arr[i]]) { count } } print u\tuser[u]\tcount\taction_list[u] } } | sort -k2 -nr输出含义用户1001是最活跃用户5次行为涵盖所有类型用户1004也很活跃行为路径完整浏览→收藏→加购→购买用户1005只是看看没有深度互动关键学习AWK中数组的用法array[key]valuesplit()函数分割字符串delete删除数组用于去重sort -k2 -nr按第2列数字降序排序分析3每小时行为分布awk -F, NR1 { hoursubstr($5,12,2) print hour,$4 } behavior.csv | sort | uniq -c | awk { print $2\t$3\t$1 } | sort输出上午10点是用户最活跃的时候逛的人多、买的人也多。到了11点人流量直接腰斩啥数据都跟着少了一半命令链解析awk- 提取小时和动作sort- 排序uniq -c- 去重并计数awk- 格式化输出sort- 最终排序第5步结果分析数据长什么样单表behavior约500条行为记录包含用户ID、商品ID、行为类型、时间四个字段。跑了什么分析各品类转化率用户行为汇总每小时行为分布看到什么结果服装类转化率100%电子类66.67%食品类0%食品类用户只看不买需要调整品类或价格用户1001最活跃5次行为覆盖全路径用户1005仅浏览无互动上午9-10点是访问高峰适合推送营销内容有什么用验证了AWKLinux Shell可以快速处理CSV格式的行为数据简单的SQL查询和分组统计没问题后续可以加图表展示或者定时自动跑3 技术栈对比方案优点缺点本次使用HiveSQL语法友好适合大数据需要Hadoop集群内存要求高失败AWK轻量级无需额外服务语法不熟悉适合小数据成功Python功能强大易于理解需要安装Python环境备选4 核心经验总结做对的遇到障碍及时切换方案Hive跑不动立即改用AWK逐步验证每步都确认结果再继续保留关键字避坑time不能用改成action_time用ls和pwd确认文件位置最终用AWK成功完成全部3个分析踩过的坑Hive建表字段名不能用关键字(time)AWK变量名拼接错误(字符串和变量连接格式)AWK数组语法不熟悉(第一次用二维数组报错)文件路径不对(一开始找不到CSV文件)关键命令速记# 1 创建文件 cat 文件名 EOF 内容 EOF# 2 AWK常用模式 awk -F, {处理逻辑} 文件名# 3 管道组合 命令1 | 命令2 | 命令35 复盘感悟不是技术多牛而是遇到问题时能快速找到替代方案本次项目的核心价值完成了数据分析目标虽然绕过了Hive掌握了AWK这个轻量级数据分析工具理解了Hive/Hadoop的局限性内存敏感学会了根据实际情况灵活调整技术方案6 后续优化方向如果以后数据量增大可以学习用Hive或Spark处理更大规模数据目前AWK方案对小数据量已经够用。但在当前环境下AWK方案就是最优解项目状态已完成所有分析指标均得出有效结论完结