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
+}


Reply via email to