Example #1
0
 public void map(
     LongWritable key,
     Text value,
     OutputCollector<DoubleWritable, DoubleWritable> output,
     Reporter reporter)
     throws IOException {
   String line = value.toString();
   DoubleWritable clave = new DoubleWritable();
   DoubleWritable valor = new DoubleWritable();
   clave.set(Double.parseDouble(line));
   valor.set(Math.sqrt(Double.parseDouble(line)));
   output.collect(clave, valor);
 }
  public void map(
      LongWritable key,
      Text value,
      OutputCollector<IntWritable, DoubleWritable> output,
      Reporter reporter)
      throws IOException {
    /*
     * It implements the mapper. It outputs the numbers of weight and updated weights.
     *
     * Note that the format of intermediate output is <IntWritable, DoubleWritable>,
     * because the key is the number of weight (an integer), and the value is the weight's value (double)
     */
    inputData = value.toString();

    // go through the process
    initialize();
    getposphase();
    getnegphase();
    update();

    // output the intermediate data
    // The <key, value> pairs are <weightID, weightUpdate>
    double[][] vishidinc_array = vishidinc.getArray();
    for (int i = 0; i < numdims; i++) {
      for (int j = 0; j < numhid; j++) {
        weightPos.set(i * numhid + j);
        weightValue.set(vishidinc_array[i][j]);
        output.collect(weightPos, weightValue);
      }
    }
  }
    /*
     * Your output should be a in the form of (DoubleWritable score, Text word)
     * where score is the co-occurrence value for the word. Your output should be
     * sorted from largest co-occurrence to smallest co-occurrence.
     */
    @Override
    public void reduce(DoubleWritable key, Iterable<Text> values, Context context)
        throws IOException, InterruptedException {

      // YOUR CODE HERE
      int amount = 0;
      for (Text gram : values) {
        key.set(new Double(Math.abs(key.get())));
        context.write(key, gram);
        amount++;

        // When reach N_TO_OUTPUT stop
        if (amount == N_TO_OUTPUT) break;
      }
    }