大数据技术之电商推荐系统_第1页
大数据技术之电商推荐系统_第2页
大数据技术之电商推荐系统_第3页
大数据技术之电商推荐系统_第4页
大数据技术之电商推荐系统_第5页
已阅读5页,还剩20页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、必尚硅谷尚硅谷大数据技术之电商推荐系统尚硅谷大数据技术之电商推荐系统第i章项目体系架构设计项目以推荐系统建设领域知名的经过修改过的中文亚马逊电商数据集作为依托,以某电商网站真实业务数据架构为基础,构建了符合教学体系的一体化的电商推荐系统,包含了离线推荐与实时推荐体系,综合利用了协同过滤算法以及基于内容的推荐方法来提供混合推荐。提供了从前端应用、后台服务、算法设计实现、平台部署等多方位的闭环的业务实现。IScalaspakr5aLIScalaMLttb离找推荐雅瑞NGULARJ5Flume-ngongolRredis用户可视化墩与鼓布库综合业务服务业为数据库日志采集.服务Sirs0mM&

2、用户可视化:主要负责实现和用户的交互以及业务数据的展示,主体采用AngularJS2进行实现,部署在Apache服务上。综合业务服务:主要实现JavaEE层面整体的业务逻辑,通过Spring进行构建,对接业务需求。部署在Tomcat上。【数据存储部分】业务数据库:项目采用广泛应用的文档数据库MongDB作为主数据库,主要负更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网曲尚磋答尚硅谷大数据技术之电商推荐系统责平台业务逻辑数据的存储。缓存数据库:项目采用Redis作为缓存数据库,主要用来支撑实时推荐系统部分对于数据的高速获取需求。【离线推荐部分】离线统计服务:批处

3、理统计性业务采用SparkCore+SparkSQL进行实现,实现对指标类数据的统计任务。离线推荐服务:离线推荐业务采用SparkCore+SparkMLlib进行实现,采用ALS算法进行实现。【实时推荐部分】日志采集服务:通过利用Flume-ng对业务平台中用户对于商品的一次评分行为进行采集,实时发送到Kafka集群。消息缓冲服务:项目采用Kafka作为流式数据的缓存组件,接受来自Flume的数据采集请求。并将数据推送到项目的实时推荐系统部分。Kafka实时推荐服务:项目采用SparkStreaming作为实时推荐系统,通过接收中缓存的数据,通过设计的推荐算法实现对实时推荐的数据处理,并将结

4、构合并更新到MongoDB数据库。1.2项目数据流程|ScalaSfMKMLiib|Scala2依3、液建境计筌国志果集思会伊舍豆看更轩。山51M歙时惟存阴吊Flume-ng'Ir慰sprincifKaMyNGULARJG游.妻燧碑11外(Scali更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之电商推荐系统【系统初始化部分】0.通过SparkSQL将系统初始化数据加载到MongoDB中。【离线推荐部分】1 .可以通过Azkaban实现对于离线统计服务以离线推荐服务的调度,通过设定的运行时间完成对任务的触发执行。2 .离线统计服务从Mo

5、ngoDB中加载数据,将【商品平均评分统计】、【商品评分个数统计】、【最近商品评分个数统计】三个统计算法进行运行实现,并将计算结果回写到MongoDB中;离线推荐服务从MongoDB中加载数据,通过ALS算法分别将【用户推荐结果矩阵】、【影片相似度矩阵】回写到MongoDB中。【实时推荐部分】3 .Flume从综合业务服务的运行日志中读取日志更新,并将更新的日志实时推送到Kafka中;Kafka在收到这些日志之后,通过kafkaStream程序对获取的日志信息进行过滤处理,获取用户评分数据流UID|MID|SCORE|TIMESTAMP,并发送到另外一个Kafka队歹U;SparkStream

6、ing监听Kafka队列,实时获取Kafka过滤出来的用户评分数据流,融合存储在Redis中的用户最近评分队列数据,提交给实时推荐算法,完成对用户新的推荐结果计算;计算完成之后,将新的推荐结构和MongDB数据库中的推荐结果进行合并。【业务系统部分】4 .推荐结果展示部分,从MongoDB中将离线推荐结果、实时推荐结果、内容推荐结果进行混合,综合给出相对应的数据。5 .商品信息查询服务通过对接MongoDB实现对商品信息的查询操作。6 .商品评分部分,获取用户通过UI给出的评分动作,后台服务进行数据库记录后,一方面将数据推动到Redis群中,另一方面,通过预设的日志框架输出到Tomcat中的日

7、志中。7 .商品标签部分,项目提供用户对商品打标签服务。1.3数据模型1.Product【商品数据表】字段名字段类型字段描述字段备注productIdInt商品的IDnameString商品的名称categoriesString商品所属类别每一项用“|”分割imageUrlString商品图片的URLtagsString商品的UGC标签每一项用“|”分割2. Rating【用户评分表】更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之电商推荐系统字段名字段类型字段描述字段备注userIdInt用户的IDproductIdInt商品的IDscore

8、Double商品的分值timestampLong评分的时间3. Tag【商品标签表】字段名字段类型字段描述字段备注userIdInt用户的IDproductIdInt商品的IDtagString商品的标签timestampLong评分的时间4.User【用户表】字段名字段类型字段描述字段备注userIdInt用户的IDusernameString用户名passwordString用户密码timestampLon0067用户创建的时间5.RateMoreProductsRecently【最近商品评分个数统计表】字段名字段类型字段描述字段备注productIdInt商品的IDcountInt商品的

9、评分数yearmonthString评分的时段yyyymm更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之电商推荐系统6.RateMoreProducts【商品评分个数统计表】字段名字段类型字段描述字段备注productIdInt商品的IDcountInt商品的评分数7.AverageProductsScore【商品平均评分表】字段名字段类型字段描述字段备注productIdInt商品的IDavgDouble商品的平均评分8.ProductRecs【商品相似性矩阵】字段名字段类型字段描述字段备注productIdInt商品的IDrecsArra

10、y(productId:Int,score:Double)该商品最相似的商品集合9.UserRecs【用户商品推荐矩阵】字段名字段类型字段描述字段备注userIdInt用户的IDrecsArray(productId:Int,score:Double)推荐给该用户的商品集合10.StreamRecs【用户实时商品推荐矩阵】字段类型字段描述字段备更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之电商推荐系统名注userIdInt用户的IDrecsArray(productId:Int,score:Double)实时推荐给该用户的商品集合第2章工具环

11、境搭建我们的项目中用到了多种工具进行数据的存储、计算、采集和传输,本章主要简单介绍设计的工具环境搭建。如果机器的配置不足,推荐只采用一台虚拟机进行配置,而非完全分布式,将该虚拟机CPU的内存设置的尽可能大,推荐为CPU>4、MEM>4GB2.1 MongoDB(单节点)环境配置/通过WGET下载Linux版本的MongoDBbigdatalinux$wget/linux/mongodb-linux-x8664-rhel62-3.4.3.tgz/将压缩包解压到指定目录bigdatalinuxbackup$tar-xfmongodb-l

12、inux-x86_64-rhel62-3.4.3.tgz-C/将解压后的文件移动到最终的安装目录bigdatalinux$mvmongodb-linux-x86_64-rhel62-3.4.3/usr/local/mongodb/在安装目录下创建data文件夹用于存放数据和日志bigdatalinuxmongodb$mkdir/usr/local/mongodb/data/在data文件夹下创建db文件夹,用于存放数据bigdatalinuxmongodb$mkdir/usr/local/mongodb/data/db/在data文件夹下创建logs文件夹,用于存放日志bigdatalinux

13、mongodb$mkdir/usr/local/mongodb/data/logs/更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之电商推荐系统/在logs文件夹下创建10g文件bigdatalinuxmongodb$touch/usr/local/mongodb/data/logs/mongodb.log/在data文件夹下创建mongodb.conf配置文件bigdatalinuxmongodb$touch/usr/local/mongodb/data/mongodb.conf/在mongodb.conf文件中输入如下内容bigdatali

14、nuxmongodb$vim./data/mongodb.conf# 端口号port=27017# 数据目录dbpath=/usr/local/mongodb/data/db# 日志目录logpath=/usr/local/mongodb/data/logs/mongodb.log# 设置后台运行fork=true# 日志输出方式logappend=true# 开启认证#auth=true完成MongoDB的安装后,启动MongoDB服务器:/启动MongoDB服务器bigdatalinuxmongodb$sudo/usr/local/mongodb/bin/mongod-config/usr

15、/local/mongodb/data/mongodb.conf/访问MongoDB服务器bigdatalinuxmongodb$/usr/local/mongodb/bin/mongo/停止MongoDB服务器bigdatalinuxmongodb$sudo/usr/local/mongodb/bin/mongod-shutdown-config/usr/local/mongodb/data/mongodb.conf更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之电商推荐系统2.2 Redis(单节点)环境配置/通过WGET下载REDIS的源

16、码bigdatalinux$wgethttp:download.redis.io/releases/redis-4.0.2.tar.gz/将源代码解压到安装目录bigdatalinux$tar-xfredis-4.0.2.tar.gz-C/进入Redis源代码目录,编译安装bigdatalinux$cdredis-4.0.2/安装GCCbigdatalinux$sudoyuminstallgcc/编译源代码bigdatalinuxredis-4.0.2$makeMALLOC=libc/编译安装bigdatalinuxredis-4.0.2$sudomakeinstall/创建配置文件bigda

17、talinuxredis-4.0.2$sudocp/redis-4.0.2/redis.conf/etc/修改配置文件中以下内容bigdatalinuxredis-4.0.2$sudovim/etc/redis.confdaemonizeyes#37行#是否以后台daemon方式运行,默认不是后台运行pidfile/var/run/redis/redis.pid#41行#redis的PID文件路径(可选)bind#64行#绑定主机IP,默认值为,我们是跨机器运行,所以需要更改logfile/var/log/redis/redis.log#104行#定义log文件

18、位置,模式10g信息定向到stdout,输出到/dev/null(可选)dir7usr/local/rdbfile“#188行#本地数据库存放路径,默认为./,编译安装默认存在在/usr/local/bin下(可选)在安装完Redis之后,启动Redis启动Redis服务器更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之电商推荐系统bigdatalinuxredis-4.0.2$redis-server/etc/redis.conf/连接Redis服务器bigdatalinuxredis-4.0.2$redis-cli/停止Redis服务器bi

19、gdatalinuxredis-4.0.2$redis-clishutdown2.3Spark(单节点)环境配置/通过wget下载zookeeper安装包bigdatalinux$wget/将spark解压到安装目录bigdatalinux$tarifspark-2.1.1-bin-hadoop2.7.tgz/进入spark安装目录bigdatalinuxcluster$cdspark-2.1.1-bin-hadoop2.7/复制slave配置文件bigdatalinuxspark-2.1.1-bin-hadoop2.7$cp./conf/slaves.template./conf/slave

20、s/修改slave配置文件bigdatalinuxspark-2.1.1-bin-hadoop2.7$vim./conf/slaveslinux跄文件最后将本机主机名进行添加-C./cluster/复制Spark-Env配置文件bigdatalinuxspark-2.1.1-bin-hadoop2.7$park-env.shSPARK_MASTER_HOST=linuxSPARKMASTERPORT=7077cp./conf/spark-env.sh.template./conf/s#添力口sparkmaster的主机名#添力口sparkmaster的端口号安装完成之后,启动Spark/启动S

21、park集群bigdatalinuxspark-2.1.1-bin-hadoop2.7$sbin/start-all.sh/访问Spark集群,浏览器访问http:/linux:8080SpesiK3I,*2曲毗隼断nt邛中咻”阳口啦厅即TABBTtJHy-.wi-kh.Iqw4口1/:工悚g3:|MUM.lUUft/关闭Spark集群更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之电商推荐系统bigdatalinuxspark-2.1.1-bin-hadoop2.7$sbin/stop-all.sh2.4 Zookeeper(单节点)环境配置

22、/通过wget下载zookeeper安装包bigdatalinux$wget.Cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz/将zookeeper解压到安装目录bigdatalinux$tarifzookeeper-3.4.10.tar.gz-C./cluster/进入zookeeper安装目录bigdatalinuxcluster$cdzookeeper-3.4.10/创建data数据目录bigdatalinuxzookeeper-3.4.10$mkdirdata/复制zooke

23、eper配置文件bigdatalinuxzookeeper-3.4.10$cp./conf/zoo_sample.cfg./conf/zoo.cfg/修改zookeeper配置文件bigdatalinuxzookeeper-3.4.10$vimconf/zoo.cfgdataDir=/home/bigdata/cluster/zookeeper-3.4.10/data#将数据目录地址修改为创建的目录/启动Zookeeper服务bigdatalinuxzookeeper-3.4.10$bin/zkServer.shstart/查看Zookeeper服务状态bigdatalinuxzookeepe

24、r-3.4.10$bin/zkServer.shstatusZooKeeperJMXenabledbydefaultUsingconfig:/home/bigdata/cluster/zookeeper-3.4.10/bin/./conf/zoo.cfgMode:standalone/关闭Zookeeper服务bigdatalinuxzookeeper-3.4.10$bin/zkServer.shstop2.5 Flume-ng(单节点)环境配置/通过wget下载zookeeper安装包bigdatalinux$wget/dyn/closer.lua/f

25、lume/1.8.0/apache-flume-1.8.0-bin.tar.gz/将zookeeper解压到安装目录bigdatalinux$tarifapache-flume-1.8.0-bin.tar.gz-C./cluster/等待项目部署时使用更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之电商推荐系统binb心&EEconf口EvhOTES的ap#lUE-rdflibUCEn$EloflffKTICE同RELEa$E'MGE$twlsEgdAtdAna$srQL加就he-f1uE-L7.D-kfka5birVflum-

26、nqagem-c,/conf/-f,/conf/1o-k4fkA.prevert1e$-n2.6 Kafka(单节点)环境配置/通过wget下载zookeeper安装包bigdatalinux$wget/将kafka解压到安装目录bigdatalinux$tarifkafka_2.12-0.1021.tgz-C./cluster/进入kafka安装目录bigdatalinuxcluster$cdkafka_2.12-0.1021/修改kafka配置文件bigdatalinuxkafka_2.12-$vimconfig/=lin

27、ux#修改主机名port=9092#修改服务端口号zookeeper.connect=linux:2181#修改Zookeeper服务器地址/启动kafka服务!!!启动之前需要启动Zookeeper服务bigdatalinuxkafka_2.12-$bin/kafka-server-start.sh-daemon./config/perties/关闭kafka服务bigdatalinuxkafka_2.12-$bin/kafka-server-stop.sh/创建topicbigdatalinuxkafka_2.12-$bi

28、n/kafka-topics.sh-create-zookeeperlinux:2181-replication-factor1-partitions1-topicrecommender/kafka-console-producerbigdatalinuxkafka_2.12-$bin/kafka-console-producer.sh-broker-listlinux:9092-topicrecommender/kafka-console-consumerbigdatalinuxkafka_2.12-$bin/kafka-console-consumer.sh

29、-bootstrap-serverlinux:9092-topicrecommender第3章创建项目并初始化业务数据我们的项目主体用Scala编写,采用IDEA作为开发环境进行项目编写,采用maven作为项目构建和管理工具。更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网必尚硅谷尚硅谷大数据技术之电商推荐系统3.1 在IDEA中创建maven项目recommender的子打开IDEA,创建一个maven项目,命名为ECommerceRecommendSystem。为了方便后期的联调,我们会把业务系统的代码也添加进来,所以我们可以以ECommerceRecomm

30、endSystem作为父项目,并在其下建一个名为项目,然后再在下面搭建多个子项目用于提供不同的推荐服务。3.1.1 项目框架搭建在ECommerceRecommendSystem下新建一个mavenmodule作为子项目,命名DataLoader。为recommender。同样的,再以recommender为父项目,新建个mavenmodule作为子项目。我们的第一步是初始化业务数据,所以子项目命名为父项目只是为了规范化项目结构,方便依赖管理,本身是不需要代码实现的,所以ECommerceRecommendSystem和recommender下的src文件夹都可以删掉。目前的整体项目框架如下:

31、v/ECommenceRecommendSystem0:PrajectsBigData£C«mmer«eRecommen>ideay.recommenderyDataLoaderysrcHDataLcader.imlpom.xml/T1BreGQrnmnder.irnl.ECormRec&mm电ndSystam.inrilmpomxml3.1.2 声明项目中工具的版本信息我们整个项目需要用到多个工具,它们的不同版本可能会对程序运行造成影响,所以应该在最外层的ECommerceRecommendSystem中声明所有子项目共用的版本信息。在pom.xm

32、l中加入以下配置:ECommerceRecommendSystem/pom.xml<properties><10g4j.version>1.2.17</10g4j.version><slf4j.version>1.7.22</slf4j.version><mongodb-spark.version>2.0.0</mongodb-spark.version><casbah.version>3.1.1</casbah.version><redis.version>2.9.0<

33、;/redis.version>更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之电商推荐系统<kafka.version></kafka.version><spark.version>2.1.1</spark.version><scala.version>2.11.8</scala.version><jblas.version>1.2.1</jblas.version></properties>3.1.3 添加项目依

34、赖首先,对于整个项目而言,应该有同样的日志管理,我们在ECommerceRecommendSystem中弓I入公有依赖:ECommerceRecommendSystem/pom.xml<dependencies>< !-引入共同的日志管理工具-><dependency>< groupId>org.slf4j</groupId>< artifactId>jcl-over-slf4j</artifactId>< version>$slf4j.version</version></dep

35、endency><dependency>< groupId>org.slf4j</groupId>< artifactId>slf4j-api</artifactId>< version>$slf4j.version</version></dependency><dependency>< groupId>org.slf4j</groupId>< artifactId>slf4j-log4j12</artifactId>< ver

36、sion>$slf4j.version</version></dependency><dependency>< groupId>log4j</groupId>< artifactId>log4j</artifactId>< version>$log4j.version</version></dependency></dependencies>同样,对于maven项目的构建,可以引入公有的插件:<build>< !-声明并引入子项目共有的插件

37、-><plugins>< plugin>< groupId>org.apache.maven.plugins</groupId>< artifactId>maven-compiler-plugin</artifactId>< version>3.6.1</version>更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之电商推荐系统<!-所有的编译用JDK1.8-><configuration><source>

38、1.8</source><target>1.8</target></configuration></plugin></plugins><pluginManagement><plugins><!-maven的打包插件-><plugin><groupId>org.apache.maven.plugins</groupId>< |artifactId>maven-assembly-plugin</artifactId>< ver

39、sion>3.0.0</version>< executions><execution>< id>make-assembly</id>< phase>package</phase>< goals><goal>single</goal></goals></execution></executions></plugin><!-该插件用于将scala代码编译成class文件-><plugin><gr

40、oupId>net.alchim31.maven</groupId>< artifactId>scala-maven-plugin</artifactId>< version>3.2.2</version>< executions><!-绑定到maven的编译阶段-><execution><goals>< goal>compile</goal>< goal>testCompile</goal></goals></ex

41、ecution></executions></plugin></plugins></pluginManagement></build>然后,在recommender模块中,我们可以为所有白推荐模块声明spark相关依更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之电商推荐系统赖(这里的dependencyManagement表示仅声明相关信息,子项目如果依赖需要自行引入):ECommerceRecommendSystem/recommender/pom.xmldependency

42、Management><dependencies><!-引入Spark相关的Jar包-><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.11</artifactId><version>$spark.version</version></dependency><dependency><groupId>org.apache.spark</groupI

43、d><artifactId>spark-sql_2.11</artifactId><version>$spark.version</version></dependency><dependency>< groupId>org.apache.spark</groupId>< artifactId>spark-streaming_2.11</artifactId>< version>$spark.version</version><</d

44、ependencydependency:>><groupId>org.apache.spark</groupId><artifactId>spark-mllib_2.11</artifactId><<version</dependencydependency:>$spark.version</version>>><groupId>org.apache.spark</groupId><artifactId>spark-graphx_2.11</ar

45、tifactId><version</dependency>$spark.version</version>><dependency>< groupId>org.scala-lang</groupId><artifactId>scala-library</artifactId><version>$scala.version</version></dependency></dependencies></dependencyManagement

46、>由于各推荐模块都是scala代码,还应该引入scala-maven-plugin插件,用于scala程序的编译。因为插件已经在父项目中声明,所以这里不需要再声明版本和具体配置:更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网尚生系统<build><plugins><!-父项目已声明该plugin,子项目在引入的时候,不用声明版本和已经声明的配置-><plugin>< groupId>net.alchim31.maven</groupId>< |artifactId>sca

47、la-maven-plugin</artifactId></plugin></plugins></build>对于具体的DataLoader子项目,需要spark相关组件,还需要mongodb的相关依赖,我们在pom.xml文件中引入所有依赖(在父项目中已声明的不需要再加详细信息):ECommerceRecommendSystem/recommender/DataLoader/pom.xml<dependencies>< !-Spark的依赖引入-><dependency>< groupId>org

48、.apache.spark</groupId>< artifactId>spark-core_2.11</artifactId></dependency><dependency>< groupId>org.apache.spark</groupId>< artifactId>spark-sql2.11</artifactId></dependency>< !-引入Scala-><dependency>< groupId>org.scala-

49、lang</groupId>< artifactId>scala-library</artifactId></dependency>< !-加入MongoDB的驱动-><dependency>< groupId>org.mongodb</groupId>< artifactId>casbah-core_2.11</artifactId>< version>$casbah.version</version></dependency><d

50、ependency>< groupId>org.mongodb.spark</groupId>< artifactId>mongo-spark-connector_2.11</artifactId>< version>$mongodb-spark.version</version></dependency></dependencies>至此,我们做数据加载需要的依赖都已配置好,可以开始写代码了。更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之电

51、商推荐系统3.2 数据加载准备在src/main/目录下,可以看到已有的默认源文件目录是java,我们可以将其改名为scala。4各数据文products.csv,ratings.csv复制至U资源文件目录src/main/resources下,我们将从这里读取数据并加载到mongodb中。3.2.1 Products数据集数据格式:productId,name,categoryIds,amazonId,imageUrl,categories,tags例如:3982AFuhlen富勒M8眩光舞者时尚节能无线鼠标(草绿)(眩光.悦动.时尚炫舞鼠标12个月免换电池高精度光学寻迹引擎超细微接收器10

52、米传输距离)A1057,439,736AB009EJN4T2A/images/I/31QPvUDNavL._SY300_QL70_.jpgA夕卜设产品|鼠标|电脑/办公人富勒|鼠标|电子产品|好用|外观漂亮Product数据集有7个字段,每个字段之间通过“a”符号进行分割。其中的categorylds、amazonId对于内容特征没有实质帮助,我们只需要其它5个字段:字段名字段类型字段描述字段备注productldInt商品IDnameString商品名称categoriesString商品分类每一项用“|”分割i

53、mageUrlString商品图片URLtagsString商品UGC标签每一项用“|”分割3.2.2 Ratings数据集数据格式:userld,prudcutld,rating,timestamp例如:4867,457976,5.0,1395676800Rating数据集有4个字段,每个字段之间通过”分割。字段名字段类型字段描述字段备注更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之电商推荐系统userIdInt用户IDprodutIdInt商品IDscoreDoub1e评分值timestampLong评分的时间3.2.3 日志管理配置文件

54、log4j对日志的管理,需要通过配置文件来生效。在src/main/resources下新建配置文件10perties,写入以下内容:10g4j.rootLogger=info,stdout10g4j.appender.stdout=org.apache.1og4j.Conso1eAppender10g4j.appender.stdout.1ayout=org.apache.1og4j.PatternLayout10g4j.appender.stdout.1ayout.ConversionPattern=%dyyyy-MM-ddHH:mm:ss,SSS%5p-%50t%-80c(

55、1ine:%5L):%m%n3.3 数据初始化到MongoDB3.3.1 启动MongoDB数据库(略)3.3.2 数据加载程序主体实现我们会为原始数据定义几个样例类,通过SparkContext的textFi1e方法从文件中读取数据,并转换成DataFrame,再利用SparkSQL提供的write方法进行数据的分布式插入。在DataLoader/src/main/sca1a下新建package,命名为com.atguigu.recommender,新建名为DataLoader的sca1ac1ass文件。程序主体代码如下:DataLoader/src/main/sca1a/com.atgui

56、gu.recommerder/DataLoader.sca1a定义样例类casec1assProduct(productId:Int,name:String,imageUr1:String,categories:String,tags:String)casec1assRating(userId:Int,productId:Int,score:Doub1e,timestamp:Int)casec1assMongoConfig(uri:String,db:String)objectDataLoader更多Java-大数据-前端-python人工智能资料下载,可百度访问:尚硅谷官网尚硅谷大数据技术之

57、电商推荐系统/以window下为例,需替换成自己的路径,linux下为/YOUR_PATH/resources/products.csvvalPRODUCT_DATA_PATH="YOUR_PATHresourcesproducts.csv"valRATING_DATA_PATH="YOUR_PATHresourcesratings.csv"valMONGODB_PRODUCT_COLLECTION"Product"valMONGODB_RATING_COLLECTIO="Rating"/主程序的入口defmain(args:ArrayString):Unit=/定义用到的配置参数valconfig=Map("spark.cores"->"local*","mongo.uri"->"mongodb:/l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论