当前位置:   article > 正文

基于hadoop构建智能推荐系统:第1篇 用户行为数据分析并导出到hdfs

统数据并上传到hadoop的hdfs系统,自定义分析类分析数据,并将分析的结果存储到mysq

这个分类 我主要想分享基于hadoop构建智能推荐系统的过程思路、程序设计和系统架构方面的一些技巧心得,至于hadoopsqoophbase的安装和使用我就不多讲了,网上已经有很多这方面的文章了

让我们直奔主题吧。

1、 我们要搭建一个智能推荐系统最重要的是什么呢?不是算法、也不是系统的本身,最关键是准确分析用户的行为数据,最终得出一个用户偏好表。有了这个用户偏好 表,我们可以做的事太多了,比如计算用户的相似度、计算物品的相似度、把用户按照行为进行聚类。。。但是这一切的前提都必须有一个“用户偏好表”(如图表1-1)。

图表1-1  用户偏好表

Uid(用户id

Itemid(物品id

Preference(偏好值)

Timestamp(时间戳)

1001

1005

4.5

123278545

1002

1008

3.5

123577865

1001

1008

5.0

123478588

 

2(下面我将以视频网站的智能推荐系统为例子)

为了得到这样的一张表,我们首先要对用户的行为进行分析,视频网站的用户行为一般为 观看记录、评分记录、顶/踩、评论记录。。。

我们按照预先设定的权重(图表2-1),将这些行为数据进行简单的权重相加,得出一个比较粗糙的偏好评分。

图表2-1 行为权重(后面的行为记分 覆盖前面的行为记分)

行为:

权重:

观看记录

每观看一次+2 如果看了3次以上 直接给满分

/

顶记3  踩记1 

评论记录

对评论内容关键词进行智能分析

中评记3.5 差评记1 好评记4.5

评分记录

打多少分 就是多少分

  

3、好了,通过上面这两步分析,我们已经知道我们需要什么样的数据了,当然也知道这些数据一般都存放在传统的数据库中(如mysql),但是 这些数据通常都是海量的,增长极快的,所以我们最好把这些行为数据导出到hadoophdfs文件系统中(或hbase中),这样就可以很方便的使用hadoop的分布式计算框架去处理这些数据了。不过问题又来了,由于数据是海量的,不断增长的,我们不能每次计算都将全部数据进行重新导入,这样mysql会鸭梨很大的,所以我们必须要做增量导入,第一次导入所有的数据,第二次开始只导入后来增长的数据。

4、下面介绍一个解决这个问题的强大工具:sqoop
Sqoop支持mysqlhdfs文件、hbasehive之间的导入导出,还可以实现增量导入。

比如我要将 观看记录 mysql导出到hdfs中:

这是
Shell脚本:(注意这个脚本可能有错 我临时写的,但思路肯定是对的 ,大家自己调吧 哈哈)

  1. ConnectURL=jdbc:mysql://localhost:3306/user_action
  2. UserName=root
  3. PassWord=123456
  4. OutputPath=/hdfs/recommend/user_action/watch_record
  5. TableName= watch_record
  6. Columns=id,uid,mid,timestamp
  7. IfJobCreated =`sqoop job list | grep import_ watch_record`
  8. #检查import_ watch_record这个job是否已经创建 如果未创建则创建
  9. if [ $IfJobCreated = ’’ ] then
  10. sqoop job import_ watch_record /
  11. --create --import /
  12. --connect $ConnectURL/
  13. --username $UserName/
  14. --password $PassWord/
  15. --target-dir $OutputPath/
  16. --m 1/
  17. --table $TableName/
  18. columns $Columns/
  19. --incremental append/
  20. --check-column id/
  21. --last-value 0
  22. fi
  23. sqoop job --exec import_ watch_record
 

5、如果watch_record这个表做了大量的分表分库设计 怎么办呢?

很简单把上面的shell写个循环就ok

 

这样行为数据的导入工作就完成了,下一篇我将分享利用hadoopmap-reduce计算框架 分析用户行为数据,最终得出我们想要的 用户偏好表

 

Ps:欢迎大家加q群讨论 325317874

转载于:https://my.oschina.net/u/1174828/blog/141440

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/375239
推荐阅读
相关标签
  

闽ICP备14008679号