Start any video training course for FREE. More than 500 to choose from. Learn more
MapReduce Design Patterns

Errata for MapReduce Design Patterns

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color Key: Serious Technical Mistake Minor Technical Mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date Submitted Date Corrected
Page 24
1st paragraph

"but if the count is output from the reducer with the count" should change the second count to average?

Note from the Author or Editor:
Correct -- this is a typo in the book. It should be changed to average. Thank you for reporting this!

cxl  Jul 16, 2014 
Printed, PDF, ePub, Mobi, Safari Books Online, Other Digital Version
Page 28
First paragrpah, line 3

Typo 'aa' in place of the word 'a': "However the next example describes aa more complex" should be: "However the next example describes a more complex"

Elliot West  Feb 07, 2013 
Page 31
source code paragraph, i.e., MedianStdDevCombiner#reduce(...)

In source code (MedianStdDevCombiner#reduce) at 15th line: count.set(count.get() ...); To get correct 'outValue', that code will change like this: outValue.put(entry.getKey(), count.set(count.get() ...); Thanks. :)

Note from the Author or Editor:
Thank you for your submission! The LongWritable 'count' variable pulled out of the map does not actually have to be put back into the map as you have. 'count' is an object pointer and simply changing the value using LongWritable#set will change the value in the map. If it were a map to a plain Java type like 'long', then we would need to set the key/value pair again. I'll be sure to update the code to make it more clear! Thank you again! --Adam

Justin Lee  May 23, 2013 
Page 43
Figure 2-1

I think the reducer output for one of the reducers should read "(group A, summary) (group C, summary)", since the partitioner should make sure that identical keys would all go to the same reducer, hence partition the key identifying group A to reducer 1, the key for group B to reducer 2, and so on (see also Page 27 (Chapter 1 > Map Reduce and Hadoop Refresher > partitioner) ).

Note from the Author or Editor:
This is correct -- Figure 2-1 on page 16 (printed version) should has the output from both reducers as "(group B, summary) (group D, summary)", where one of them should read "(group A, summary) (group C, summary)". Multiple reducers do not receive the same groups. --Adam

Rupert Huelsey  Nov 29, 2012 
Page 60
1st paragraph, 3rd line

The original sentence : "These are the lowest K for this particular map task" But in the context (i.e. top ten pattern), 'lowest ' is errata. so, 'highest' is correct. I think :)

Note from the Author or Editor:
Correct. 'lowest K' should be changed to 'highest K'.

Justin Lee  May 23, 2013 
Page 71
Fourth bullet

The fourth bullet states "The generating data pattern" is part of this chapter -- which was true once upon a time. It was moved to the Input/Output chapter when this chapter was created. This bullet should be removed.

Adam Shook
O'Reilly Author 
Jan 09, 2013 
Page 164, 165
164p: last paragraph, 165p: source code 36 line

At the paragraph that describe the 'Replicated join mapper code' "The map is used in the calls to map to enrich the output value with the user's reputation." should be "The map is used in the calls to map to enrich the output key with the user's reputation." i.e., change 'output value' to 'output key' also in 165 page's source code "outkey.set(value.get() + ... );" should be "outkey.set(key.toString() + ...);" Is it right? thanks.

Note from the Author or Editor:
Correct! It should be using the key, not the value as the error description states.

Justin Lee  May 23, 2013