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>
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
这是一个基于Scala的Spark数字仓库推荐系统设计,使用Scala语言开发,包含28个文件。主要文件类型包括9个XML文件、8个Scala源文件、4个CSV文件、2个Properties文件、1个gitignore文件、1个LICENSE文件、1个Markdown文档、1个PNG图片文件和1个TXT文件。该项目是一个基于Spark的数字仓库推荐系统,适合用于个人学习和实践Scala的开发技术。
资源推荐
资源详情
资源评论
收起资源包目录
upload.zip (28个子文件)
pom.xml 6KB
src
main
resources
products.csv 25KB
sample_movielens_ratings.txt 32KB
ratings.csv 1.18MB
log4j.properties 262B
scala
ALSTest.scala 2KB
com
qianfeng
statics
StaticsRecommender.scala 5KB
recommand
offline
ALSTrainer.scala 3KB
recommender
online
OnlineRecommende.scala 9KB
content
ContentBaseRecommender.scala 6KB
offline
OffLineRecommender.scala 6KB
dataload
DataLoader.scala 3KB
ItemCFRecommender.scala 4KB
LICENSE 11KB
.idea
jarRepositories.xml 1KB
codeStyles
codeStyleConfig.xml 149B
Project.xml 605B
uiDesigner.xml 9KB
runConfigurations.xml 337B
vcs.xml 180B
misc.xml 528B
compiler.xml 535B
.gitignore 182B
target
classes
products.csv 25KB
ratings.csv 1.18MB
log4j.properties 262B
img
1-2.png 261KB
readme.txt 62KB
共 28 条
- 1
资源评论
沐知全栈开发
- 粉丝: 5702
- 资源: 5216
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- IMG_20241115_051050812.jpg
- 基于javaweb的网上拍卖系统,采用Spring + SpringMvc+Mysql + Hibernate+ JSP技术
- polygon-mumbai
- Chrome代理 switchyOmega
- GVC-全球价值链参与地位指数,基于ICIO表,(Wang等 2017a)计算方法
- 易语言ADS指纹浏览器管理工具
- 易语言奇易模块5.3.6
- cad定制家具平面图工具-(FG)门板覆盖柜体
- asp.net 原生js代码及HTML实现多文件分片上传功能(自定义上传文件大小、文件上传类型)
- whl@pip install pyaudio ERROR: Failed building wheel for pyaudio
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功