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