diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..75b806f
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.project b/.project
new file mode 100644
index 0000000..f150976
--- /dev/null
+++ b/.project
@@ -0,0 +1,23 @@
+
+
+ big-data
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.m2e.core.maven2Nature
+
+
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..8dd9b1d
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+encoding//src/test/java=UTF-8
+encoding/=UTF-8
diff --git a/.settings/org.eclipse.jdt.apt.core.prefs b/.settings/org.eclipse.jdt.apt.core.prefs
new file mode 100644
index 0000000..d4313d4
--- /dev/null
+++ b/.settings/org.eclipse.jdt.apt.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.apt.aptEnabled=false
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..ac8e750
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
+org.eclipse.jdt.core.compiler.processAnnotations=disabled
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/src/test/java/nearsoft/academy/bigdata/recommendation/MovieRecommender.java b/src/test/java/nearsoft/academy/bigdata/recommendation/MovieRecommender.java
new file mode 100644
index 0000000..84a7976
--- /dev/null
+++ b/src/test/java/nearsoft/academy/bigdata/recommendation/MovieRecommender.java
@@ -0,0 +1,111 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package nearsoft.academy.bigdata.recommendation;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.apache.mahout.cf.taste.common.TasteException;
+import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
+import org.apache.mahout.cf.taste.impl.neighborhood.ThresholdUserNeighborhood;
+import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
+import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
+import org.apache.mahout.cf.taste.model.DataModel;
+import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
+import org.apache.mahout.cf.taste.recommender.RecommendedItem;
+import org.apache.mahout.cf.taste.recommender.UserBasedRecommender;
+import org.apache.mahout.cf.taste.similarity.UserSimilarity;
+
+/**
+ *
+ * @author jdov1
+ */
+class MovieRecommender {
+ private final HashMap usersHash = new HashMap();
+ private final HashMap productsHash = new HashMap();
+ private final HashMap inverseProductsHash = new HashMap();
+
+ private int countReviews = 0, countUsers = 0, countProducts = 0, productNum, userNum;
+
+ MovieRecommender(String path) throws IOException, TasteException{
+
+ File file = new File(path);
+ BufferedReader br = new BufferedReader(new FileReader(file));
+ File reviews = new File("reviews.csv");
+ FileWriter fw = new FileWriter(reviews);
+ BufferedWriter wr = new BufferedWriter(fw);
+
+ String userId = "", productId = "", score;
+ String line;
+
+ while ((line = br.readLine()) != null) {
+
+ if(line.startsWith("product/productId:")) {
+ productId = line.split(" ")[1];
+ if (productsHash.containsKey(productId) == false) {
+ countProducts++;
+ productsHash.put(productId,countProducts);
+ inverseProductsHash.put(countProducts, productId);
+ productNum = countProducts;
+ } else {
+ productNum = productsHash.get(productId);
+ }
+ }
+ if (line.startsWith("review/userId:")) {
+ userId = line.split(" ")[1];
+ if(usersHash.containsKey(userId) == false) {
+ countUsers++;
+ usersHash.put(userId,countUsers);
+ userNum = countUsers;
+ } else {
+ userNum = usersHash.get(userId);
+ }
+ }
+ if (line.startsWith("review/score:")) {
+ score = line.split(" ")[1];
+ wr.write(userNum + "," + productNum + "," + score + "\n");
+ countReviews++;
+ }
+ }
+ br.close();
+ wr.close();
+ }
+
+ public int getTotalReviews(){
+ return countReviews;
+ }
+ public int getTotalProducts(){
+ return countProducts;
+ }
+ public int getTotalUsers(){
+ return countUsers;
+ }
+
+ List getRecommendationsForUser(String UserId) throws IOException, TasteException {
+ DataModel model = new FileDataModel(new File("reviews.csv"));
+ UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
+ UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);
+ UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
+
+ List recommendations = recommender.recommend(usersHash.get(UserId),3);
+ List Response = new ArrayList ();
+
+ for (RecommendedItem recommendation : recommendations) {
+ Response.add(inverseProductsHash.get((int)recommendation.getItemID()));
+ }
+
+ return Response;
+ }
+}
\ No newline at end of file
diff --git a/target/test-classes/nearsoft/academy/bigdata/recommendation/MovieRecommender.class b/target/test-classes/nearsoft/academy/bigdata/recommendation/MovieRecommender.class
new file mode 100644
index 0000000..e22bffc
Binary files /dev/null and b/target/test-classes/nearsoft/academy/bigdata/recommendation/MovieRecommender.class differ
diff --git a/target/test-classes/nearsoft/academy/bigdata/recommendation/MovieRecommenderTest.class b/target/test-classes/nearsoft/academy/bigdata/recommendation/MovieRecommenderTest.class
new file mode 100644
index 0000000..cfe8856
Binary files /dev/null and b/target/test-classes/nearsoft/academy/bigdata/recommendation/MovieRecommenderTest.class differ