Errata

Stream Processing with Apache Flink

Errata for Stream Processing with Apache Flink

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.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.

Color Key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted by Date submitted

Figure 3-1 in Chapter 3 under section "Components of a Flink Setup" has a mistake. There are five square depicting components and the far right component is labeled "ResourceManager" instead of "TaskManager".

Ori Popowski  Jun 21, 2019 

In chapter 2 under Section "Processing Streams in Parallel" under subsection "Latency and Throughput" under sub-sub section "Latency Versus Throughput", in the end of the 2nd paragraph, it says "Coffees hop" instead of "Coffee shop"

Ori Popowski  Jun 21, 2019 
Other Digital Version -
http://shop.oreilly.com/product/0636920057321.do

The table of contents does not reflect the contents of the book (most chapters have a different name in the print, and two chapters are reversed online; the online version also mentions version 1.2 of Flink, while the book is for Flink 1.7).

Thibaut Cuvelier  Jul 09, 2019 
Fig 3-13
Fig 3-13

In the Fig 3-13 which explains about key groups:

1. Is it possible for the same key to be processed by two different tasks (Task 1 and Task 2 in the original state before repartition)?

2. Is there any difference between the 2nd key group in Task 1 and Task 2 (in the original state before repartition). If there is no difference, how would they end up in 2 different tasks after first repartition for scale up (Task 1 and Task 3)?

3. Did something go wrong with the arrows indicating the repartition for scale up? The arrows from Task 2 on the left for second and third key group seem to be pointing to wrong tasks on the right (Task 1 and Task 2).


Richards Peter  Mar 26, 2021 
Chapter 3. Figure 3-1
Figure 3-1

In the Figure 3-1 I can see this flow
JobManager->ResourceManager->ResourceManger
Ideally the flow should be JobManager->ResourceManager->TaskManager

Amithsha  Feb 27, 2023 
Printed, Page Chapter-3, Figure 3-1
Figure 3-1

Dear Team,

In Chapter-3, Figure 3-1, at the right end, the group of blocks should
ideally have been tagged as "TaskManager" instead of "ResourceManager".

I hope this will be fixed in newer editions.

Anonymous  Sep 14, 2023 
O'Reilly learning platform Page Chapter 1, Running Your First Flink Application
9th "paragraph". It is under the 8th step.

The instructions call for executing the following tail command:

tail -f ./log/flink-<user>-taskexecutor-<n>-<hostname>.out

However, using a Windows 11 WSL2 environment, the matching log file with .out extension has 0 bytes. The one to which out logs were written has a ".log" extension. Hence, the ".out" file type seems to be a typo. It should be ".log".

Javier Fernández  Dec 20, 2023 
Other Digital Version 62
Section on Watermarks

"Flink encodes timestamps as 16-byte Long values"

should read...

"Flink encodes timestamps as 8-byte Long values"

Andy Bryant  Sep 12, 2019 
PDF Page 65
Heading at bottom of the page

"Performace Implications of Checkpointing" should be "Performance Implications of Checkpointing"

Fabian Hueske
 
Jul 24, 2019 
Printed, PDF Page 75
No specific location

After importing the project in IntelliJ as described, there is an error trying to execute any of the classes:


Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/flink/api/common/typeinfo/TypeInformation
at io.github.streamingwithflink.chapter1.AverageSensorReadings.main(AverageSensorReadings.scala)
Caused by: java.lang.ClassNotFoundException: org.apache.flink.api.common.typeinfo.TypeInformation
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)

The error can be circumvented by removing the <provided> tags from the pom.

Alex Gout  Mar 04, 2021 
Mobi Page 92
Figure 3-1

The ResourceManager near "9 Exchange data" should be "TaskManager"

Xiaodong  Jan 13, 2021 
Printed Page 121
Example 6-9, processElement2 function

The 2 lines below comment "// remove current timer and register new timer" were:

ctx.timerService().deleteEventTimeTimer(curTimerTimestamp);
ctx.timerService().registerProcessingTimeTimer(timerTimestamp);

They should be both EventTime or both ProcessingTime based on the env stream time characteristic, which is not present in the code snippet.

Buqian Zheng  Jul 10, 2019 
Printed Page 121
Example 6-9

The line

> ctx.timerService().deleteEventTimeTimer(curTimerTimestamp)

should be

> ctx.timerService().deleteProcessingTimeTimer(curTimerTimestamp)

Fabian Hueske
 
Jul 24, 2019 
Printed Page 121
example 6-8

readings.connect(filterSwitches)

But there is no readings val definied. Probably it was supposed to be sensorData from the beginning of the example.

Piotr  Dec 04, 2022 
Printed, PDF Page 155
Top

The descriptions of "ReducingState" says:

"The iterator returned by get() returns an Iterable with a single entry, which is
the reduced value."

The description of "AggregatingState" says:

"Aggregating State.get() computes the final result and returns it as an Iterable with a single element."

However, both get() methods do not return an Iterable but the final result value.

Fabian Hüske  Aug 16, 2019 
PDF Page 247
Example 8-10

Should isRunning variable in CountSource class be @volatile?
I think it would be helpful to have the reasoning in the book, maybe as a footnote.

Roman  Nov 01, 2019