Author: srowen
Date: Sat Jun 4 10:48:52 2011
New Revision: 1131375
URL: http://svn.apache.org/viewvc?rev=1131375&view=rev
Log:
MAHOUT-722 ignore/log malformed lines rather than fail completely
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/AggregateAndRecommendReducer.java
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/UserVectorSplitterMapper.java
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/AggregateAndRecommendReducer.java
URL:
http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/AggregateAndRecommendReducer.java?rev=1131375&r1=1131374&r2=1131375&view=diff
==============================================================================
---
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/AggregateAndRecommendReducer.java
(original)
+++
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/AggregateAndRecommendReducer.java
Sat Jun 4 10:48:52 2011
@@ -38,6 +38,9 @@ import java.io.IOException;
import java.util.Comparator;
import java.util.Iterator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
/**
* <p>computes prediction values for each user</p>
*
@@ -53,6 +56,8 @@ import java.util.Iterator;
public final class AggregateAndRecommendReducer extends
Reducer<VarLongWritable,PrefAndSimilarityColumnWritable,VarLongWritable,RecommendedItemsWritable>
{
+ private static final Logger log =
LoggerFactory.getLogger(AggregateAndRecommendReducer.class);
+
static final String ITEMID_INDEX_PATH = "itemIDIndexPath";
static final String NUM_RECOMMENDATIONS = "numRecommendations";
static final int DEFAULT_NUM_RECOMMENDATIONS = 10;
@@ -83,7 +88,11 @@ public final class AggregateAndRecommend
if (itemFilePathString != null) {
itemsToRecommendFor = new FastIDSet();
for (String line : new FileLineIterable(HadoopUtil.openStream(new
Path(itemFilePathString), conf))) {
- itemsToRecommendFor.add(Long.parseLong(line));
+ try {
+ itemsToRecommendFor.add(Long.parseLong(line));
+ } catch (NumberFormatException nfe) {
+ log.warn("itemsFile line ignored: {}", line);
+ }
}
}
}
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/UserVectorSplitterMapper.java
URL:
http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/UserVectorSplitterMapper.java?rev=1131375&r1=1131374&r2=1131375&view=diff
==============================================================================
---
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/UserVectorSplitterMapper.java
(original)
+++
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/item/UserVectorSplitterMapper.java
Sat Jun 4 10:48:52 2011
@@ -34,11 +34,15 @@ import org.apache.mahout.math.VectorWrit
import java.io.IOException;
import java.util.Comparator;
import java.util.Iterator;
-import java.util.PriorityQueue;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public final class UserVectorSplitterMapper extends
Mapper<VarLongWritable,VectorWritable,
VarIntWritable,VectorOrPrefWritable> {
+ private static final Logger log =
LoggerFactory.getLogger(UserVectorSplitterMapper.class);
+
static final String USERS_FILE = "usersFile";
static final String MAX_PREFS_PER_USER_CONSIDERED =
"maxPrefsPerUserConsidered";
static final int DEFAULT_MAX_PREFS_PER_USER_CONSIDERED = 10;
@@ -60,7 +64,11 @@ public final class UserVectorSplitterMap
Path usersFilePath = unqualifiedUsersFilePath.makeQualified(fs);
in = fs.open(usersFilePath);
for (String line : new FileLineIterable(in)) {
- usersToRecommendFor.add(Long.parseLong(line));
+ try {
+ usersToRecommendFor.add(Long.parseLong(line));
+ } catch (NumberFormatException nfe) {
+ log.warn("usersFile line ignored: {}", line);
+ }
}
} finally {
IOUtils.closeStream(in);
@@ -127,4 +135,4 @@ public final class UserVectorSplitterMap
return topPrefValues.smallestGreat();
}
-}
\ No newline at end of file
+}