1、开发环境

IntelliJ IDEA + maven + git + linux

2、软件架构

hadoop + zookeeper + flume + kafka + nginx + spark + hive + mysql

3、项目描述

通过在电影网站系统埋点,获取到用户的点击事件(如用户喜欢哪部电影或对某部电影的评分)并将信息传至推荐系统,推荐系统根据该信息做出相应的处理,将推荐结果存入到mysql数据库中,web前端通过查询数据库将推荐的电影展示给用户。推荐流程如下:推荐系统(spark)

4、项目架构

推荐系统(spark)

5、具体步骤

  • 服务器规划(Linux centos7)

    NO 机器名称 IP 配置 用途
    1 master 10.2.47.1 16C/32G/500G master,cm,mysqldb
    2 slave1 10.2.47.2 16C/32G/500G slave
    3 slave2 10.2.47.3 16C/32G/500G slave
    4 slave3 10.2.47.4 16C/32G/500G slave
    5 slave4 10.2.47.5 16C/32G/500G slave
  • 电影数据集,地址,本次下载1m大小数据集

  • 环境搭建,参照cloudera manager

  • 数据的清洗:(上传数据到hdfs)

    1. 代码(com.zxl.datacleaner.ETL)打包上传

    2. 运行代码spark2-submit --class com.lianyun.zxl.datacleanner.ETL behavior-analyze-recommdend-1.0-SNAPSHOT.jar

    3. 成功将数据存于hive中

  • 数据的加工,根据ALS算法对数据建立模型

    1. 代码(com.zxl.datacleaner.RatingData)打包上传,测试建立模型

    2. 运行代码spark2-submit --class com.lianyun.zxl.datacleanner.RatingData behavior-analyze-recommdend-1.0-SNAPSHOT.jar

    3. 成功将数据存于hive中

  • 建立模型,根据RMSE(均方误差)选取较好的模型

    1. 代码(com.zxl.ml.ModelTraining)打包上传,建立模型

    2. 运行代码spark2-submit --class com.lianyun.zxl.ml.ModelTraining --total-executor-cores 2 --executor-memory 2g ----driver-java-options "-Xss10m" behavior-analyze-recommdend-1.0-SNAPSHOT.jar

    3. 成功将模型保存到hdfs上

  • 产生推荐结果

    1. 代码(com.zxl.ml.Recommender)打包上传,产生推荐结果

    2. 运行代码 spark2-submit --class com.lianyun.zxl.ml.Recommender behavior-analyze-recommdend-1.0-SNAPSHOT.jar

  • 推荐结果存入数据库,为所有用户推荐的结果,mysql中存入的格式是(userid,movieid,rating)

    1. 创建mysql数据库 create database recommend;

    2. 创建表alsTable create table alsTable(userid int,movieid int ,rating double);

    3. 代码(com.zxl.ml.RecommendForAllUsers)打包上传,数据入库

    4. 运行代码spark2-submit --class com.lianyun.zxl.ml.RecommendForAllUsers behavior-analyze-recommdend-1.0-SNAPSHOT.jar

    [代码](https://gitee.com/yu_shao/behavioranalyze)

 

 

相关文章: