基于Hadoop的电商用户分析系统

摘 要
本文旨在综合分析用户行为模型的特点以实时系统解决方案的基础上,设计并研发一套基于Hadoop的电商实时用户行为分析系统,并在实际的电商网站中进行使用。对电商网站中的用户行为进行分析和研究;分析用户行为分析系统的应用场景并针对实际的应用场景设计一套基于Hadoop的实时用户行为分析系统;开发JAVAEE框架下的实时用户行为分析系统;将实时用户行为分析系统在电商网站中进行投入使用。
本次毕业设计的课题是基于Hadoop的电商用户用户行为的分析系统,那么研究的方向就是大数据中的Hadoop方向,在我的课题中我主要研究的方向是数据的采集来源,通过Flume埋点来采集日志信息,或者通过Nginx反向代理服务器来收集日志信息,来采集到我们需要的用户浏览网页的信息,然后就是研究的大数据的存储问题。
关键词:电商数据;用户行为;分析系统;Hadoop;Java
Abstract
This paper aims to comprehensively analyze the characteristics of user behavior model on the basis of real-time system solutions, design and develop a Hadoop-based real-time user behavior analysis system, and use it in actual e-commerce websites.Analyze and study user behavior in e-commerce websites; analyze the application scenarios of user behavior analysis system and design a real-time user behavior analysis system based on Hadoop; develop real-time user behavior analysis system under JAVAEE framework; and put real-time user behavior analysis system into use in e-commerce website.
The graduation design project is based on Hadoop electricity business user behavior analysis system, so the research direction is the Hadoop direction of big data, in my project my main research direction is the source of data collection, through Flume buried point to collect log information, or through Nginx reverse proxy server to collect log information, to collect our need users to browse the web information, and then is the study of big data storage problem.
Key words: e-commerce data; user behavior; analysis system; Hadoop; Java
目 录
摘 要 I
Abstract II
第1章 绪论 1
1.1 编写目的 1
1.2 背景及意义 1
1.3 开发及运行环境 1
第2章 系统相关技术介绍 3
2.1 hadoop系统架构 3
2.1.1 hadoop 生态架构和概况 3
2.2 HDFS(Hadoop分布式文件系统) 4
2.2.1 HDFS 设计说明 4
2.2.2 HDFS的存储机制和核心 4
2.3 Mapreduce(分布式计算框架) 7
2.3.1 mapreduce计算框架设计说明 7
2.3.2 Hadoop的Mapreduce计算开源框架的计算流程: 8
2.4 Yarn(资源管理框架) 9
2.4.1 yarn的架构 9
2.4.2 yarn的各个角色的职责 10
2.4.3 YARN 作业执行流程 11
2.5 系统中的数据库介绍和其他工具简介 12
2.5.1 hive是什么 12
2.5.2 hive的架构 13
2.5.3 hive的特点 13
2.5.4 hbase是什么 13
2.5.5 hbase的存储机制和表结构 14
2.5.7 数据导入导出工具sqoop和日志收集工具flume 15
第3章 需求分析 17
3.1 系统概述 17
3.2 系统功能需求 17
3.2.1 收集原始数据 17
3.2.2 计算物品相似度矩阵 18
3.2.3 计算用户购买向量 18
3.2.4 计算推荐向量并去重和排序 18
3.2.5 数据入库 18
3.2.6 作业控制 19
3.2.7商品推荐功能 19
3.3 系统非功能需求 19
第4章 概要设计 20
4.1系统架构设计 20
4.2系统层次架构设计 21
4.3系统功能模块设计 22
4.3.1 计算物品相似度矩阵 22
4.3.2推荐矩阵(相似度矩阵*向量) 23
4.3.3对推荐向量进行处理 23
4.3.4数据入库 23
4.4系统数据库设计 24
4.5推荐模块程序流程图 25
4.6系统架构图 25
4.7数据预处理层 26
4.8推荐结果生成层 26
4.9推荐系统流程图 27
第5章 系统实现 28
5.1计算用户购买商品的列表 28
5.2计算商品的共现关系 28
5.3计算用户的购买向量 28
5.4推荐结果 29
5.5数据去重 29
5.6推荐结果入库 30
5.7构建作业流对象 32
第6章 系统测试 33
6.1计算用户购买商品的列表 33
6.2计算商品的共现次数(共现矩阵) 33
6.3计算用户的购买向量 33
6.4推荐结果 33
6.5数据去重 34
6.6推荐结果入库 35
6.7 web系统推荐商品实现 35
总 结 36
参考文献 37
致 谢 39
第3章 需求分析
3.1 系统概述
电商用户分析系统是对用户的历史行为进行挖掘,对用户兴趣信息进行建模,并对用户未来行为进行预测,从而建立用户和内容的关系,满足用户对商品的推荐需求的一种智能系统。通过对主要的推荐算法进行比较分析,模拟实现了基于用户行为的智能推荐系统,提高了推荐算法的有效性。电商用户分析系统是为了更精准的为用户推荐他们想要的内容,如果一个用户在浏览商品信息的时候,通过对用户数据的记录,和已经存在的其他的用户记录进行分析,从而为用户推荐相应的数据。本次毕业设计是基于Hadoop的电商用户分析系统,本此课设通过对用户行为的研究,发现用户购买的偏好波动幅度偏大,如何充分利用这一特征是提高推荐系统精准度的关键。
用户行为数据的处理。电商用户分析系统用户、商品行为主要是用户的购买行为。
购买行为包含了丰富的用户购买商品,如何处理这些购买商品是推荐系统实现的关键。
系统必须具有高扩展性。网上购物每时每刻都会有新的数据产生,都会执行新的购物行为,系统的扩展性变得尤为关键。
推荐系统的推荐质量。推荐系统的最终目的是推荐,所以推荐质量是整个系统设计的最终目的。好的推荐系统需要兼顾系统的精准度、覆盖率以及新颖度。
3.2 系统功能需求
基于Hadoop的商品推荐引擎大致可以分为5部分,分别是:计算用户的购买向量、计算物品的相似度矩阵、计算推荐度及相关处理、数据导入数据库和对于整个项目的全部作业控制。
3.2.1 收集原始数据
推荐系统是基于用户、商品行为数据来进行推荐的,没有用户商品数据的推荐系统是无法进行推荐的。rawdata文件:该文件是收集用户对物品的偏好,形成“用户 物品 偏好”的数据集。数据格式:用户编号 物品编号 偏好值。
本文转载自:http://www.biyezuopin.vip/onews.asp?id=16482

 package com.zwj.controller;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;

import com.zwj.service.ProductService;
import com.zwj.service.UserService;
import com.zwj.vo.Cart;
import com.zwj.vo.Product;
import com.zwj.vo.User;
//让控制器成为一个bean
@Controller
//这个控制器是接受user_reg页面传过来的参数去操作数据库
public class UserController{
	@Autowired
	private SqlSession sqlSession;
	@Autowired
	private UserService us;
	@Autowired
	private ProductService ps;
	@Autowired
	private HttpServletRequest req;
	private int count;
	@RequestMapping("/userReg.action")
	//jsp页面通过userReg.action找到这个方法
	public String userReg(User user) throws IOException{
		Map<String,Object> map = new HashMap<String, Object>();
		map.put("phone_mobile", user.getPhone_mobile());
		map.put("login_password", user.getLogin_password());  
		//判断页面传回的数据要求
		Pattern pattern = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(17[6])|(18[01236789]))\\d{8}$");
	     Matcher matcher = pattern.matcher(user.getPhone_mobile());
		if(user.getPhone_mobile()==null || user.getLogin_password()==null || !matcher.matches()){
			return "pages/register-fail.html";
		}	
		//获取当前注册时间
		Date date = new Date();
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		map.put("register_time", df.format(date));		
		//生成唯一识别码
		 String s = UUID.randomUUID().toString(); 
    	 String user_code =  s.substring(0,8)+s.substring(9,13)+s.substring(14,18)+s.substring(19,23)+s.substring(24); 
    	 map.put("user_code", user_code);	 
    	 //将数据添加到数据库中
		int a = sqlSession.insert("com.zwj.dao.addUser",map);	
		req.setAttribute("phone_mobile", user.getPhone_mobile());
		req.setAttribute("login_password", user.getLogin_password());
		return "pages/register-ok.html";
	}
	//处理用户名唯一性的判断                                                                     
	@RequestMapping("/userJudge.action")
	@ResponseBody
	public User userJudge(String phone_mobile) {
		User u = sqlSession.selectOne("com.zwj.dao.judgeUser",phone_mobile);
		return u;
	}	
	//用户登录的判断
	@RequestMapping("/userLogin.action")
	public String userLogin(String phone_mobile,String login_password) throws IOException{
		//对页面传回的值进行二次判断
		 Pattern pattern = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(17[6])|(18[01236789]))\\d{8}$");
	     Matcher matcher = pattern.matcher(phone_mobile);
		if(phone_mobile==null || login_password==null || !matcher.matches()){
			return "pages/login-fail.html";
		}		
		User u = us.userLogin(phone_mobile, login_password);
		
		//查到用户了,执行登录成功的操作
		if(u!=null){
			count = sqlSession.selectOne("com.zwj.dao.count",u.getPhone_mobile());
			req.getSession().setAttribute("u", u);
			req.setAttribute("count", count);
			return "pages/main.jsp";
		}else{
			return "pages/login-fail.html";
		}
	}
	//用户退出销毁session 跳转到登录页
	@RequestMapping("/userExit.action")
	public String userExit(HttpSession session){
		session.invalidate();
		return "index.html";
	}
	@RequestMapping("/showCart.action")
	public String showCart(HttpSession session) throws IOException{
		User u = (User) session.getAttribute("u");
	     List<Cart> c= ps.showCart(Long.parseLong(u.getPhone_mobile()));
			req.setAttribute("c", c);
			return "pages/cart.jsp";	
	}
	@RequestMapping("/addCart.action")
	public String addCart(Long pid,HttpSession session) throws IOException{
		Map<String,Object> map = new HashMap<String, Object>();
		Product p = ps.showProduct(pid);
		User u = (User) session.getAttribute("u");
		map.put("uid", u.getPhone_mobile());
		map.put("pic", p.getPic()); 
		map.put("pname", p.getName());
		map.put("num", 1);		
    	map.put("price", p.getPrice());	 
    	 //将数据添加到数据库中
		int a = sqlSession.insert("com.zwj.dao.addCart",map);	
		count = sqlSession.selectOne("com.zwj.dao.count",u.getPhone_mobile());
		req.setAttribute("count", count);
		return "pages/addCart-ok.jsp";
	}
	@RequestMapping("/xm6_m.action")
	public String more_xm(HttpSession session){
		User u = (User) session.getAttribute("u");
		count = sqlSession.selectOne("com.zwj.dao.count",u.getPhone_mobile());
		req.setAttribute("count", count);
		return "pages/xm6_m.jsp";
	}
	@RequestMapping("/pg_m.action")
	public String more_pg(HttpSession session){
		User u = (User) session.getAttribute("u");
		count = sqlSession.selectOne("com.zwj.dao.count",u.getPhone_mobile());
		req.setAttribute("count", count);
		return "pages/pg_m.jsp";
	}
	@RequestMapping("/gl_m.action")
	public String more_gl(HttpSession session){
		User u = (User) session.getAttribute("u");
		count = sqlSession.selectOne("com.zwj.dao.count",u.getPhone_mobile());
		req.setAttribute("count", count);
		return "pages/gl_m.jsp";
	}
	@RequestMapping("/jn_m.action")
	public String more_jn(HttpSession session){
		User u = (User) session.getAttribute("u");
		count = sqlSession.selectOne("com.zwj.dao.count",u.getPhone_mobile());
		req.setAttribute("count", count);
		return "pages/jn_m.jsp";
	}
	@RequestMapping("/main.action")
	public String main(HttpSession session){
		User u = (User) session.getAttribute("u");
		count = sqlSession.selectOne("com.zwj.dao.count",u.getPhone_mobile());
		req.setAttribute("count", count);
		return "pages/main.jsp";
	}
	@RequestMapping("/result.action")
	public String result(HttpSession session){
		/*User u = (User) session.getAttribute("u");
		count = sqlSession.selectOne("com.zwj.dao.count",u.getPhone_mobile());
		req.setAttribute("count", count);*/
		return "pages/result.jsp";
	}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

电商数据分析系统是一个基于大数据技术的系统,旨在帮助电商企业更好地了解用户需求、提高销售效率、优化供应链等方面。Hadoop作为大数据技术的代表,可以提供高效、可扩展、可靠的数据处理和存储能力,因此被广泛应用于电商数据分析系统中。 下面是基于Hadoop电商数据分析系统的设计: 1. 数据采集 数据采集是整个系统的基础,电商数据分析系统需要采集来自多个渠道的数据,包括用户行为数据、订单数据、商品数据等等。这些数据可以通过API、爬虫等方式进行采集,并存储在Hadoop分布式文件系统(HDFS)中。 2. 数据处理 在Hadoop中,数据处理主要通过MapReduce程序实现。对于电商数据分析系统,可以通过MapReduce程序进行数据清洗、数据预处理、数据聚合等工作。例如,可以通过MapReduce程序对用户行为数据进行聚合,得出用户的购买习惯、浏览习惯等等。 3. 数据存储 Hadoop提供了HDFS和HBase两种数据存储方式。在电商数据分析系统中,可以将清洗后的数据存储在HBase中,以便更快的查询和分析。同时,HDFS也可以用来存储原始数据和处理后的数据。 4. 数据分析 数据分析电商数据分析系统的核心,通过分析数据可以得出用户需求、销售趋势等信息。对于电商数据分析系统,可以使用Hive或Pig等工具进行数据分析。例如,可以通过Hive对订单数据进行分析,了解销售额、销售额占比、订单数等信息。 5. 数据可视化 数据可视化是将数据分析结果呈现给用户的方式,可以使用数据可视化工具如Tableau、PowerBI等进行可视化。通过数据可视化,可以更直观地了解数据分析结果,并更好地进行决策。 总之,基于Hadoop电商数据分析系统,可以帮助电商企业更好地把握市场动态,提高销售效率,并优化供应链等方面。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值