@Override
	public void map(LongWritable key, Text value, OutputCollector<LongWritable, DoubleArrayWritable> output, Reporter reporter) throws IOException {
		StringTokenizer tokenizer = new StringTokenizer(value.toString(), ";");
		DoubleWritable[] ratings = new DoubleWritable[Coefficient.MAX_RATINGS];
		String[] jokeRating;
		String rating;
		int i = 0;

		// Initialize the ratings array with not rated for each joke.
		for (i = 0; i < Coefficient.MAX_RATINGS; i++) ratings[i] = new DoubleWritable(99);

		// Loop over all ratings and collect them in our ratings array.
		while (tokenizer.hasMoreTokens()) {
			// Split the tokenized string at "," and check if we have two offsets. We also check if the
			// extracted rating contains whitespaces, is empty ("") or null, as these are illegal values for a
			// rating.
			if ((jokeRating = tokenizer.nextToken().split(",")).length == 2 && !(StringUtils.isBlank(rating = StringUtils.trim(jokeRating[0])))) {
				// If the rating is -0 insert 0, otherwise we'll get a NumberFormatException later on.
				ratings[Integer.valueOf(jokeRating[1]) - 1] = new DoubleWritable(rating.equals("-0") ? 0 : Double.valueOf(rating));
			}
		}

		// Export ...
		for (i = 0; i < this.maxUsers; i++) output.collect(new LongWritable(i), new DoubleArrayWritable(ratings));
	}