spark
Scala
Scala
共28个文件
xml: 9
scala: 8
csv: 4
properties: 2
gitignore: 1
LICENSE: 1
md: 1
png: 1
txt: 1
这是基于spark的数字仓库推荐系统
大数据实训(数仓推荐系统)
第一章 项目体系架构设计
1.1 项目系统架构
项目以推荐系统建设领域知名的经过修改过的中文亚马逊电商数据集作为依托,以某电商网站真实业务数据架构为基础,构建了符合教学体系的一体化的电商推荐系统,包含了离线推荐与实时推荐体系,综合利用了协同过滤算法以及基于内容的推荐方法来提供混合推荐。提供了从前端应用、后台服务、算法设计实现、平台部署等多方位的闭环的业务实现。
用户可视化 :主要负责实现和用户的交互以及业务数据的展示,主体采用AngularJS2进行实现,部署在 Apache服务上。
综合业务服务:主要实现JavaEE层面整体的业务逻辑,通过Spring进行构建,对接业务需求。部署在 Tomcat上。
【数据存储部分】
业务数据库:项目采用广泛应用的文档数据库MongDB作为主数据库,主要负责平台业务逻辑数据的存储。
缓存数据库:项目采用Redis作为缓存数据库,主要用来支撑实时推荐系统部分对于数据的高速获取需 求。
【离线推荐部分】
离线统计服务:批处理统计性业务采用Spark Core + Spark SQL进行实现,实现对指标类数据的统计任务。
离线推荐服务:离线推荐业务采用Spark Core + Spark MLlib进行实现,采用ALS算法进行实现。
【实时推荐部分】
日志采集服务:通过利用Flume-ng对业务平台中用户对于商品的一次评分行为进行采集,实时发送到 Kafka集群。
消息缓冲服务:项目采用Kafka作为流式数据的缓存组件,接受来自Flume的数据采集请求。并将数据 推送到项目的实时推荐系统部分。
实时推荐服务:项目采用Spark Streaming作为实时推荐系统,通过接收Kafka中缓存的数据,通过设 计的推荐算法实现对实时推荐的数据处理,并将结构合并更新到MongoDB数据库。
1.2 项目数据流程
第二章 创建项目并初始化业务数据
我们的项目主体用Scala编写,采用IDEA作为开发环境进行项目编写,采用maven作为项目构建和管理工具。
2.1 在IDEA中创建maven项目
打开IDEA,创建一个maven项目,命名为hn-recommender。具体流程:idea--->file--->new ---->project--->左导航选择maven--->
选择在new window中开。
2.1.1 项目框架搭建
确保项目maven是否是自己安装的maven。
在项目src/main/的目录下创建scala目录(流程:选中main目录--->右键--->new --->directory ---> 写入Scala),然后并将其设置为资源目录(idea--->file--->project structure
为项目添加Scala的sdk依赖,接着3的步骤做如下流程:
2.1.2 添加项目依赖
首先,对于整个项目而言,需要引入很多相关jar包依赖,将如下代码10行及后面所有内容覆盖hn-recommender项目中的pom.xml的第10行及以后的内容:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.qianfeng</groupId>
<artifactId>ECRecommand</artifactId>
<version>1.0</version>
<!--依赖Jar包版本常量-->
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<log4j.version>1.2.17</log4j.version>
<slf4j.version>1.7.22</slf4j.version>
<mongodb-spark.version>2.4.3</mongodb-spark.version>
<casbah.version>3.1.1</casbah.version>
<redis.version>4.0.2</redis.version>
<kafka.version>2.4.1</kafka.version>
<spark.version>3.1.2</spark.version>
<jblas.version>1.2.1</jblas.version>
</properties>
<!--项目依赖-->
<dependencies>
<!--日志相关依赖-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<!-- SparkCore和SQL的依赖引入 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>${spark.version}</version>
</dependency>
<!-- 加入MongoDB的驱动 -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>casbah-core_2.12</artifactId>
<version>${casbah.version}</version>
</dependency>
<!-- 加入Spark读写MongoDB的驱动 -->
<dependency>
<groupId>org.mongodb.spark</groupId>
<artifactId>mongo-spark-connector_2.12</artifactId>
<version>${mongodb-spark.version}</version>
</dependency>
<!--引入Kafka的驱动-->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-streams</artifactId>
<version>${kafka.version}</version>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>${kafka.version}</version>
</dependency>
<!--基于Java的快速线性代数库依赖-->
<dependency>
<groupId>org.scalanlp</groupId>
<artifactId>jblas</artifactId>
<version>${jblas.version}</version>
</dependency>
<!--SparkMLlib的依赖-->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_2.12</artifactId>
<version>${spark.version}</version>
</dependency>
<!--引入SparkStreaming的依赖-->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.12</artifactId>
<version>${spark.version}</version>
</dependency>
<!-- redis依赖 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.0.0</version>
</dependency>
<!--引入Streaming整合Kafk的依赖-->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-kafka-0-10_2.12</artifactId>
<version>${spark.version}</version>
</dependency>
</dependencies>
<build>
<!--声明并引入子项目共有的插件-->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<!--所有的编译用JDK1.8-->
<configuration>
<source>1.8</source>
沐知全栈开发
- 粉丝: 5818
- 资源: 5226
最新资源
- 基于java+springboot+vue+mysql的线上医院挂号系统设计与实现.docx
- 基于java+springboot+vue+mysql的箱包存储系统设计与实现.docx
- 基于java+springboot+vue+mysql的校园二手书交易平台设计与实现.docx
- 基于java+springboot+vue+mysql的校园健康驿站管理系统设计与实现.docx
- 02-【名企案例】-08-微软员工手册.doc
- 基于java+springboot+vue+mysql的校园竞赛管理系统设计与实现.docx
- 基于java+springboot+vue+mysql的校园生活服务平台设计与实现.docx
- 02-【名企案例】-15-龙湖地产员工手册.doc
- 基于java+springboot+vue+mysql的校园外卖服务系统设计与实现.docx
- 基于java+springboot+vue+mysql的校园新闻管理系统设计与实现.docx
- 基于java+springboot+vue+mysql的校园食堂订餐系统设计与实现.docx
- 06-【制造企业】-03-员工手册.doc
- 11-【管桩公司】-01-员工手册.doc
- 10-【装饰公司】-01-员工手册.doc
- 18-【餐饮公司】-02-员工手册.doc
- 基于java+springboot+vue+mysql的学生选课系统设计与实现.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈