fix popular item count. reducing iteration count seems to get rid of stackoverflowerror.
diff --git a/engine.json b/engine.json
index c51e5ec..8905191 100644
--- a/engine.json
+++ b/engine.json
@@ -13,7 +13,7 @@
"params": {
"seed": 1,
"rank": 10,
- "iteration": 30,
+ "iteration": 10,
"lambda": 0.01,
"appName": "javadase",
"similarItemEvents": ["view"]
diff --git a/src/main/java/org/template/recommendation/Algorithm.java b/src/main/java/org/template/recommendation/Algorithm.java
index 0fd4c59..3785018 100644
--- a/src/main/java/org/template/recommendation/Algorithm.java
+++ b/src/main/java/org/template/recommendation/Algorithm.java
@@ -136,15 +136,20 @@
public Boolean call(Tuple2<Tuple2<Integer, Integer>, Integer> element) throws Exception {
return (element != null);
}
+ }).mapToPair(new PairFunction<Tuple2<Tuple2<Integer,Integer>,Integer>, Integer, Integer>() {
+ @Override
+ public Tuple2<Integer, Integer> call(Tuple2<Tuple2<Integer, Integer>, Integer> element) throws Exception {
+ return new Tuple2<>(element._1()._2(), element._2());
+ }
}).reduceByKey(new Function2<Integer, Integer, Integer>() {
@Override
public Integer call(Integer integer, Integer integer2) throws Exception {
return integer + integer2;
}
- }).map(new Function<Tuple2<Tuple2<Integer, Integer>, Integer>, ItemScore>() {
+ }).map(new Function<Tuple2<Integer, Integer>, ItemScore>() {
@Override
- public ItemScore call(Tuple2<Tuple2<Integer, Integer>, Integer> element) throws Exception {
- return new ItemScore(indexItemMap.get(element._1()._2()), element._2().doubleValue());
+ public ItemScore call(Tuple2<Integer, Integer> element) throws Exception {
+ return new ItemScore(indexItemMap.get(element._1()), element._2().doubleValue());
}
});