![JAR search and dependency download from the Maven repository](/logo.png)
com.github.chen0040.sparkml.recommender.LinkRecommender Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of spark-ml-recommender Show documentation
Show all versions of spark-ml-recommender Show documentation
Recommender algorithms implemented in Java and for Spark
package com.github.chen0040.sparkml.recommender;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.api.java.function.Function2;
import scala.Tuple2;
import java.util.*;
/**
* Created by xschen on 22/2/2016.
*/
public class LinkRecommender {
public JavaRDD fitAndTransform(JavaRDD rdd) {
JavaPairRDD> rdd1 = rdd.flatMapToPair( s -> {
String person = s.getPerson();
List friendList = s.getHisFriends();
List>> result = new ArrayList<>();
for (int i = 0; i < friendList.size(); ++i) {
result.add(new Tuple2<>(person, new Tuple2<>(friendList.get(i), "*")));
}
for (int i = 0; i < friendList.size() - 1; ++i) {
for (int j = i + 1; j < friendList.size(); ++j) {
result.add(new Tuple2<>(friendList.get(i), new Tuple2<>(friendList.get(j), person)));
result.add(new Tuple2<>(friendList.get(j), new Tuple2<>(friendList.get(i), person)));
}
}
return result;
});
JavaPairRDD>> rdd2 = rdd1.combineByKey((Function, Map>>) s1 -> {
String toUser = s1._1();
String commonFriend = s1._2();
Map> map = new HashMap<>();
if (commonFriend.equals("*")) {
map.put(toUser, null);
}
else {
Set set = new HashSet<>();
set.add(commonFriend);
map.put(toUser, set);
}
return map;
}, (Function2
© 2015 - 2025 Weber Informatics LLC | Privacy Policy