Bird
Raised Fist0
Hadoopdata~20 mins

Word count as MapReduce example in Hadoop - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
MapReduce Word Count Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of the Mapper function in Word Count
Given the following Mapper code snippet in Hadoop MapReduce for word count, what is the output for the input line: "hello world hello"?
Hadoop
public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {
    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();

    public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
        StringTokenizer itr = new StringTokenizer(value.toString());
        while (itr.hasMoreTokens()) {
            word.set(itr.nextToken());
            context.write(word, one);
        }
    }
}
A(hello,1), (world,1), (hello,1)
B(hello,2), (world,1)
C(hello world hello, 1)
D(hello,1), (world,2)
Attempts:
2 left
💡 Hint
The Mapper outputs each word with a count of 1 for every occurrence.
❓ Predict Output
intermediate
2:00remaining
Output of the Reducer function in Word Count
Given the following Reducer code snippet in Hadoop MapReduce for word count, what is the output for the input key "hello" and values [1, 1, 1]?
Hadoop
public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
    private IntWritable result = new IntWritable();

    public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
        int sum = 0;
        for (IntWritable val : values) {
            sum += val.get();
        }
        result.set(sum);
        context.write(key, result);
    }
}
A(hello, 0)
B(hello, 3)
C(hello, 1)
D(hello, 6)
Attempts:
2 left
💡 Hint
The Reducer sums all counts for the same word.
❓ data_output
advanced
2:00remaining
Final output of Word Count MapReduce job
Suppose the input text file contains the lines:
hello world
hello hadoop
What is the final output of the Word Count MapReduce job?
A(hello, 1), (world, 1), (hadoop, 1)
B(hello, 3), (world, 1), (hadoop, 1)
C(hello, 2), (world, 1), (hadoop, 1)
D(hello world, 1), (hello hadoop, 1)
Attempts:
2 left
💡 Hint
Count how many times each word appears in all lines combined.
🔧 Debug
advanced
2:00remaining
Identify the error in this Mapper code
What error will this Mapper code produce when run?
public static class TokenizerMapper extends Mapper {
    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();

    public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
        StringTokenizer itr = new StringTokenizer(value.toString());
        while (itr.hasMoreTokens()) {
            word.set(itr.nextToken());
            context.write(word, one);
        }
    }
}
ANo error, runs correctly
BClassCastException at runtime
CNullPointerException at runtime
DSyntaxError due to missing semicolon
Attempts:
2 left
💡 Hint
Check punctuation carefully in Java code.
🚀 Application
expert
3:00remaining
Choosing the correct Combiner function for Word Count
Which of the following Combiner implementations correctly optimizes the Word Count MapReduce job by reducing data transfer between Mapper and Reducer?
A
public static class IntSumCombiner extends Reducer&lt;Text, IntWritable, Text, IntWritable&gt; {
    private IntWritable result = new IntWritable();
    public void reduce(Text key, Iterable&lt;IntWritable&gt; values, Context context) throws IOException, InterruptedException {
        int sum = 0;
        for (IntWritable val : values) {
            sum += val.get();
        }
        result.set(sum);
        context.write(key, result);
    }
}
B
public static class IntSumCombiner extends Mapper&lt;Text, IntWritable, Text, IntWritable&gt; {
    public void map(Text key, IntWritable value, Context context) throws IOException, InterruptedException {
        context.write(key, value);
    }
}
C
public static class IntSumCombiner extends Reducer&lt;Text, Text, Text, IntWritable&gt; {
    public void reduce(Text key, Iterable&lt;Text&gt; values, Context context) throws IOException, InterruptedException {
        int sum = 0;
        for (Text val : values) {
            sum += Integer.parseInt(val.toString());
        }
        context.write(key, new IntWritable(sum));
    }
}
D
public static class IntSumCombiner extends Reducer&lt;Text, IntWritable, Text, Text&gt; {
    public void reduce(Text key, Iterable&lt;IntWritable&gt; values, Context context) throws IOException, InterruptedException {
        int sum = 0;
        for (IntWritable val : values) {
            sum += val.get();
        }
        context.write(key, new Text(String.valueOf(sum)));
    }
}
Attempts:
2 left
💡 Hint
The Combiner must have the same input and output types as the Reducer.

Practice

(1/5)
1. What is the main purpose of the Map step in the Word Count MapReduce example?
easy
A. To split input text into pairs of (word, 1)
B. To sum the counts of each word
C. To sort the words alphabetically
D. To output the final word counts

Solution

  1. Step 1: Understand the Map step role

    The Map step processes input text and breaks it into pairs where each word is paired with the number 1. The Reduce step sums these counts, so the Map step does not sum or sort but only creates (word, 1) pairs.
  2. Final Answer:

    To split input text into pairs of (word, 1) -> Option A
  3. Quick Check:

    Map step = (word, 1) pairs [OK]
Hint: Map creates (word, 1) pairs, Reduce sums counts [OK]
Common Mistakes:
  • Confusing Map with Reduce step
  • Thinking Map sorts words
  • Assuming Map sums counts
2. Which of the following is the correct syntax for the Mapper output in a Hadoop Word Count example?
easy
A. context.write(word, 1);
B. context.write(1, word);
C. write.context(word, 1);
D. context.write(word);

Solution

  1. Step 1: Recall Mapper output syntax

    In Hadoop MapReduce, the Mapper outputs key-value pairs using context.write(key, value);. For word count, the key is the word and the value is 1, so context.write(word, 1); is correct.
  2. Final Answer:

    context.write(word, 1); -> Option A
  3. Quick Check:

    Mapper output = context.write(word, 1) [OK]
Hint: Mapper outputs (word, 1) using context.write(word, 1) [OK]
Common Mistakes:
  • Swapping key and value order
  • Using incorrect method name
  • Omitting the value in output
3. Given the following input text: "cat dog cat bird dog cat", what will be the output of the Reduce step in the Word Count MapReduce example?
medium
A. [('cat', 3), ('dog', 3), ('bird', 1)]
B. [('cat', 3), ('dog', 2), ('bird', 1)]
C. [('cat', 2), ('dog', 3), ('bird', 1)]
D. [('cat', 1), ('dog', 1), ('bird', 1)]

Solution

  1. Step 1: Count each word occurrences

    Input words: cat (3 times), dog (2 times), bird (1 time). The Reduce step sums all counts for each word, resulting in ('cat', 3), ('dog', 2), ('bird', 1).
  2. Final Answer:

    [('cat', 3), ('dog', 2), ('bird', 1)] -> Option B
  3. Quick Check:

    Word counts = [('cat', 3), ('dog', 2), ('bird', 1)] [OK]
Hint: Count each word's frequency, sum in Reduce step [OK]
Common Mistakes:
  • Mixing counts of dog and cat
  • Counting only unique words once
  • Adding counts incorrectly
4. Identify the error in this Mapper code snippet for Word Count:
public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
  String[] words = value.toString().split(" ");
  for (String word : words) {
    context.write(word, new IntWritable(1));
  }
}
medium
A. The split method should use "," instead of space
B. The map method should return a value
C. IntWritable should be replaced with Integer
D. The key type in context.write should be Text, not String

Solution

  1. Step 1: Check context.write parameter types

    In Hadoop, context.write expects key and value types matching Mapper output types, usually Text and IntWritable. The variable word is a String, but context.write requires a Text object as key, so it should be new Text(word).
  2. Final Answer:

    The key type in context.write should be Text, not String -> Option D
  3. Quick Check:

    Use Text for keys in context.write [OK]
Hint: Use Hadoop types (Text, IntWritable) in context.write [OK]
Common Mistakes:
  • Passing String instead of Text as key
  • Using wrong split delimiter
  • Expecting map method to return a value
5. You want to modify the Word Count MapReduce job to ignore case (treat 'Cat' and 'cat' as the same word). Which change should you apply in the Mapper?
hard
A. Sort words alphabetically in the Mapper
B. Convert words to uppercase in the Reducer
C. Convert each word to lowercase before writing: context.write(new Text(word.toLowerCase()), new IntWritable(1));
D. Filter out words shorter than 3 characters in the Mapper

Solution

  1. Step 1: Understand case normalization

    To treat 'Cat' and 'cat' as the same, convert all words to the same case before counting. Changing words to lowercase in the Mapper ensures all keys are uniform before Reduce sums counts.
  2. Final Answer:

    Convert each word to lowercase before writing: context.write(new Text(word.toLowerCase()), new IntWritable(1)); -> Option C
  3. Quick Check:

    Normalize case in Mapper for consistent keys [OK]
Hint: Lowercase words in Mapper to unify counts [OK]
Common Mistakes:
  • Changing case in Reducer instead of Mapper
  • Sorting words instead of normalizing case
  • Filtering words unrelated to case
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard