[ 
https://issues.apache.org/jira/browse/MAHOUT-404?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Drew Farris updated MAHOUT-404:
-------------------------------

    Attachment: MAHOUT-404.patch

Here's a patch that modifies AbstractJob.parseDirectories to catch the case 
where addInputOption() or addOutputOption() has been called but no input/output 
option or property (mapred.input.dir/mapred.output.dir) is specified. In this 
case help will be displayed and parseArguments will return null.

It also fixes an issue with the handling of 'flag' options where the option key 
would appear in the map produced by parseArguments even though the flag wasn't 
specified on the command-line. In such a case, the key should not appear in the 
map.

Also includes AbstractJobTest - a unit test for the flag handling, general 
option handling and input/output directoy option handling.

Take a look, let me know if this all makes sense.



> AbstractJob improvements.
> -------------------------
>
>                 Key: MAHOUT-404
>                 URL: https://issues.apache.org/jira/browse/MAHOUT-404
>             Project: Mahout
>          Issue Type: Improvement
>          Components: Utils
>    Affects Versions: 0.4
>            Reporter: Drew Farris
>         Attachments: MAHOUT-404.patch, MAHOUT-404.patch, MAHOUT-404.patch, 
> MAHOUT-404.patch, MAHOUT-404.patch
>
>
> Per discussion : 
> http://lucene.472066.n3.nabble.com/Re-input-now-Dmapred-input-dir-td852297.html#a852297
> With the advent of the parsedArgs map returned by AbstractJob.parseArguments 
> is there
> a need to pass Option arguments around anymore? Could AbstractJob maintain
> Options state in a sense?
> For example, from RecommenderJob:
> {code}
>     Option numReccomendationsOpt = 
> AbstractJob.buildOption("numRecommendations", "n", 
>       "Number of recommendations per user", "10");
>     Option usersFileOpt = AbstractJob.buildOption("usersFile", "u",
>       "File of users to recommend for", null);
>     Option booleanDataOpt = AbstractJob.buildOption("booleanData", "b",
>       "Treat input as without pref values", Boolean.FALSE.toString());
>     Map<String,String> parsedArgs = AbstractJob.parseArguments(
>         args, numReccomendationsOpt, usersFileOpt, booleanDataOpt);
>     if (parsedArgs == null) {
>       return -1;
>     }
> {code}
> Could be changed to something like:
> {code}
> buildOption("numRecommendations", "n", "Number of recommendations per user",
> "10");
> buildOption("usersFile", "u", "File of users to recommend for", null);
> buildOption("booleanData", "b", "Treat input as without pref values",
> Boolean.FALSE.toString());
> Map<String,String> parsedArgs = parseArguments(); 
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to