Example usage for org.apache.mahout.cf.taste.hadoop.item UserVectorSplitterMapper USERS_FILE

List of usage examples for org.apache.mahout.cf.taste.hadoop.item UserVectorSplitterMapper USERS_FILE

Introduction

In this page you can find the example usage for org.apache.mahout.cf.taste.hadoop.item UserVectorSplitterMapper USERS_FILE.

Prototype

String USERS_FILE

To view the source code for org.apache.mahout.cf.taste.hadoop.item UserVectorSplitterMapper USERS_FILE.

Click Source Link

Usage

From source file:hadoop.api.RecommenderJob.java

License:Apache License

/**
 * Calculate the multiplication of the co-occurrence matrix by the user vectors
 *
 * @param args Information about the input pathpartialMultiply, similarityClassname, maxObservationsPerRow
 * @return 0/*  w  w w  .  j  a va2 s .  c o m*/
 */
public int multiplication(String[] args, String path1, String path2) {
    try {
        prepareRecommender(args);
    } catch (IOException e) {
        e.printStackTrace();
    }
    Path similarityMatrixPath = new Path(path1);
    Path partialMultiplyPath = new Path(prepPath, "partialMultiply");
    int maxPrefsPerUser = Integer.parseInt(getOption("maxPrefsPerUser"));
    String usersFile = getOption("usersFile");

    if (shouldRunNextPhase(parsedArgs, currentPhase)) {
        Job partialMultiply = null;
        try {
            partialMultiply = new Job(getConf(), "partialMultiply");
        } catch (IOException e) {
            e.printStackTrace();
        }
        Configuration partialMultiplyConf = partialMultiply.getConfiguration();

        MultipleInputs.addInputPath(partialMultiply, similarityMatrixPath, SequenceFileInputFormat.class,
                SimilarityMatrixRowWrapperMapper.class);
        MultipleInputs.addInputPath(partialMultiply, new Path(path2), SequenceFileInputFormat.class,
                UserVectorSplitterMapper.class);
        partialMultiply.setJarByClass(org.apache.mahout.cf.taste.hadoop.item.ToVectorAndPrefReducer.class);
        partialMultiply.setMapOutputKeyClass(VarIntWritable.class);
        partialMultiply.setMapOutputValueClass(VectorOrPrefWritable.class);
        partialMultiply.setReducerClass(ToVectorAndPrefReducer.class);
        partialMultiply.setOutputFormatClass(SequenceFileOutputFormat.class);
        partialMultiply.setOutputKeyClass(VarIntWritable.class);
        partialMultiply.setOutputValueClass(VectorAndPrefsWritable.class);
        partialMultiplyConf.setBoolean("mapred.compress.map.output", true);

        partialMultiplyConf.set("mapred.output.dir", partialMultiplyPath.toString());

        if (usersFile != null) {
            partialMultiplyConf.set(UserVectorSplitterMapper.USERS_FILE, usersFile);
        }
        partialMultiplyConf.setInt(UserVectorSplitterMapper.MAX_PREFS_PER_USER_CONSIDERED, maxPrefsPerUser);

        boolean succeeded = false;
        try {
            succeeded = partialMultiply.waitForCompletion(true);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        if (!succeeded) {
            return -1;
        }
    }
    return 0;
}