You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by is...@apache.org on 2009/10/09 12:28:20 UTC

svn commit: r823504 - in /lucene/mahout/trunk/core/src/main/java/org/apache/mahout: cf/taste/hadoop/ common/commandline/

Author: isabel
Date: Fri Oct  9 10:28:19 2009
New Revision: 823504

URL: http://svn.apache.org/viewvc?rev=823504&view=rev
Log:
MAHOUT-138 - changed taste jobs in core module.

Modified:
    lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/RecommenderJob.java
    lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/SlopeOneDiffsToAveragesJob.java
    lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/SlopeOnePrefsToDiffsJob.java
    lucene/mahout/trunk/core/src/main/java/org/apache/mahout/common/commandline/DefaultOptionCreator.java

Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/RecommenderJob.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/RecommenderJob.java?rev=823504&r1=823503&r2=823504&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/RecommenderJob.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/RecommenderJob.java Fri Oct  9 10:28:19 2009
@@ -17,6 +17,14 @@
 
 package org.apache.mahout.cf.taste.hadoop;
 
+import org.apache.commons.cli2.CommandLine;
+import org.apache.commons.cli2.Group;
+import org.apache.commons.cli2.Option;
+import org.apache.commons.cli2.OptionException;
+import org.apache.commons.cli2.builder.ArgumentBuilder;
+import org.apache.commons.cli2.builder.DefaultOptionBuilder;
+import org.apache.commons.cli2.builder.GroupBuilder;
+import org.apache.commons.cli2.commandline.Parser;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -29,7 +37,10 @@
 import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
 import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
 import org.apache.hadoop.util.StringUtils;
+import org.apache.log4j.Logger;
 import org.apache.mahout.cf.taste.recommender.Recommender;
+import org.apache.mahout.common.CommandLineUtil;
+import org.apache.mahout.common.commandline.DefaultOptionCreator;
 
 import java.io.IOException;
 
@@ -49,21 +60,63 @@
  * path/to/data.csv path/to/reducerOutputDir 5</code></p>
  */
 public final class RecommenderJob extends Job {
+  /** Logger for this class. */
+  private static Logger LOG = Logger.getLogger(SlopeOneDiffsToAveragesJob.class);
 
   public RecommenderJob(Configuration jobConf) throws IOException {
     super(jobConf);
   }
 
   public static void main(String[] args) throws Exception {
-    String recommendClassName = args[0];
-    int recommendationsPerUser = Integer.parseInt(args[1]);
-    String userIDFile = args[2];
-    String dataModelFile = args[3];
-    String outputPath = args[4];
-    Configuration jobConf =
-        buildJobConf(recommendClassName, recommendationsPerUser, userIDFile, dataModelFile, outputPath);
-    Job job = new RecommenderJob(jobConf);
-    job.waitForCompletion(true);
+    DefaultOptionBuilder obuilder = new DefaultOptionBuilder();
+    ArgumentBuilder abuilder = new ArgumentBuilder();
+    GroupBuilder gbuilder = new GroupBuilder();
+
+    Option recommendClassOpt = obuilder.withLongName("recommenderClassName").withRequired(true)
+      .withShortName("r").withArgument(abuilder.withName("recommenderClassName").withMinimum(1)
+      .withMaximum(1).create()).withDescription("Name of recommender class to use.").create();
+
+    Option userRecommendOpt = obuilder.withLongName("userRec").withRequired(true)
+      .withShortName("n").withArgument(abuilder.withName("userRec").withMinimum(1)
+      .withMaximum(1).create()).withDescription("Desired number of recommendations per user.").create();
+
+    Option userIDFileOpt = obuilder.withLongName("userIdFile").withRequired(true)
+      .withShortName("f").withArgument(abuilder.withName("userIdFile").withMinimum(1)
+      .withMaximum(1).create()).withDescription("File containing user ids.").create();
+
+    Option dataModelFileOpt = obuilder.withLongName("dataModelFile").withRequired(true)
+      .withShortName("m").withArgument(abuilder.withName("dataModelFile").withMinimum(1)
+      .withMaximum(1).create()).withDescription("File containing data model.").create();
+    Option outputOpt = DefaultOptionCreator.outputOption(obuilder, abuilder);
+    Option helpOpt = DefaultOptionCreator.helpOption(obuilder);
+
+    Group group = gbuilder.withName("Options").withOption(recommendClassOpt).withOption(userRecommendOpt)
+      .withOption(userIDFileOpt).withOption(dataModelFileOpt).withOption(outputOpt).withOption(helpOpt).create();
+
+
+    try {
+      Parser parser = new Parser();
+      parser.setGroup(group);
+      CommandLine cmdLine = parser.parse(args);
+
+      if (cmdLine.hasOption(helpOpt)) {
+        CommandLineUtil.printHelp(group);
+        return;
+      }
+
+      String recommendClassName = cmdLine.getValue(recommendClassOpt).toString();
+      int recommendationsPerUser = Integer.parseInt(cmdLine.getValue(userRecommendOpt).toString());
+      String userIDFile = cmdLine.getValue(userIDFileOpt).toString();
+      String dataModelFile = cmdLine.getValue(dataModelFileOpt).toString();
+      String outputPath = cmdLine.getValue(outputOpt).toString();
+      Configuration jobConf =
+          buildJobConf(recommendClassName, recommendationsPerUser, userIDFile, dataModelFile, outputPath);
+      Job job = new RecommenderJob(jobConf);
+      job.waitForCompletion(true); 
+    } catch (OptionException e) {
+      LOG.error(e.getMessage());
+      CommandLineUtil.printHelp(group);
+    }
   }
 
   public static Configuration buildJobConf(String recommendClassName,

Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/SlopeOneDiffsToAveragesJob.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/SlopeOneDiffsToAveragesJob.java?rev=823504&r1=823503&r2=823504&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/SlopeOneDiffsToAveragesJob.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/SlopeOneDiffsToAveragesJob.java Fri Oct  9 10:28:19 2009
@@ -17,6 +17,14 @@
 
 package org.apache.mahout.cf.taste.hadoop;
 
+import org.apache.commons.cli2.CommandLine;
+import org.apache.commons.cli2.Group;
+import org.apache.commons.cli2.Option;
+import org.apache.commons.cli2.OptionException;
+import org.apache.commons.cli2.builder.ArgumentBuilder;
+import org.apache.commons.cli2.builder.DefaultOptionBuilder;
+import org.apache.commons.cli2.builder.GroupBuilder;
+import org.apache.commons.cli2.commandline.Parser;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -29,21 +37,55 @@
 import org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat;
 import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
 import org.apache.hadoop.util.StringUtils;
+import org.apache.log4j.Logger;
+import org.apache.mahout.common.CommandLineUtil;
+import org.apache.mahout.common.commandline.DefaultOptionCreator;
 
 import java.io.IOException;
 
 public final class SlopeOneDiffsToAveragesJob extends Job {
 
+  /** Logger for this class. */
+  private static Logger LOG = Logger.getLogger(SlopeOneDiffsToAveragesJob.class);
+
   private SlopeOneDiffsToAveragesJob(Configuration jobConf) throws IOException {
     super(jobConf);
   }
 
   public static void main(String[] args) throws Exception {
-    String prefsFile = args[0];
-    String outputPath = args[1];
-    Configuration jobConf = buildJobConf(prefsFile, outputPath);
-    Job job = new SlopeOneDiffsToAveragesJob(jobConf);
-    job.waitForCompletion(true);
+    DefaultOptionBuilder obuilder = new DefaultOptionBuilder();
+    ArgumentBuilder abuilder = new ArgumentBuilder();
+    GroupBuilder gbuilder = new GroupBuilder();
+
+    Option inputOpt = obuilder.withLongName("input").withRequired(true).withShortName("i")
+      .withArgument(abuilder.withName("input").withMinimum(1).withMaximum(1).create())
+      .withDescription("The Path for input preferences file.").create();
+    Option outputOpt = DefaultOptionCreator.outputOption(obuilder, abuilder);
+    Option helpOpt = DefaultOptionCreator.helpOption(obuilder);
+
+    Group group = gbuilder.withName("Options").withOption(inputOpt).withOption(outputOpt)
+        .withOption(helpOpt).create();
+
+
+    try {
+      Parser parser = new Parser();
+      parser.setGroup(group);
+      CommandLine cmdLine = parser.parse(args);
+
+      if (cmdLine.hasOption(helpOpt)) {
+        CommandLineUtil.printHelp(group);
+        return;
+      }
+
+      String prefsFile = cmdLine.getValue(inputOpt).toString();
+      String outputPath = cmdLine.getValue(outputOpt).toString();
+      Configuration jobConf = buildJobConf(prefsFile, outputPath);
+      Job job = new SlopeOneDiffsToAveragesJob(jobConf);
+      job.waitForCompletion(true);
+    } catch (OptionException e) {
+      LOG.error(e.getMessage());
+      CommandLineUtil.printHelp(group);
+    }
   }
 
   public static Configuration buildJobConf(String prefsFile,

Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/SlopeOnePrefsToDiffsJob.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/SlopeOnePrefsToDiffsJob.java?rev=823504&r1=823503&r2=823504&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/SlopeOnePrefsToDiffsJob.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/hadoop/SlopeOnePrefsToDiffsJob.java Fri Oct  9 10:28:19 2009
@@ -17,6 +17,14 @@
 
 package org.apache.mahout.cf.taste.hadoop;
 
+import org.apache.commons.cli2.CommandLine;
+import org.apache.commons.cli2.Group;
+import org.apache.commons.cli2.Option;
+import org.apache.commons.cli2.OptionException;
+import org.apache.commons.cli2.builder.ArgumentBuilder;
+import org.apache.commons.cli2.builder.DefaultOptionBuilder;
+import org.apache.commons.cli2.builder.GroupBuilder;
+import org.apache.commons.cli2.commandline.Parser;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -30,21 +38,56 @@
 import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
 import org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat;
 import org.apache.hadoop.util.StringUtils;
+import org.apache.log4j.Logger;
+import org.apache.mahout.common.CommandLineUtil;
+import org.apache.mahout.common.commandline.DefaultOptionCreator;
 
 import java.io.IOException;
 
 public final class SlopeOnePrefsToDiffsJob extends Job {
 
+  /** Logger for this class.*/
+  private static Logger LOG = Logger.getLogger(SlopeOnePrefsToDiffsJob.class);
+
   private SlopeOnePrefsToDiffsJob(Configuration jobConf) throws IOException {
     super(jobConf);
   }
 
   public static void main(String[] args) throws Exception {
-    String prefsFile = args[0];
-    String outputPath = args[1];
-    Configuration jobConf = buildJobConf(prefsFile, outputPath);
-    Job job = new SlopeOnePrefsToDiffsJob(jobConf);
-    job.waitForCompletion(true);
+    DefaultOptionBuilder obuilder = new DefaultOptionBuilder();
+    ArgumentBuilder abuilder = new ArgumentBuilder();
+    GroupBuilder gbuilder = new GroupBuilder();
+
+    Option inputOpt = obuilder.withLongName("input").withRequired(true).withShortName("i")
+    .withArgument(abuilder.withName("input").withMinimum(1).withMaximum(1).create())
+    .withDescription("The Path for input preferences file.").create();
+
+    Option outputOpt = DefaultOptionCreator.outputOption(obuilder, abuilder);
+    Option helpOpt = DefaultOptionCreator.helpOption(obuilder);
+
+    Group group = gbuilder.withName("Options").withOption(inputOpt).withOption(outputOpt)
+        .withOption(helpOpt).create();
+
+
+    try {
+      Parser parser = new Parser();
+      parser.setGroup(group);
+      CommandLine cmdLine = parser.parse(args);
+
+      if (cmdLine.hasOption(helpOpt)) {
+        CommandLineUtil.printHelp(group);
+        return;
+      }
+
+      String prefsFile = cmdLine.getValue(inputOpt).toString();
+      String outputPath = cmdLine.getValue(outputOpt).toString();
+      Configuration jobConf = buildJobConf(prefsFile, outputPath);
+      Job job = new SlopeOnePrefsToDiffsJob(jobConf);
+      job.waitForCompletion(true);
+    } catch (OptionException e) {
+      LOG.error(e.getMessage());
+      CommandLineUtil.printHelp(group);
+    }
   }
 
   public static Configuration buildJobConf(String prefsFile,

Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/common/commandline/DefaultOptionCreator.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/common/commandline/DefaultOptionCreator.java?rev=823504&r1=823503&r2=823504&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/common/commandline/DefaultOptionCreator.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/common/commandline/DefaultOptionCreator.java Fri Oct  9 10:28:19 2009
@@ -26,7 +26,7 @@
     Option outputOpt = obuilder.withLongName("output").withRequired(true)
         .withShortName("o").withArgument(
             abuilder.withName("output").withMinimum(1).withMaximum(1).create())
-        .withDescription("The directory pathname for output points.").create();
+        .withDescription("The directory pathname for output.").create();
     return outputOpt;
   }
 
@@ -42,7 +42,7 @@
         .withArgument(
             abuilder.withName("input").withMinimum(1).withMaximum(1).create())
         .withDescription(
-            "The Path for input Vectors. Must be a SequenceFile of Writable, Vector")
+            "The Path for input Vectors. Must be a SequenceFile of Writable, Vector.")
         .create();
     return inputOpt;
   }