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<>();