You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by sm...@apache.org on 2015/04/05 19:06:20 UTC

mahout git commit: MAHOUT-1622: MultithreadedBatchItemSimilarities outputs incorrect number of similarities, fix the failing test

Repository: mahout
Updated Branches:
  refs/heads/master cd366d17e -> 9b6b2361e


MAHOUT-1622: MultithreadedBatchItemSimilarities outputs incorrect number of similarities, fix the failing test


Project: http://git-wip-us.apache.org/repos/asf/mahout/repo
Commit: http://git-wip-us.apache.org/repos/asf/mahout/commit/9b6b2361
Tree: http://git-wip-us.apache.org/repos/asf/mahout/tree/9b6b2361
Diff: http://git-wip-us.apache.org/repos/asf/mahout/diff/9b6b2361

Branch: refs/heads/master
Commit: 9b6b2361ec0a4eacfb3700d123e02ccb6291f796
Parents: cd366d1
Author: Suneel Marthi <su...@gmail.com>
Authored: Sun Apr 5 13:08:14 2015 -0400
Committer: Suneel Marthi <su...@gmail.com>
Committed: Sun Apr 5 13:08:14 2015 -0400

----------------------------------------------------------------------
 .../MultithreadedBatchItemSimilarities.java     | 27 ++++++++++----------
 .../MultithreadedBatchItemSimilaritiesTest.java |  3 ++-
 2 files changed, 16 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mahout/blob/9b6b2361/mr/src/main/java/org/apache/mahout/cf/taste/impl/similarity/precompute/MultithreadedBatchItemSimilarities.java
----------------------------------------------------------------------
diff --git a/mr/src/main/java/org/apache/mahout/cf/taste/impl/similarity/precompute/MultithreadedBatchItemSimilarities.java b/mr/src/main/java/org/apache/mahout/cf/taste/impl/similarity/precompute/MultithreadedBatchItemSimilarities.java
index 288301d..b7b52cf 100644
--- a/mr/src/main/java/org/apache/mahout/cf/taste/impl/similarity/precompute/MultithreadedBatchItemSimilarities.java
+++ b/mr/src/main/java/org/apache/mahout/cf/taste/impl/similarity/precompute/MultithreadedBatchItemSimilarities.java
@@ -17,16 +17,7 @@
 
 package org.apache.mahout.cf.taste.impl.similarity.precompute;
 
-import java.io.IOException;
-import java.util.List;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import java.util.ArrayList;
+import com.google.common.io.Closeables;
 import org.apache.mahout.cf.taste.common.TasteException;
 import org.apache.mahout.cf.taste.impl.common.LongPrimitiveIterator;
 import org.apache.mahout.cf.taste.model.DataModel;
@@ -38,6 +29,16 @@ import org.apache.mahout.cf.taste.similarity.precompute.SimilarItemsWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+
 /**
  * Precompute item similarities in parallel on a single machine. The recommender given to this class must use a
  * DataModel that holds the interactions in memory (such as
@@ -105,14 +106,15 @@ public class MultithreadedBatchItemSimilarities extends BatchItemSimilarities {
       } catch (InterruptedException e) {
         throw new RuntimeException(e);
       }
-      writer.close();
+      Closeables.close(writer, false);
     }
 
     return output.getNumSimilaritiesProcessed();
   }
 
   private static BlockingQueue<long[]> queueItemIDsInBatches(DataModel dataModel, int batchSize,
-      int degreeOfParallelism) throws TasteException {
+                                                             int degreeOfParallelism)
+      throws TasteException {
 
     LongPrimitiveIterator itemIDs = dataModel.getItemIDs();
     int numItems = dataModel.getNumItems();
@@ -208,7 +210,6 @@ public class MultithreadedBatchItemSimilarities extends BatchItemSimilarities {
           List<SimilarItems> similarItemsOfBatch = new ArrayList<>(itemIDBatch.length);
           for (long itemID : itemIDBatch) {
             List<RecommendedItem> similarItems = getRecommender().mostSimilarItems(itemID, getSimilarItemsPerItem());
-
             similarItemsOfBatch.add(new SimilarItems(itemID, similarItems));
           }
 

http://git-wip-us.apache.org/repos/asf/mahout/blob/9b6b2361/mr/src/test/java/org/apache/mahout/cf/taste/impl/similarity/precompute/MultithreadedBatchItemSimilaritiesTest.java
----------------------------------------------------------------------
diff --git a/mr/src/test/java/org/apache/mahout/cf/taste/impl/similarity/precompute/MultithreadedBatchItemSimilaritiesTest.java b/mr/src/test/java/org/apache/mahout/cf/taste/impl/similarity/precompute/MultithreadedBatchItemSimilaritiesTest.java
index 0afe2f1..868e41a 100644
--- a/mr/src/test/java/org/apache/mahout/cf/taste/impl/similarity/precompute/MultithreadedBatchItemSimilaritiesTest.java
+++ b/mr/src/test/java/org/apache/mahout/cf/taste/impl/similarity/precompute/MultithreadedBatchItemSimilaritiesTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.mahout.cf.taste.impl.similarity.precompute;
 
+import java.io.IOException;
 import org.apache.mahout.cf.taste.impl.common.FastByIDMap;
 import org.apache.mahout.cf.taste.impl.model.GenericDataModel;
 import org.apache.mahout.cf.taste.impl.model.GenericPreference;
@@ -56,7 +57,7 @@ public class MultithreadedBatchItemSimilaritiesTest {
     batchSimilarities.computeItemSimilarities(1, 1, mock(SimilarItemsWriter.class));
   }
 
-  @Test
+  @Test(expected = IOException.class)
   public void higherDegreeOfParallelismThanBatches() throws Exception {
 
     FastByIDMap<PreferenceArray> userData = new FastByIDMap<>();