一.Spout
输入数据
List存储
- 入库
jedis.lpush("recom","1:1:5");
- 出库,从列表的头部取出数据并删除该数据
jedis.rpop("recom")
- 查看数据
lrange recom 0 12
输出数据
set存储
- 入库
用户id 物品id:评分
sadd 1 2:4.5
- 查询用户5对所有物品的评分
SMEMBERS 5
1) "1:4"
2) "2:3"
3) "5:3.5"
4) "4:4"
5) "3:2"
6) "6:4"
二.WeightMBolt
计算用户的对物品的同现矩阵
hash存储
weight:用户id 下标1:下标2 矩阵值
weight:5 1:2 2- 入库
jedis.hmset("weight:"+userId, weightCount);
查询用户的同现矩阵:
hgetAll weight:5
1) "1:1"
2) "1"
WeightCountBolt
计算整个同现矩阵
存储
- 入库
jedis.hmset("weight",mapTemp);
- 查询
HGETALL weight
RecommendBolt
推荐
set
- 入库
jedis.sadd("userScore:" + userId, String.valueOf(result[i]));
- 查询
SMEMBERS userScore:1
1) "0.0"
2) "15.5"
3) "10.5"
4) "23.5"
5) "5.0"
问题
- 同现矩阵计算不正确
下标 | 错误值-正确值 |
---|---|
3 4 | 3 4 |
4 4 | 3-4 |
3 3 | 3-4 |
2 3 | 2-3 |
1 3 | 3-4 |
3 1 | 3-4 |
4 1 | 3-4 |
1 4 | 3-4 |
2 2 | 2-3 |
2. Error:java: 找不到目录: /Users/xiaoxiyun/IdeaProjects/examples-ch06-real-life-app/target/generated-sources/annotations
- ERROR util - Async loop died!
多线程 同步