>>分享SPSS,Hadoop等大数据处理技术,以及分布式架构以及集群系统的构建 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 20086 个阅读者 刷新本主题
 * 贴子主题:  基于spark-streaming实时推荐系统 回复文章 点赞(0)  收藏  
作者:mary    发表时间:2020-03-21 19:23:05     消息  查看  搜索  好友  邮件  复制  引用

                                                                                                

基于spark-streaming实时推荐系统(一)

                                               前言

         随着互联网的飞速发展,如何能够让用户在广袤的互联网中获取到他所想要的,这时候人们有了搜索引擎。搜索引擎好比一个仓库,它需要事先储藏大量的资源,你需要什么都可以从中获取得到。这种被动索取的方式无形之中也注定了搜索引擎在某个范围内只能一家独大。科技改变着人们的生活,随着大数据时代的到来,传统被动等候来获取的方式由于其需要的前期投入较大,准确性往往也不能满足用户的真正需求,在此背景之下,推荐引擎遍广泛的被大家所接收,它的出现改变了系统被动的一面,它就好似跟踪导弹,只要你出现在互联网之中,就可以时刻为你推荐。

         前期已经写了推荐系统离线计算的博文,主要是根据CF寻找相似,这种离线的推荐在计算周期内推荐结果不发生改变。个性化推荐则需要用户发生行为而实时为其推送推荐结果。

         下面简单介绍下spark-streaming实时推荐系统搭建

         系统边界

         点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

依托于一套可以实时采集到用户行为的日志采集系统,详情可以参见用户实时行为数据采集 将数据实时推送至kafka中,spark-streaming实时读取kafka中数据,进行特定的业务规则处理。这里会用到UpdateStateByKey方法,有兴趣的朋友可以去查阅相关资料了解此方法的原理及实现。

         数据流        

  1.  数据输入:
         Kafka
             Hosts:
             Topic:
2.  中间结果:
Redis
   scala编写,需要注意如何将结果保存至redis,常见的有序列号和json。

3.  结果输出
Kafka:考虑未来多系统消费,信息丰富化
Hosts:
Topic:  

     kafka接数        

val sparkConf  =  new SparkConf() .setAppName( "realtimeRecommendation")
       . set( "spark.streaming.backpressure.enabled",  "true")
val ssc  =  new StreamingContext(sparkConf, Seconds( 15))
    ssc .checkpoint( "/checkpoint/pztyz")
val kafkaConfig  =  Map( "metadata.broker.list"  ->  "kafka地址")
val topics  =  Set(sparkConf .get( "topic"))
val stream  = KafkaUtils .createDirectStream [ String,  String, StringDecoder, StringDecoder ] (ssc, kafkaConfig, topics)

     业务逻辑实现  

         这里可以自由发挥

         结束语

         为了真实准确的为用户进行实时推荐,最终还是要依赖历史数据进行整合,需要依赖一套完整的离线推荐系统作为数据支撑。未完待续。


----------------------------
原文链接:https://blog.csdn.net/pztyz314151/article/details/53025728

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-03-22 12:06:58 重新编辑]
  Java面向对象编程-->数组
  JavaWeb开发-->使用Session(Ⅱ)
  JSP与Hibernate开发-->映射对象标识符
  Java网络编程-->用Axis发布Web服务
  精通Spring-->组合(Composition)API
  Vue3开发-->Vue组件开发基础
  kubernetes之Ingress部署
  MapReduce实现自定义排序功能
  Kubernetes集群监控方案
  深入玩转K8S之使用kubeadm安装Kubernetes v1.10以及常见问题...
  酒店评论数据分析和挖掘-展现数据分析全流程:报告展示篇
  快速部署DBus体验实时数据流计算
  Spark RDD持久化、广播变量和累加器
  基于Spark MLlib平台的协同过滤算法---电影推荐系统
  kafka作为流式处理的上一层,为什么吞吐量那么大?
  Zookeeper+Kafka集群搭建
  大数据到底有多大
  00-Spark介绍
  浅谈 Spark 应用程序的性能调优
  数据科学最终迁移到云端的5个原因
  深入理解MapReduce的架构和原理
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。