You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ru...@apache.org on 2025/12/04 03:02:15 UTC

(flink-web) 02/02: Rebuild website

This is an automated email from the ASF dual-hosted git repository.

ruanhang1993 pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/flink-web.git

commit f13e4c658d072e7ca84aafe8b26efc5fe9c07568
Author: Hang Ruan <ru...@hotmail.com>
AuthorDate: Thu Dec 4 10:27:21 2025 +0800

    Rebuild website
---
 .../08/26/apache-flink-0.6-available/index.html    |    4 +-
 .../09/26/apache-flink-0.6.1-available/index.html  |    4 +-
 content/2014/10/03/upcoming-events/index.html      |    4 +-
 .../11/04/apache-flink-0.7.0-available/index.html  |    4 +-
 .../11/18/hadoop-compatibility-in-flink/index.html |    4 +-
 .../index.html                                     |    4 +-
 .../01/21/apache-flink-0.8.0-available/index.html  |    4 +-
 .../january-2015-in-the-flink-community/index.html |    4 +-
 .../02/09/introducing-flink-streaming/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../march-2015-in-the-flink-community/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../05/11/juggling-with-bits-and-bytes/index.html  |    4 +-
 .../april-2015-in-the-flink-community/index.html   |    4 +-
 .../06/24/announcing-apache-flink-0.9.0/index.html |    4 +-
 .../index.html                                     |    4 +-
 .../09/01/apache-flink-0.9.1-available/index.html  |    4 +-
 .../09/03/announcing-flink-forward-2015/index.html |    4 +-
 .../index.html                                     |    4 +-
 .../16/announcing-apache-flink-0.10.0/index.html   |    4 +-
 .../2015/11/27/flink-0.10.1-released/index.html    |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../2016/02/11/flink-0.10.2-released/index.html    |    4 +-
 .../03/08/announcing-apache-flink-1.0.0/index.html |    4 +-
 content/2016/04/06/flink-1.0.1-released/index.html |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 content/2016/04/22/flink-1.0.2-released/index.html |    4 +-
 content/2016/05/11/flink-1.0.3-released/index.html |    4 +-
 .../index.html                                     |    4 +-
 .../08/04/announcing-apache-flink-1.1.0/index.html |    4 +-
 content/2016/08/04/flink-1.1.1-released/index.html |    4 +-
 .../index.html                                     |    4 +-
 .../09/05/apache-flink-1.1.2-released/index.html   |    4 +-
 .../10/12/apache-flink-1.1.3-released/index.html   |    4 +-
 .../apache-flink-in-2016-year-in-review/index.html |    4 +-
 .../12/21/apache-flink-1.1.4-released/index.html   |    4 +-
 .../02/06/announcing-apache-flink-1.2.0/index.html |    4 +-
 .../03/23/apache-flink-1.1.5-released/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../04/26/apache-flink-1.2.1-released/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../06/23/apache-flink-1.3.1-released/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../08/05/apache-flink-1.3.2-released/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../apache-flink-in-2017-year-in-review/index.html |    4 +-
 .../index.html                                     |    4 +-
 .../02/15/apache-flink-1.4.1-released/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../03/08/apache-flink-1.4.2-released/index.html   |    4 +-
 .../03/15/apache-flink-1.3.3-released/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../07/12/apache-flink-1.5.1-released/index.html   |    4 +-
 .../07/31/apache-flink-1.5.2-released/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../08/21/apache-flink-1.5.3-released/index.html   |    4 +-
 .../09/20/apache-flink-1.5.4-released/index.html   |    4 +-
 .../09/20/apache-flink-1.6.1-released/index.html   |    4 +-
 .../10/29/apache-flink-1.5.5-released/index.html   |    4 +-
 .../10/29/apache-flink-1.6.2-released/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../12/21/apache-flink-1.7.1-released/index.html   |    4 +-
 .../12/22/apache-flink-1.6.3-released/index.html   |    4 +-
 .../12/26/apache-flink-1.5.6-released/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../02/15/apache-flink-1.7.2-released/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../02/25/apache-flink-1.6.4-released/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../03/when-flink-pulsar-come-together/index.html  |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../07/02/apache-flink-1.8.1-released/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../flink-community-update-september19/index.html  |    4 +-
 .../09/11/apache-flink-1.8.2-released/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../10/18/apache-flink-1.9.1-released/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../12/11/apache-flink-1.8.3-released/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../01/30/apache-flink-1.9.2-released/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../30/flink-community-update-april20/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../04/24/apache-flink-1.9.3-released/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../05/06/flink-community-update-may20/index.html  |    4 +-
 .../05/12/apache-flink-1.10.1-released/index.html  |    4 +-
 .../index.html                                     |    4 +-
 .../06/10/flink-community-update-june20/index.html |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../07/21/apache-flink-1.11.1-released/index.html  |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../07/29/flink-community-update-july20/index.html |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../08/20/the-state-of-flink-on-docker/index.html  |    4 +-
 .../08/25/apache-flink-1.10.2-released/index.html  |    4 +-
 .../index.html                                     |    4 +-
 .../04/flink-community-update-august20/index.html  |    4 +-
 .../09/17/apache-flink-1.11.2-released/index.html  |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../12/18/apache-flink-1.11.3-released/index.html  |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../01/19/apache-flink-1.12.1-released/index.html  |    4 +-
 .../01/29/apache-flink-1.10.3-released/index.html  |    4 +-
 .../index.html                                     |    4 +-
 .../03/03/apache-flink-1.12.2-released/index.html  |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../04/29/apache-flink-1.12.3-released/index.html  |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../05/21/apache-flink-1.12.4-released/index.html  |    4 +-
 .../05/28/apache-flink-1.13.1-released/index.html  |    4 +-
 .../index.html                                     |    4 +-
 .../08/06/apache-flink-1.12.5-released/index.html  |    4 +-
 .../08/06/apache-flink-1.13.2-released/index.html  |    4 +-
 .../08/09/apache-flink-1.11.4-released/index.html  |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../10/19/apache-flink-1.13.3-released/index.html  |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../01/20/pravega-flink-connector-101/index.html   |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../02/22/scala-free-in-one-fifteen/index.html     |    4 +-
 .../index.html                                     |    4 +-
 .../the-generic-asynchronous-base-sink/index.html  |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../08/regarding-akkas-licensing-change/index.html |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../preview-release-of-apache-flink-2.0/index.html |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |   24 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     |    4 +-
 .../index.html                                     | 1093 ++++++++++++++++++++
 content/404.html                                   |    2 +-
 content/categories/index.html                      |    4 +-
 .../documentation/flink-agents-master/index.html   |    4 +-
 .../documentation/flink-agents-stable/index.html   |    4 +-
 content/documentation/flink-cdc-master/index.html  |    4 +-
 content/documentation/flink-cdc-stable/index.html  |    4 +-
 .../flink-kubernetes-operator-master/index.html    |    4 +-
 .../flink-kubernetes-operator-stable/index.html    |    4 +-
 content/documentation/flink-lts/index.html         |    4 +-
 content/documentation/flink-master/index.html      |    4 +-
 content/documentation/flink-stable/index.html      |    8 +-
 .../flink-stateful-functions-master/index.html     |    4 +-
 .../flink-stateful-functions-stable/index.html     |    4 +-
 content/documentation/flinkml-master/index.html    |    4 +-
 content/documentation/flinkml-stable/index.html    |    4 +-
 content/documentation/index.html                   |    4 +-
 content/downloads/index.html                       |   36 +-
 ...edb53c011054da6f67779b4827d05c02c90c9b708e4.js} |  625 ++++++-----
 ...27955e9593b504eef73d691ea86e6894279b8794bab.js} |    2 +-
 content/en/sitemap.xml                             |   10 +-
 content/flink-packages/index.html                  |    4 +-
 content/getting-started/index.html                 |    4 +-
 content/getting-started/training-course/index.html |    4 +-
 .../getting-started/with-flink-agents/index.html   |    4 +-
 content/getting-started/with-flink-cdc/index.html  |    4 +-
 .../with-flink-kubernetes-operator/index.html      |    4 +-
 content/getting-started/with-flink-ml/index.html   |    4 +-
 .../with-flink-stateful-functions/index.html       |    4 +-
 content/getting-started/with-flink/index.html      |    4 +-
 .../code-style-and-quality-common/index.html       |   32 +-
 .../code-style-and-quality-components/index.html   |   32 +-
 .../code-style-and-quality-formatting/index.html   |    4 +-
 .../code-style-and-quality-java/index.html         |   32 +-
 .../code-style-and-quality-preamble/index.html     |   32 +-
 .../index.html                                     |   32 +-
 .../code-style-and-quality-scala/index.html        |   32 +-
 .../how-to-contribute/contribute-code/index.html   |    4 +-
 .../contribute-documentation/index.html            |    4 +-
 .../documentation-style-guide/index.html           |    4 +-
 content/how-to-contribute/getting-help/index.html  |    4 +-
 .../how-to-contribute/improve-website/index.html   |    4 +-
 content/how-to-contribute/index.html               |    4 +-
 content/how-to-contribute/overview/index.html      |    4 +-
 content/how-to-contribute/reviewing-prs/index.html |    4 +-
 .../dynamic-iceberg-sink.png                       |  Bin 0 -> 121206 bytes
 .../multiple-dag-pipeline.png                      |  Bin 0 -> 133243 bytes
 .../simple-single-kafka-topic-to-iceberg.png       |  Bin 0 -> 78809 bytes
 content/index.html                                 |   37 +-
 content/index.xml                                  |   18 +-
 content/material/index.html                        |    4 +-
 .../14/2025-10-14-kafka-dynamic-iceberg-sink.html  |   10 +
 content/news/2025/12/04/release-2.2.0.html         |   10 +
 content/posts/index.html                           |  112 +-
 content/posts/index.xml                            |   16 +-
 content/posts/page/10/index.html                   |  133 +--
 content/posts/page/11/index.html                   |  124 ++-
 content/posts/page/12/index.html                   |  115 +-
 content/posts/page/13/index.html                   |  122 ++-
 content/posts/page/14/index.html                   |  126 ++-
 content/posts/page/15/index.html                   |  120 ++-
 content/posts/page/16/index.html                   |  124 +--
 content/posts/page/17/index.html                   |  123 ++-
 content/posts/page/18/index.html                   |  120 ++-
 content/posts/page/19/index.html                   |  128 +--
 content/posts/page/2/index.html                    |  114 +-
 content/posts/page/20/index.html                   |  125 ++-
 content/posts/page/21/index.html                   |  133 ++-
 content/posts/page/22/index.html                   |  126 ++-
 content/posts/page/23/index.html                   |  102 +-
 content/posts/page/24/index.html                   |  101 +-
 content/posts/page/25/index.html                   |  105 +-
 content/posts/page/26/index.html                   |  109 +-
 content/posts/page/{26 => 27}/index.html           |  195 +---
 content/posts/page/3/index.html                    |  128 ++-
 content/posts/page/4/index.html                    |  131 ++-
 content/posts/page/5/index.html                    |  117 ++-
 content/posts/page/6/index.html                    |  116 ++-
 content/posts/page/7/index.html                    |  123 +--
 content/posts/page/8/index.html                    |  130 +--
 content/posts/page/9/index.html                    |  134 +--
 content/sitemap.xml                                |    2 +-
 content/tags/index.html                            |    4 +-
 content/what-is-flink-ml/index.html                |    4 +-
 content/what-is-flink-table-store/index.html       |    4 +-
 content/what-is-flink/community/index.html         |    4 +-
 .../what-is-flink/flink-applications/index.html    |    4 +-
 .../what-is-flink/flink-architecture/index.html    |    4 +-
 content/what-is-flink/flink-operations/index.html  |    4 +-
 content/what-is-flink/index.html                   |    4 +-
 content/what-is-flink/powered-by/index.html        |    4 +-
 content/what-is-flink/roadmap/index.html           |    4 +-
 content/what-is-flink/security/index.html          |    4 +-
 content/what-is-flink/special-thanks/index.html    |    4 +-
 content/what-is-flink/use-cases/index.html         |    4 +-
 content/what-is-stateful-functions/index.html      |    4 +-
 .../index.html                                     |    4 +-
 ...5165bd728356c5f4a1efd13795a86d1bb0f606815bd.js} |    8 +-
 ...cf0d282672cc8127e74ea49f7c8e608a57240096831.js} |    2 +-
 content/zh/404.html                                |    2 +-
 content/zh/categories/index.html                   |    4 +-
 .../documentation/flink-agents-master/index.html   |    4 +-
 .../documentation/flink-agents-stable/index.html   |    4 +-
 .../zh/documentation/flink-cdc-master/index.html   |    4 +-
 .../zh/documentation/flink-cdc-stable/index.html   |    4 +-
 .../flink-kubernetes-operator-master/index.html    |    4 +-
 .../flink-kubernetes-operator-stable/index.html    |    4 +-
 content/zh/documentation/flink-lts/index.html      |    4 +-
 content/zh/documentation/flink-master/index.html   |    4 +-
 content/zh/documentation/flink-stable/index.html   |    8 +-
 .../flink-stateful-functions-master/index.html     |    4 +-
 .../flink-stateful-functions-stable/index.html     |    4 +-
 content/zh/documentation/flinkml-master/index.html |    4 +-
 content/zh/documentation/flinkml-stable/index.html |    4 +-
 content/zh/documentation/index.html                |    4 +-
 content/zh/downloads/index.html                    |   34 +-
 content/zh/flink-packages/index.html               |    4 +-
 content/zh/getting-started/index.html              |    4 +-
 .../zh/getting-started/training-course/index.html  |    4 +-
 .../getting-started/with-flink-agents/index.html   |    4 +-
 .../zh/getting-started/with-flink-cdc/index.html   |    4 +-
 .../with-flink-kubernetes-operator/index.html      |    4 +-
 .../zh/getting-started/with-flink-ml/index.html    |    4 +-
 .../with-flink-stateful-functions/index.html       |    4 +-
 content/zh/getting-started/with-flink/index.html   |    4 +-
 .../code-style-and-quality-common/index.html       |   32 +-
 .../code-style-and-quality-components/index.html   |   32 +-
 .../code-style-and-quality-formatting/index.html   |   32 +-
 .../code-style-and-quality-java/index.html         |   32 +-
 .../code-style-and-quality-preamble/index.html     |   32 +-
 .../index.html                                     |   32 +-
 .../code-style-and-quality-scala/index.html        |   32 +-
 .../how-to-contribute/contribute-code/index.html   |    4 +-
 .../contribute-documentation/index.html            |    4 +-
 .../documentation-style-guide/index.html           |    4 +-
 .../zh/how-to-contribute/getting-help/index.html   |    4 +-
 .../how-to-contribute/improve-website/index.html   |    4 +-
 content/zh/how-to-contribute/index.html            |    4 +-
 content/zh/how-to-contribute/overview/index.html   |    4 +-
 .../zh/how-to-contribute/reviewing-prs/index.html  |    4 +-
 content/zh/index.html                              |   37 +-
 content/zh/index.xml                               |    2 +-
 content/zh/material/index.html                     |    4 +-
 content/zh/tags/index.html                         |    4 +-
 content/zh/what-is-flink-ml/index.html             |    4 +-
 content/zh/what-is-flink-table-store/index.html    |    4 +-
 content/zh/what-is-flink/community/index.html      |    4 +-
 .../zh/what-is-flink/flink-applications/index.html |    4 +-
 .../zh/what-is-flink/flink-architecture/index.html |    4 +-
 .../zh/what-is-flink/flink-operations/index.html   |    4 +-
 content/zh/what-is-flink/index.html                |    4 +-
 content/zh/what-is-flink/powered-by/index.html     |    4 +-
 content/zh/what-is-flink/roadmap/index.html        |    4 +-
 content/zh/what-is-flink/security/index.html       |    4 +-
 content/zh/what-is-flink/special-thanks/index.html |    4 +-
 content/zh/what-is-flink/use-cases/index.html      |    4 +-
 content/zh/what-is-stateful-functions/index.html   |    4 +-
 .../index.html                                     |    4 +-
 419 files changed, 4229 insertions(+), 2929 deletions(-)

diff --git a/content/2014/08/26/apache-flink-0.6-available/index.html b/content/2014/08/26/apache-flink-0.6-available/index.html
index ebc972b99..9eb79df98 100644
--- a/content/2014/08/26/apache-flink-0.6-available/index.html
+++ b/content/2014/08/26/apache-flink-0.6-available/index.html
@@ -28,7 +28,7 @@ What is Flink? # Apache Flink is a general-purpose data processing engine for cl
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2014/09/26/apache-flink-0.6.1-available/index.html b/content/2014/09/26/apache-flink-0.6.1-available/index.html
index 40553f51a..d78bb75be 100644
--- a/content/2014/09/26/apache-flink-0.6.1-available/index.html
+++ b/content/2014/09/26/apache-flink-0.6.1-available/index.html
@@ -30,7 +30,7 @@ Download the release today." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2014/10/03/upcoming-events/index.html b/content/2014/10/03/upcoming-events/index.html
index c132089b6..0a126e9f9 100644
--- a/content/2014/10/03/upcoming-events/index.html
+++ b/content/2014/10/03/upcoming-events/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2014/11/04/apache-flink-0.7.0-available/index.html b/content/2014/11/04/apache-flink-0.7.0-available/index.html
index 57de1ea8b..5e4a98978 100644
--- a/content/2014/11/04/apache-flink-0.7.0-available/index.html
+++ b/content/2014/11/04/apache-flink-0.7.0-available/index.html
@@ -32,7 +32,7 @@ Overview of major new features # Flink Streaming: The gem of the 0." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2014/11/18/hadoop-compatibility-in-flink/index.html b/content/2014/11/18/hadoop-compatibility-in-flink/index.html
index ea7e096e1..1af424f3e 100644
--- a/content/2014/11/18/hadoop-compatibility-in-flink/index.html
+++ b/content/2014/11/18/hadoop-compatibility-in-flink/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/01/06/december-2014-in-the-flink-community/index.html b/content/2015/01/06/december-2014-in-the-flink-community/index.html
index 2b6108fd2..c889ba4bd 100644
--- a/content/2015/01/06/december-2014-in-the-flink-community/index.html
+++ b/content/2015/01/06/december-2014-in-the-flink-community/index.html
@@ -28,7 +28,7 @@ Flink graduation # The biggest news is that the Apache board approved Flink as a
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/01/21/apache-flink-0.8.0-available/index.html b/content/2015/01/21/apache-flink-0.8.0-available/index.html
index eed110063..cc05cd80f 100644
--- a/content/2015/01/21/apache-flink-0.8.0-available/index.html
+++ b/content/2015/01/21/apache-flink-0.8.0-available/index.html
@@ -32,7 +32,7 @@ Overview of major new features # Extended filesystem support: The former Distrib
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/02/04/january-2015-in-the-flink-community/index.html b/content/2015/02/04/january-2015-in-the-flink-community/index.html
index 0301d868e..457a1c4e4 100644
--- a/content/2015/02/04/january-2015-in-the-flink-community/index.html
+++ b/content/2015/02/04/january-2015-in-the-flink-community/index.html
@@ -32,7 +32,7 @@ Articles in the press # The Apache Software Foundation announced Flink as a Top-
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/02/09/introducing-flink-streaming/index.html b/content/2015/02/09/introducing-flink-streaming/index.html
index 8cdb5da96..e939c4c8f 100644
--- a/content/2015/02/09/introducing-flink-streaming/index.html
+++ b/content/2015/02/09/introducing-flink-streaming/index.html
@@ -28,7 +28,7 @@ In this post, we go through an example that uses the Flink Streaming API to comp
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/03/02/february-2015-in-the-flink-community/index.html b/content/2015/03/02/february-2015-in-the-flink-community/index.html
index 3765c9e1d..83395d909 100644
--- a/content/2015/03/02/february-2015-in-the-flink-community/index.html
+++ b/content/2015/03/02/february-2015-in-the-flink-community/index.html
@@ -30,7 +30,7 @@ New committer # Max Michels has been voted a committer by the Flink PMC." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/03/13/peeking-into-apache-flinks-engine-room/index.html b/content/2015/03/13/peeking-into-apache-flinks-engine-room/index.html
index 39f3fb9b3..1c0ec1e36 100644
--- a/content/2015/03/13/peeking-into-apache-flinks-engine-room/index.html
+++ b/content/2015/03/13/peeking-into-apache-flinks-engine-room/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/04/07/march-2015-in-the-flink-community/index.html b/content/2015/04/07/march-2015-in-the-flink-community/index.html
index f4ecf34b1..df3542716 100644
--- a/content/2015/04/07/march-2015-in-the-flink-community/index.html
+++ b/content/2015/04/07/march-2015-in-the-flink-community/index.html
@@ -30,7 +30,7 @@ Learn about the internals of Flink # The community has started an effort to bett
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/04/13/announcing-flink-0.9.0-milestone1-preview-release/index.html b/content/2015/04/13/announcing-flink-0.9.0-milestone1-preview-release/index.html
index b648f79ab..6ef3293a5 100644
--- a/content/2015/04/13/announcing-flink-0.9.0-milestone1-preview-release/index.html
+++ b/content/2015/04/13/announcing-flink-0.9.0-milestone1-preview-release/index.html
@@ -28,7 +28,7 @@ You can download the release here and check out the latest documentation here."
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/05/11/juggling-with-bits-and-bytes/index.html b/content/2015/05/11/juggling-with-bits-and-bytes/index.html
index 675464822..177da21e2 100644
--- a/content/2015/05/11/juggling-with-bits-and-bytes/index.html
+++ b/content/2015/05/11/juggling-with-bits-and-bytes/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/05/14/april-2015-in-the-flink-community/index.html b/content/2015/05/14/april-2015-in-the-flink-community/index.html
index ceb623775..b4e9759b3 100644
--- a/content/2015/05/14/april-2015-in-the-flink-community/index.html
+++ b/content/2015/05/14/april-2015-in-the-flink-community/index.html
@@ -30,7 +30,7 @@ Flink 0." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/06/24/announcing-apache-flink-0.9.0/index.html b/content/2015/06/24/announcing-apache-flink-0.9.0/index.html
index 5cc9fb4cc..66cf3070b 100644
--- a/content/2015/06/24/announcing-apache-flink-0.9.0/index.html
+++ b/content/2015/06/24/announcing-apache-flink-0.9.0/index.html
@@ -28,7 +28,7 @@ Download the release and check out the documentation. Feedback through the Flink
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/08/24/introducing-gelly-graph-processing-with-apache-flink/index.html b/content/2015/08/24/introducing-gelly-graph-processing-with-apache-flink/index.html
index 49d51cdf1..97e338fd4 100644
--- a/content/2015/08/24/introducing-gelly-graph-processing-with-apache-flink/index.html
+++ b/content/2015/08/24/introducing-gelly-graph-processing-with-apache-flink/index.html
@@ -28,7 +28,7 @@ Gelly allows Flink users to perform end-to-end data analysis in a single system.
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/09/01/apache-flink-0.9.1-available/index.html b/content/2015/09/01/apache-flink-0.9.1-available/index.html
index 1f0162cd5..cc9153911 100644
--- a/content/2015/09/01/apache-flink-0.9.1-available/index.html
+++ b/content/2015/09/01/apache-flink-0.9.1-available/index.html
@@ -32,7 +32,7 @@ The following issues were fixed for this release:" />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/09/03/announcing-flink-forward-2015/index.html b/content/2015/09/03/announcing-flink-forward-2015/index.html
index 9415b175b..9fcfb2135 100644
--- a/content/2015/09/03/announcing-flink-forward-2015/index.html
+++ b/content/2015/09/03/announcing-flink-forward-2015/index.html
@@ -28,7 +28,7 @@ The conference program has been announced by the organizers and a program commit
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/09/16/off-heap-memory-in-apache-flink-and-the-curious-jit-compiler/index.html b/content/2015/09/16/off-heap-memory-in-apache-flink-and-the-curious-jit-compiler/index.html
index 8dd0076bf..51949bb24 100644
--- a/content/2015/09/16/off-heap-memory-in-apache-flink-and-the-curious-jit-compiler/index.html
+++ b/content/2015/09/16/off-heap-memory-in-apache-flink-and-the-curious-jit-compiler/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/11/16/announcing-apache-flink-0.10.0/index.html b/content/2015/11/16/announcing-apache-flink-0.10.0/index.html
index 91f764c6c..ac0be3862 100644
--- a/content/2015/11/16/announcing-apache-flink-0.10.0/index.html
+++ b/content/2015/11/16/announcing-apache-flink-0.10.0/index.html
@@ -28,7 +28,7 @@ For Flink 0.10.0, the focus of the community was to graduate the DataStream API
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/11/27/flink-0.10.1-released/index.html b/content/2015/11/27/flink-0.10.1-released/index.html
index c3839cdcf..47daec89c 100644
--- a/content/2015/11/27/flink-0.10.1-released/index.html
+++ b/content/2015/11/27/flink-0.10.1-released/index.html
@@ -30,7 +30,7 @@ Issues fixed # [FLINK-2879] - Links in documentation are broken [FLINK-2938] - S
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/12/04/introducing-stream-windows-in-apache-flink/index.html b/content/2015/12/04/introducing-stream-windows-in-apache-flink/index.html
index d9c59bd5e..133f500f3 100644
--- a/content/2015/12/04/introducing-stream-windows-in-apache-flink/index.html
+++ b/content/2015/12/04/introducing-stream-windows-in-apache-flink/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/12/11/storm-compatibility-in-apache-flink-how-to-run-existing-storm-topologies-on-flink/index.html b/content/2015/12/11/storm-compatibility-in-apache-flink-how-to-run-existing-storm-topologies-on-flink/index.html
index cb4a3432b..c0b8525f1 100644
--- a/content/2015/12/11/storm-compatibility-in-apache-flink-how-to-run-existing-storm-topologies-on-flink/index.html
+++ b/content/2015/12/11/storm-compatibility-in-apache-flink-how-to-run-existing-storm-topologies-on-flink/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2015/12/18/flink-2015-a-year-in-review-and-a-lookout-to-2016/index.html b/content/2015/12/18/flink-2015-a-year-in-review-and-a-lookout-to-2016/index.html
index cea04d756..d5d52a4c6 100644
--- a/content/2015/12/18/flink-2015-a-year-in-review-and-a-lookout-to-2016/index.html
+++ b/content/2015/12/18/flink-2015-a-year-in-review-and-a-lookout-to-2016/index.html
@@ -28,7 +28,7 @@ Overall, we have seen Flink grow in terms of functionality from an engine to one
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2016/02/11/flink-0.10.2-released/index.html b/content/2016/02/11/flink-0.10.2-released/index.html
index ce7e7fb1e..c428d333c 100644
--- a/content/2016/02/11/flink-0.10.2-released/index.html
+++ b/content/2016/02/11/flink-0.10.2-released/index.html
@@ -30,7 +30,7 @@ Issues fixed # FLINK-3242: Adjust StateBackendITCase for 0.10 signatures of stat
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2016/03/08/announcing-apache-flink-1.0.0/index.html b/content/2016/03/08/announcing-apache-flink-1.0.0/index.html
index 6f2089c52..eaeb3742f 100644
--- a/content/2016/03/08/announcing-apache-flink-1.0.0/index.html
+++ b/content/2016/03/08/announcing-apache-flink-1.0.0/index.html
@@ -28,7 +28,7 @@ Flink version 1.0.0 marks the beginning of the 1.X.X series of releases, which w
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2016/04/06/flink-1.0.1-released/index.html b/content/2016/04/06/flink-1.0.1-released/index.html
index be5804e02..c6bb54ec6 100644
--- a/content/2016/04/06/flink-1.0.1-released/index.html
+++ b/content/2016/04/06/flink-1.0.1-released/index.html
@@ -30,7 +30,7 @@ Fixed Issues # Bug [FLINK-3179] - Combiner is not injected if Reduce or GroupRed
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2016/04/06/introducing-complex-event-processing-cep-with-apache-flink/index.html b/content/2016/04/06/introducing-complex-event-processing-cep-with-apache-flink/index.html
index 515792236..aeb02e79d 100644
--- a/content/2016/04/06/introducing-complex-event-processing-cep-with-apache-flink/index.html
+++ b/content/2016/04/06/introducing-complex-event-processing-cep-with-apache-flink/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2016/04/14/flink-forward-2016-call-for-submissions-is-now-open/index.html b/content/2016/04/14/flink-forward-2016-call-for-submissions-is-now-open/index.html
index ec96a2119..c9f942b7f 100644
--- a/content/2016/04/14/flink-forward-2016-call-for-submissions-is-now-open/index.html
+++ b/content/2016/04/14/flink-forward-2016-call-for-submissions-is-now-open/index.html
@@ -28,7 +28,7 @@ The conference welcomes submissions on everything Flink-related, including exper
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2016/04/22/flink-1.0.2-released/index.html b/content/2016/04/22/flink-1.0.2-released/index.html
index 2f44e3508..15fccf2d3 100644
--- a/content/2016/04/22/flink-1.0.2-released/index.html
+++ b/content/2016/04/22/flink-1.0.2-released/index.html
@@ -30,7 +30,7 @@ Fixed Issues # Bug # [FLINK-3657] [dataSet] Change access of DataSetUtils.countE
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2016/05/11/flink-1.0.3-released/index.html b/content/2016/05/11/flink-1.0.3-released/index.html
index b2c8a07d6..d9200f6a3 100644
--- a/content/2016/05/11/flink-1.0.3-released/index.html
+++ b/content/2016/05/11/flink-1.0.3-released/index.html
@@ -30,7 +30,7 @@ Fixed Issues # Bug # [FLINK-3790] [streaming] Use proper hadoop config in rollin
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2016/05/24/stream-processing-for-everyone-with-sql-and-apache-flink/index.html b/content/2016/05/24/stream-processing-for-everyone-with-sql-and-apache-flink/index.html
index f8a2a8ee8..d3d04bd7f 100644
--- a/content/2016/05/24/stream-processing-for-everyone-with-sql-and-apache-flink/index.html
+++ b/content/2016/05/24/stream-processing-for-everyone-with-sql-and-apache-flink/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2016/08/04/announcing-apache-flink-1.1.0/index.html b/content/2016/08/04/announcing-apache-flink-1.1.0/index.html
index aae91528b..7b2f697bf 100644
--- a/content/2016/08/04/announcing-apache-flink-1.1.0/index.html
+++ b/content/2016/08/04/announcing-apache-flink-1.1.0/index.html
@@ -28,7 +28,7 @@ This release is the first major release in the 1.X.X series of releases, which m
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2016/08/04/flink-1.1.1-released/index.html b/content/2016/08/04/flink-1.1.1-released/index.html
index 3fca5a8db..6c6889cfe 100644
--- a/content/2016/08/04/flink-1.1.1-released/index.html
+++ b/content/2016/08/04/flink-1.1.1-released/index.html
@@ -30,7 +30,7 @@ This was fixed with this release and we highly recommend all users to use this v
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2016/08/24/flink-forward-2016-announcing-schedule-keynotes-and-panel-discussion/index.html b/content/2016/08/24/flink-forward-2016-announcing-schedule-keynotes-and-panel-discussion/index.html
index 307aa8304..a2c0441e7 100644
--- a/content/2016/08/24/flink-forward-2016-announcing-schedule-keynotes-and-panel-discussion/index.html
+++ b/content/2016/08/24/flink-forward-2016-announcing-schedule-keynotes-and-panel-discussion/index.html
@@ -28,7 +28,7 @@ Ted Dunning has been announced as a keynote speaker at the event. Ted is the VP
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2016/09/05/apache-flink-1.1.2-released/index.html b/content/2016/09/05/apache-flink-1.1.2-released/index.html
index 167a5f43e..10a03e865 100644
--- a/content/2016/09/05/apache-flink-1.1.2-released/index.html
+++ b/content/2016/09/05/apache-flink-1.1.2-released/index.html
@@ -32,7 +32,7 @@ Release Notes - Flink - Version 1.1.2 [FLINK-4236] - Flink Dashboard stops showi
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2016/10/12/apache-flink-1.1.3-released/index.html b/content/2016/10/12/apache-flink-1.1.3-released/index.html
index f4c527d65..814926b5f 100644
--- a/content/2016/10/12/apache-flink-1.1.3-released/index.html
+++ b/content/2016/10/12/apache-flink-1.1.3-released/index.html
@@ -32,7 +32,7 @@ Note for RocksDB Backend Users # It is highly recommended to use the &ldquo;full
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2016/12/19/apache-flink-in-2016-year-in-review/index.html b/content/2016/12/19/apache-flink-in-2016-year-in-review/index.html
index 1833b6d00..e34153bfd 100644
--- a/content/2016/12/19/apache-flink-in-2016-year-in-review/index.html
+++ b/content/2016/12/19/apache-flink-in-2016-year-in-review/index.html
@@ -28,7 +28,7 @@ In this post, we’ll look back on the project’s progress over the course of 2
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2016/12/21/apache-flink-1.1.4-released/index.html b/content/2016/12/21/apache-flink-1.1.4-released/index.html
index 344781899..ac998b388 100644
--- a/content/2016/12/21/apache-flink-1.1.4-released/index.html
+++ b/content/2016/12/21/apache-flink-1.1.4-released/index.html
@@ -32,7 +32,7 @@ Note for RocksDB Backend Users # We updated Flink&rsquo;s RocksDB dependency ver
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2017/02/06/announcing-apache-flink-1.2.0/index.html b/content/2017/02/06/announcing-apache-flink-1.2.0/index.html
index b2b2b8613..215e208e6 100644
--- a/content/2017/02/06/announcing-apache-flink-1.2.0/index.html
+++ b/content/2017/02/06/announcing-apache-flink-1.2.0/index.html
@@ -30,7 +30,7 @@ We encourage everyone to download the release and check out the documentation."
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2017/03/23/apache-flink-1.1.5-released/index.html b/content/2017/03/23/apache-flink-1.1.5-released/index.html
index d8d802973..7469853e3 100644
--- a/content/2017/03/23/apache-flink-1.1.5-released/index.html
+++ b/content/2017/03/23/apache-flink-1.1.5-released/index.html
@@ -30,7 +30,7 @@ This release includes critical fixes for HA recovery robustness, fault tolerance
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2017/03/29/from-streams-to-tables-and-back-again-an-update-on-flinks-table-sql-api/index.html b/content/2017/03/29/from-streams-to-tables-and-back-again-an-update-on-flinks-table-sql-api/index.html
index bcd8b232b..c54657fc5 100644
--- a/content/2017/03/29/from-streams-to-tables-and-back-again-an-update-on-flinks-table-sql-api/index.html
+++ b/content/2017/03/29/from-streams-to-tables-and-back-again-an-update-on-flinks-table-sql-api/index.html
@@ -28,7 +28,7 @@ Flink&rsquo;s DataStream abstraction is a powerful API which lets you flexibly d
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2017/03/30/continuous-queries-on-dynamic-tables/index.html b/content/2017/03/30/continuous-queries-on-dynamic-tables/index.html
index f556869ad..344df4be5 100644
--- a/content/2017/03/30/continuous-queries-on-dynamic-tables/index.html
+++ b/content/2017/03/30/continuous-queries-on-dynamic-tables/index.html
@@ -28,7 +28,7 @@ Apache Flink is very well suited to power streaming analytics applications becau
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2017/04/26/apache-flink-1.2.1-released/index.html b/content/2017/04/26/apache-flink-1.2.1-released/index.html
index 95250d2b2..64613c038 100644
--- a/content/2017/04/26/apache-flink-1.2.1-released/index.html
+++ b/content/2017/04/26/apache-flink-1.2.1-released/index.html
@@ -34,7 +34,7 @@ FLINK-6353 Restoring using CheckpointedRestoring does not work from 1.2 to 1.2 F
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2017/05/16/introducing-docker-images-for-apache-flink/index.html b/content/2017/05/16/introducing-docker-images-for-apache-flink/index.html
index 9201023df..b71f8c934 100644
--- a/content/2017/05/16/introducing-docker-images-for-apache-flink/index.html
+++ b/content/2017/05/16/introducing-docker-images-for-apache-flink/index.html
@@ -28,7 +28,7 @@ A community-maintained way to run Apache Flink on Docker and other container run
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2017/06/01/apache-flink-1.3.0-release-announcement/index.html b/content/2017/06/01/apache-flink-1.3.0-release-announcement/index.html
index 607c7b99c..90a6bd431 100644
--- a/content/2017/06/01/apache-flink-1.3.0-release-announcement/index.html
+++ b/content/2017/06/01/apache-flink-1.3.0-release-announcement/index.html
@@ -30,7 +30,7 @@ Users can expect Flink releases now in a 4 month cycle." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2017/06/23/apache-flink-1.3.1-released/index.html b/content/2017/06/23/apache-flink-1.3.1-released/index.html
index 6a7ec0802..1413bfb73 100644
--- a/content/2017/06/23/apache-flink-1.3.1-released/index.html
+++ b/content/2017/06/23/apache-flink-1.3.1-released/index.html
@@ -32,7 +32,7 @@ We highly recommend all users to upgrade to Flink 1.3.1.
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2017/07/04/a-deep-dive-into-rescalable-state-in-apache-flink/index.html b/content/2017/07/04/a-deep-dive-into-rescalable-state-in-apache-flink/index.html
index efcb931dc..3230e1310 100644
--- a/content/2017/07/04/a-deep-dive-into-rescalable-state-in-apache-flink/index.html
+++ b/content/2017/07/04/a-deep-dive-into-rescalable-state-in-apache-flink/index.html
@@ -28,7 +28,7 @@ In contrast, operators in stateless stream processing only consider their curren
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2017/08/05/apache-flink-1.3.2-released/index.html b/content/2017/08/05/apache-flink-1.3.2-released/index.html
index 7525f54fd..b1374c1ef 100644
--- a/content/2017/08/05/apache-flink-1.3.2-released/index.html
+++ b/content/2017/08/05/apache-flink-1.3.2-released/index.html
@@ -32,7 +32,7 @@ Important Notice: A user reported a bug in the FlinkKafkaConsumer (FLINK-7143) t
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2017/11/21/looking-ahead-to-apache-flink-1.4.0-and-1.5.0/index.html b/content/2017/11/21/looking-ahead-to-apache-flink-1.4.0-and-1.5.0/index.html
index 71b6be866..e521996d5 100644
--- a/content/2017/11/21/looking-ahead-to-apache-flink-1.4.0-and-1.5.0/index.html
+++ b/content/2017/11/21/looking-ahead-to-apache-flink-1.4.0-and-1.5.0/index.html
@@ -28,7 +28,7 @@ Both releases include ambitious features that we believe will move Flink to an e
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2017/12/12/apache-flink-1.4.0-release-announcement/index.html b/content/2017/12/12/apache-flink-1.4.0-release-announcement/index.html
index 2d122fc64..0e3934970 100644
--- a/content/2017/12/12/apache-flink-1.4.0-release-announcement/index.html
+++ b/content/2017/12/12/apache-flink-1.4.0-release-announcement/index.html
@@ -30,7 +30,7 @@ We encourage everyone to download the release and check out the documentation."
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2017/12/21/apache-flink-in-2017-year-in-review/index.html b/content/2017/12/21/apache-flink-in-2017-year-in-review/index.html
index c0636306d..254adb493 100644
--- a/content/2017/12/21/apache-flink-in-2017-year-in-review/index.html
+++ b/content/2017/12/21/apache-flink-in-2017-year-in-review/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/01/30/managing-large-state-in-apache-flink-an-intro-to-incremental-checkpointing/index.html b/content/2018/01/30/managing-large-state-in-apache-flink-an-intro-to-incremental-checkpointing/index.html
index af2830dc5..32b228419 100644
--- a/content/2018/01/30/managing-large-state-in-apache-flink-an-intro-to-incremental-checkpointing/index.html
+++ b/content/2018/01/30/managing-large-state-in-apache-flink-an-intro-to-incremental-checkpointing/index.html
@@ -28,7 +28,7 @@ State is a fundamental, enabling concept in stream processing required for a maj
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/02/15/apache-flink-1.4.1-released/index.html b/content/2018/02/15/apache-flink-1.4.1-released/index.html
index a0f2d0a02..112aed79e 100644
--- a/content/2018/02/15/apache-flink-1.4.1-released/index.html
+++ b/content/2018/02/15/apache-flink-1.4.1-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/02/28/an-overview-of-end-to-end-exactly-once-processing-in-apache-flink-with-apache-kafka-too/index.html b/content/2018/02/28/an-overview-of-end-to-end-exactly-once-processing-in-apache-flink-with-apache-kafka-too/index.html
index 00a60db64..348dad6fd 100644
--- a/content/2018/02/28/an-overview-of-end-to-end-exactly-once-processing-in-apache-flink-with-apache-kafka-too/index.html
+++ b/content/2018/02/28/an-overview-of-end-to-end-exactly-once-processing-in-apache-flink-with-apache-kafka-too/index.html
@@ -28,7 +28,7 @@ Apache Flink 1.4.0, released in December 2017, introduced a significant mileston
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/03/08/apache-flink-1.4.2-released/index.html b/content/2018/03/08/apache-flink-1.4.2-released/index.html
index 881c75784..a841858e4 100644
--- a/content/2018/03/08/apache-flink-1.4.2-released/index.html
+++ b/content/2018/03/08/apache-flink-1.4.2-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/03/15/apache-flink-1.3.3-released/index.html b/content/2018/03/15/apache-flink-1.3.3-released/index.html
index 8981584ab..cc3a78d6b 100644
--- a/content/2018/03/15/apache-flink-1.3.3-released/index.html
+++ b/content/2018/03/15/apache-flink-1.3.3-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/05/18/apache-flink-1.5.0-release-announcement/index.html b/content/2018/05/18/apache-flink-1.5.0-release-announcement/index.html
index a231f55b7..7dd18754a 100644
--- a/content/2018/05/18/apache-flink-1.5.0-release-announcement/index.html
+++ b/content/2018/05/18/apache-flink-1.5.0-release-announcement/index.html
@@ -30,7 +30,7 @@ We encourage everyone to download the release and check out the documentation."
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/07/12/apache-flink-1.5.1-released/index.html b/content/2018/07/12/apache-flink-1.5.1-released/index.html
index c68065e8f..dcd290df7 100644
--- a/content/2018/07/12/apache-flink-1.5.1-released/index.html
+++ b/content/2018/07/12/apache-flink-1.5.1-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/07/31/apache-flink-1.5.2-released/index.html b/content/2018/07/31/apache-flink-1.5.2-released/index.html
index 0e05cb96e..a00dcbdff 100644
--- a/content/2018/07/31/apache-flink-1.5.2-released/index.html
+++ b/content/2018/07/31/apache-flink-1.5.2-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/08/09/apache-flink-1.6.0-release-announcement/index.html b/content/2018/08/09/apache-flink-1.6.0-release-announcement/index.html
index 207305f1d..f10f40317 100644
--- a/content/2018/08/09/apache-flink-1.6.0-release-announcement/index.html
+++ b/content/2018/08/09/apache-flink-1.6.0-release-announcement/index.html
@@ -30,7 +30,7 @@ We encourage everyone to download the release and check out the documentation."
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/08/21/apache-flink-1.5.3-released/index.html b/content/2018/08/21/apache-flink-1.5.3-released/index.html
index ffa8691f9..d8b94b644 100644
--- a/content/2018/08/21/apache-flink-1.5.3-released/index.html
+++ b/content/2018/08/21/apache-flink-1.5.3-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/09/20/apache-flink-1.5.4-released/index.html b/content/2018/09/20/apache-flink-1.5.4-released/index.html
index a9780a815..9c07ed9b8 100644
--- a/content/2018/09/20/apache-flink-1.5.4-released/index.html
+++ b/content/2018/09/20/apache-flink-1.5.4-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/09/20/apache-flink-1.6.1-released/index.html b/content/2018/09/20/apache-flink-1.6.1-released/index.html
index ac7295f7e..f9cee0290 100644
--- a/content/2018/09/20/apache-flink-1.6.1-released/index.html
+++ b/content/2018/09/20/apache-flink-1.6.1-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/10/29/apache-flink-1.5.5-released/index.html b/content/2018/10/29/apache-flink-1.5.5-released/index.html
index ae514503b..c9e9e76ec 100644
--- a/content/2018/10/29/apache-flink-1.5.5-released/index.html
+++ b/content/2018/10/29/apache-flink-1.5.5-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/10/29/apache-flink-1.6.2-released/index.html b/content/2018/10/29/apache-flink-1.6.2-released/index.html
index 0fbf7c757..ef1573545 100644
--- a/content/2018/10/29/apache-flink-1.6.2-released/index.html
+++ b/content/2018/10/29/apache-flink-1.6.2-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/11/30/apache-flink-1.7.0-release-announcement/index.html b/content/2018/11/30/apache-flink-1.7.0-release-announcement/index.html
index a35d1b8c6..811bfe42f 100644
--- a/content/2018/11/30/apache-flink-1.7.0-release-announcement/index.html
+++ b/content/2018/11/30/apache-flink-1.7.0-release-announcement/index.html
@@ -28,7 +28,7 @@ Flink 1.7.0 is API-compatible with previous 1.x.y releases for APIs annotated wi
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/12/21/apache-flink-1.7.1-released/index.html b/content/2018/12/21/apache-flink-1.7.1-released/index.html
index e1e372a14..22a52a367 100644
--- a/content/2018/12/21/apache-flink-1.7.1-released/index.html
+++ b/content/2018/12/21/apache-flink-1.7.1-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/12/22/apache-flink-1.6.3-released/index.html b/content/2018/12/22/apache-flink-1.6.3-released/index.html
index 960b37a40..a69ffe373 100644
--- a/content/2018/12/22/apache-flink-1.6.3-released/index.html
+++ b/content/2018/12/22/apache-flink-1.6.3-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2018/12/26/apache-flink-1.5.6-released/index.html b/content/2018/12/26/apache-flink-1.5.6-released/index.html
index c015dee22..91fcc08c6 100644
--- a/content/2018/12/26/apache-flink-1.5.6-released/index.html
+++ b/content/2018/12/26/apache-flink-1.5.6-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/02/13/batch-as-a-special-case-of-streaming-and-alibabas-contribution-of-blink/index.html b/content/2019/02/13/batch-as-a-special-case-of-streaming-and-alibabas-contribution-of-blink/index.html
index b8f7b42f4..187529c25 100644
--- a/content/2019/02/13/batch-as-a-special-case-of-streaming-and-alibabas-contribution-of-blink/index.html
+++ b/content/2019/02/13/batch-as-a-special-case-of-streaming-and-alibabas-contribution-of-blink/index.html
@@ -28,7 +28,7 @@ A Unified Approach to Batch and Streaming # Since its early days, Apache Flink h
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/02/15/apache-flink-1.7.2-released/index.html b/content/2019/02/15/apache-flink-1.7.2-released/index.html
index 50ca1ee6b..a21e05ada 100644
--- a/content/2019/02/15/apache-flink-1.7.2-released/index.html
+++ b/content/2019/02/15/apache-flink-1.7.2-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/02/21/monitoring-apache-flink-applications-101/index.html b/content/2019/02/21/monitoring-apache-flink-applications-101/index.html
index 69d5c7fea..1241ad91a 100644
--- a/content/2019/02/21/monitoring-apache-flink-applications-101/index.html
+++ b/content/2019/02/21/monitoring-apache-flink-applications-101/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/02/25/apache-flink-1.6.4-released/index.html b/content/2019/02/25/apache-flink-1.6.4-released/index.html
index 23542104d..8621ba34f 100644
--- a/content/2019/02/25/apache-flink-1.6.4-released/index.html
+++ b/content/2019/02/25/apache-flink-1.6.4-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/03/06/what-to-expect-from-flink-forward-san-francisco-2019/index.html b/content/2019/03/06/what-to-expect-from-flink-forward-san-francisco-2019/index.html
index 08920dc7a..6734cdb75 100644
--- a/content/2019/03/06/what-to-expect-from-flink-forward-san-francisco-2019/index.html
+++ b/content/2019/03/06/what-to-expect-from-flink-forward-san-francisco-2019/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/03/11/flink-and-prometheus-cloud-native-monitoring-of-streaming-applications/index.html b/content/2019/03/11/flink-and-prometheus-cloud-native-monitoring-of-streaming-applications/index.html
index bb9950800..7c6660b02 100644
--- a/content/2019/03/11/flink-and-prometheus-cloud-native-monitoring-of-streaming-applications/index.html
+++ b/content/2019/03/11/flink-and-prometheus-cloud-native-monitoring-of-streaming-applications/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/04/09/apache-flink-1.8.0-release-announcement/index.html b/content/2019/04/09/apache-flink-1.8.0-release-announcement/index.html
index f1ae1dd9c..7bd0714fc 100644
--- a/content/2019/04/09/apache-flink-1.8.0-release-announcement/index.html
+++ b/content/2019/04/09/apache-flink-1.8.0-release-announcement/index.html
@@ -28,7 +28,7 @@ Flink 1.8.0 is API-compatible with previous 1.x.y releases for APIs annotated wi
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/04/17/apache-flinks-application-to-season-of-docs/index.html b/content/2019/04/17/apache-flinks-application-to-season-of-docs/index.html
index a2f2ede4c..95316c067 100644
--- a/content/2019/04/17/apache-flinks-application-to-season-of-docs/index.html
+++ b/content/2019/04/17/apache-flinks-application-to-season-of-docs/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/05/03/when-flink-pulsar-come-together/index.html b/content/2019/05/03/when-flink-pulsar-come-together/index.html
index 1b7fa62f4..dc8ca79b5 100644
--- a/content/2019/05/03/when-flink-pulsar-come-together/index.html
+++ b/content/2019/05/03/when-flink-pulsar-come-together/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/05/14/flux-capacitor-huh-temporal-tables-and-joins-in-streaming-sql/index.html b/content/2019/05/14/flux-capacitor-huh-temporal-tables-and-joins-in-streaming-sql/index.html
index 778fcde25..e697cc642 100644
--- a/content/2019/05/14/flux-capacitor-huh-temporal-tables-and-joins-in-streaming-sql/index.html
+++ b/content/2019/05/14/flux-capacitor-huh-temporal-tables-and-joins-in-streaming-sql/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/05/17/state-ttl-in-flink-1.8.0-how-to-automatically-cleanup-application-state-in-apache-flink/index.html b/content/2019/05/17/state-ttl-in-flink-1.8.0-how-to-automatically-cleanup-application-state-in-apache-flink/index.html
index c466c4e8c..aae5d7bea 100644
--- a/content/2019/05/17/state-ttl-in-flink-1.8.0-how-to-automatically-cleanup-application-state-in-apache-flink/index.html
+++ b/content/2019/05/17/state-ttl-in-flink-1.8.0-how-to-automatically-cleanup-application-state-in-apache-flink/index.html
@@ -28,7 +28,7 @@ In this post, we motivate the State TTL feature and discuss its use cases." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/06/05/a-deep-dive-into-flinks-network-stack/index.html b/content/2019/06/05/a-deep-dive-into-flinks-network-stack/index.html
index 77394f447..e40c643ce 100644
--- a/content/2019/06/05/a-deep-dive-into-flinks-network-stack/index.html
+++ b/content/2019/06/05/a-deep-dive-into-flinks-network-stack/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/06/26/a-practical-guide-to-broadcast-state-in-apache-flink/index.html b/content/2019/06/26/a-practical-guide-to-broadcast-state-in-apache-flink/index.html
index 817612ad9..9cbde4c1e 100644
--- a/content/2019/06/26/a-practical-guide-to-broadcast-state-in-apache-flink/index.html
+++ b/content/2019/06/26/a-practical-guide-to-broadcast-state-in-apache-flink/index.html
@@ -28,7 +28,7 @@ What is Broadcast State? # The Broadcast State can be used to combine and jointl
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/07/02/apache-flink-1.8.1-released/index.html b/content/2019/07/02/apache-flink-1.8.1-released/index.html
index 21d75acb4..3f8ea7eef 100644
--- a/content/2019/07/02/apache-flink-1.8.1-released/index.html
+++ b/content/2019/07/02/apache-flink-1.8.1-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/07/23/flink-network-stack-vol.-2-monitoring-metrics-and-that-backpressure-thing/index.html b/content/2019/07/23/flink-network-stack-vol.-2-monitoring-metrics-and-that-backpressure-thing/index.html
index 3d6e5556b..53be17b78 100644
--- a/content/2019/07/23/flink-network-stack-vol.-2-monitoring-metrics-and-that-backpressure-thing/index.html
+++ b/content/2019/07/23/flink-network-stack-vol.-2-monitoring-metrics-and-that-backpressure-thing/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/08/22/apache-flink-1.9.0-release-announcement/index.html b/content/2019/08/22/apache-flink-1.9.0-release-announcement/index.html
index 48e93a9c4..848fc2f68 100644
--- a/content/2019/08/22/apache-flink-1.9.0-release-announcement/index.html
+++ b/content/2019/08/22/apache-flink-1.9.0-release-announcement/index.html
@@ -28,7 +28,7 @@ The Apache Flink project&rsquo;s goal is to develop a stream processing system t
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/09/05/flink-community-update-september19/index.html b/content/2019/09/05/flink-community-update-september19/index.html
index 85cf0e659..f003c570c 100644
--- a/content/2019/09/05/flink-community-update-september19/index.html
+++ b/content/2019/09/05/flink-community-update-september19/index.html
@@ -28,7 +28,7 @@ The first post in the series takes you on an little detour across the year, to f
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/09/11/apache-flink-1.8.2-released/index.html b/content/2019/09/11/apache-flink-1.8.2-released/index.html
index a3bf994b2..ffdd5b322 100644
--- a/content/2019/09/11/apache-flink-1.8.2-released/index.html
+++ b/content/2019/09/11/apache-flink-1.8.2-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/09/13/the-state-processor-api-how-to-read-write-and-modify-the-state-of-flink-applications/index.html b/content/2019/09/13/the-state-processor-api-how-to-read-write-and-modify-the-state-of-flink-applications/index.html
index f7e2445e9..f04c77ab7 100644
--- a/content/2019/09/13/the-state-processor-api-how-to-read-write-and-modify-the-state-of-flink-applications/index.html
+++ b/content/2019/09/13/the-state-processor-api-how-to-read-write-and-modify-the-state-of-flink-applications/index.html
@@ -28,7 +28,7 @@ In this post, we explain why this feature is a big step for Flink, what you can
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/10/18/apache-flink-1.9.1-released/index.html b/content/2019/10/18/apache-flink-1.9.1-released/index.html
index 3a934125f..bab2f3494 100644
--- a/content/2019/10/18/apache-flink-1.9.1-released/index.html
+++ b/content/2019/10/18/apache-flink-1.9.1-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/11/06/running-apache-flink-on-kubernetes-with-kudo/index.html b/content/2019/11/06/running-apache-flink-on-kubernetes-with-kudo/index.html
index bc2af079d..bc88e82ff 100644
--- a/content/2019/11/06/running-apache-flink-on-kubernetes-with-kudo/index.html
+++ b/content/2019/11/06/running-apache-flink-on-kubernetes-with-kudo/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/11/25/how-to-query-pulsar-streams-using-apache-flink/index.html b/content/2019/11/25/how-to-query-pulsar-streams-using-apache-flink/index.html
index ffaedae75..dc6ab1f0e 100644
--- a/content/2019/11/25/how-to-query-pulsar-streams-using-apache-flink/index.html
+++ b/content/2019/11/25/how-to-query-pulsar-streams-using-apache-flink/index.html
@@ -28,7 +28,7 @@ A short intro to Apache Pulsar # Apache Pulsar is a flexible pub/sub messaging s
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2019/12/11/apache-flink-1.8.3-released/index.html b/content/2019/12/11/apache-flink-1.8.3-released/index.html
index 86cae9bec..5bdcc0e79 100644
--- a/content/2019/12/11/apache-flink-1.8.3-released/index.html
+++ b/content/2019/12/11/apache-flink-1.8.3-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/01/15/advanced-flink-application-patterns-vol.1-case-study-of-a-fraud-detection-system/index.html b/content/2020/01/15/advanced-flink-application-patterns-vol.1-case-study-of-a-fraud-detection-system/index.html
index 3e3d2cc1f..c6323bfdf 100644
--- a/content/2020/01/15/advanced-flink-application-patterns-vol.1-case-study-of-a-fraud-detection-system/index.html
+++ b/content/2020/01/15/advanced-flink-application-patterns-vol.1-case-study-of-a-fraud-detection-system/index.html
@@ -30,7 +30,7 @@ Dynamic updates of application logic allow Flink jobs to change at runtime, with
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink/index.html b/content/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink/index.html
index 71345cbfe..fd862bc21 100644
--- a/content/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink/index.html
+++ b/content/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink/index.html
@@ -28,7 +28,7 @@ In order to provide a state-of-the-art experience to Flink developers, the Apach
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/01/30/apache-flink-1.9.2-released/index.html b/content/2020/01/30/apache-flink-1.9.2-released/index.html
index c42d05824..b45fc10b2 100644
--- a/content/2020/01/30/apache-flink-1.9.2-released/index.html
+++ b/content/2020/01/30/apache-flink-1.9.2-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/02/03/a-guide-for-unit-testing-in-apache-flink/index.html b/content/2020/02/03/a-guide-for-unit-testing-in-apache-flink/index.html
index 71090bc98..780a387c6 100644
--- a/content/2020/02/03/a-guide-for-unit-testing-in-apache-flink/index.html
+++ b/content/2020/02/03/a-guide-for-unit-testing-in-apache-flink/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/02/11/apache-flink-1.10.0-release-announcement/index.html b/content/2020/02/11/apache-flink-1.10.0-release-announcement/index.html
index f34e26d2b..c9bbf3598 100644
--- a/content/2020/02/11/apache-flink-1.10.0-release-announcement/index.html
+++ b/content/2020/02/11/apache-flink-1.10.0-release-announcement/index.html
@@ -28,7 +28,7 @@ Flink 1.10 also marks the completion of the Blink integration, hardening streami
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/02/20/no-java-required-configuring-sources-and-sinks-in-sql/index.html b/content/2020/02/20/no-java-required-configuring-sources-and-sinks-in-sql/index.html
index 45e58c6fc..0cd0628eb 100644
--- a/content/2020/02/20/no-java-required-configuring-sources-and-sinks-in-sql/index.html
+++ b/content/2020/02/20/no-java-required-configuring-sources-and-sinks-in-sql/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/02/22/apache-beam-how-beam-runs-on-top-of-flink/index.html b/content/2020/02/22/apache-beam-how-beam-runs-on-top-of-flink/index.html
index 33051c23a..74837cee7 100644
--- a/content/2020/02/22/apache-beam-how-beam-runs-on-top-of-flink/index.html
+++ b/content/2020/02/22/apache-beam-how-beam-runs-on-top-of-flink/index.html
@@ -28,7 +28,7 @@ Apache Flink and Apache Beam are open-source frameworks for parallel, distribute
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/03/24/advanced-flink-application-patterns-vol.2-dynamic-updates-of-application-logic/index.html b/content/2020/03/24/advanced-flink-application-patterns-vol.2-dynamic-updates-of-application-logic/index.html
index cb1643631..288663e4f 100644
--- a/content/2020/03/24/advanced-flink-application-patterns-vol.2-dynamic-updates-of-application-logic/index.html
+++ b/content/2020/03/24/advanced-flink-application-patterns-vol.2-dynamic-updates-of-application-logic/index.html
@@ -28,7 +28,7 @@ We intentionally omitted details of how the applied rules are initialized and wh
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/03/27/flink-as-unified-engine-for-modern-data-warehousing-production-ready-hive-integration/index.html b/content/2020/03/27/flink-as-unified-engine-for-modern-data-warehousing-production-ready-hive-integration/index.html
index 01298d931..1973684bb 100644
--- a/content/2020/03/27/flink-as-unified-engine-for-modern-data-warehousing-production-ready-hive-integration/index.html
+++ b/content/2020/03/27/flink-as-unified-engine-for-modern-data-warehousing-production-ready-hive-integration/index.html
@@ -32,7 +32,7 @@ Firstly, today’s business is shifting to a more real-time fashion, and thus de
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/03/30/flink-community-update-april20/index.html b/content/2020/03/30/flink-community-update-april20/index.html
index c8aa84042..462ec70c6 100644
--- a/content/2020/03/30/flink-community-update-april20/index.html
+++ b/content/2020/03/30/flink-community-update-april20/index.html
@@ -28,7 +28,7 @@ And since now it&rsquo;s more important than ever to keep up the spirits, we’d
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/04/07/stateful-functions-2.0-an-event-driven-database-on-apache-flink/index.html b/content/2020/04/07/stateful-functions-2.0-an-event-driven-database-on-apache-flink/index.html
index 89c328db6..7ae708678 100644
--- a/content/2020/04/07/stateful-functions-2.0-an-event-driven-database-on-apache-flink/index.html
+++ b/content/2020/04/07/stateful-functions-2.0-an-event-driven-database-on-apache-flink/index.html
@@ -28,7 +28,7 @@ Stateful Functions 2.0 makes it possible to combine StateFun’s powerful approa
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/04/09/pyflink-introducing-python-support-for-udfs-in-flinks-table-api/index.html b/content/2020/04/09/pyflink-introducing-python-support-for-udfs-in-flinks-table-api/index.html
index 57beb4e74..7e8af3d28 100644
--- a/content/2020/04/09/pyflink-introducing-python-support-for-udfs-in-flinks-table-api/index.html
+++ b/content/2020/04/09/pyflink-introducing-python-support-for-udfs-in-flinks-table-api/index.html
@@ -28,7 +28,7 @@ In Flink 1.10, the community further extended the support for Python by adding P
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/04/15/flink-serialization-tuning-vol.-1-choosing-your-serializer-if-you-can/index.html b/content/2020/04/15/flink-serialization-tuning-vol.-1-choosing-your-serializer-if-you-can/index.html
index aa7abe5c1..f21a3f3a2 100644
--- a/content/2020/04/15/flink-serialization-tuning-vol.-1-choosing-your-serializer-if-you-can/index.html
+++ b/content/2020/04/15/flink-serialization-tuning-vol.-1-choosing-your-serializer-if-you-can/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/04/21/memory-management-improvements-with-apache-flink-1.10/index.html b/content/2020/04/21/memory-management-improvements-with-apache-flink-1.10/index.html
index f57948de6..2d8aee5e9 100644
--- a/content/2020/04/21/memory-management-improvements-with-apache-flink-1.10/index.html
+++ b/content/2020/04/21/memory-management-improvements-with-apache-flink-1.10/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/04/24/apache-flink-1.9.3-released/index.html b/content/2020/04/24/apache-flink-1.9.3-released/index.html
index 5f04f3bbf..01a4af774 100644
--- a/content/2020/04/24/apache-flink-1.9.3-released/index.html
+++ b/content/2020/04/24/apache-flink-1.9.3-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/05/04/applying-to-google-season-of-docs-2020/index.html b/content/2020/05/04/applying-to-google-season-of-docs-2020/index.html
index eb645a638..158f7e9fd 100644
--- a/content/2020/05/04/applying-to-google-season-of-docs-2020/index.html
+++ b/content/2020/05/04/applying-to-google-season-of-docs-2020/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/05/06/flink-community-update-may20/index.html b/content/2020/05/06/flink-community-update-may20/index.html
index 3039598ac..a49ab6b51 100644
--- a/content/2020/05/06/flink-community-update-may20/index.html
+++ b/content/2020/05/06/flink-community-update-may20/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/05/12/apache-flink-1.10.1-released/index.html b/content/2020/05/12/apache-flink-1.10.1-released/index.html
index cbb85709b..30ffca25b 100644
--- a/content/2020/05/12/apache-flink-1.10.1-released/index.html
+++ b/content/2020/05/12/apache-flink-1.10.1-released/index.html
@@ -32,7 +32,7 @@ Note FLINK-16684 changed the builders of the StreamingFileSink to make them comp
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/06/09/stateful-functions-2.1.0-release-announcement/index.html b/content/2020/06/09/stateful-functions-2.1.0-release-announcement/index.html
index 514e965d3..01f7f68cc 100644
--- a/content/2020/06/09/stateful-functions-2.1.0-release-announcement/index.html
+++ b/content/2020/06/09/stateful-functions-2.1.0-release-announcement/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/06/10/flink-community-update-june20/index.html b/content/2020/06/10/flink-community-update-june20/index.html
index d26105486..51c9e33a1 100644
--- a/content/2020/06/10/flink-community-update-june20/index.html
+++ b/content/2020/06/10/flink-community-update-june20/index.html
@@ -28,7 +28,7 @@ To top it off, a piece of good news: Flink Forward is back on October 19-22 as a
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/06/15/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-1/index.html b/content/2020/06/15/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-1/index.html
index 06232e534..d9db31bd9 100644
--- a/content/2020/06/15/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-1/index.html
+++ b/content/2020/06/15/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-1/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/06/23/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-2/index.html b/content/2020/06/23/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-2/index.html
index ce8dc8b10..94b427526 100644
--- a/content/2020/06/23/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-2/index.html
+++ b/content/2020/06/23/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-2/index.html
@@ -28,7 +28,7 @@ Streaming Data Visualization # With Zeppelin, you can build a real time streamin
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/07/06/apache-flink-1.11.0-release-announcement/index.html b/content/2020/07/06/apache-flink-1.11.0-release-announcement/index.html
index 0bc3cbdf5..e4669a4e1 100644
--- a/content/2020/07/06/apache-flink-1.11.0-release-announcement/index.html
+++ b/content/2020/07/06/apache-flink-1.11.0-release-announcement/index.html
@@ -28,7 +28,7 @@ The core engine is introducing unaligned checkpoints, a major change to Flink&rs
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/07/14/application-deployment-in-flink-current-state-and-the-new-application-mode/index.html b/content/2020/07/14/application-deployment-in-flink-current-state-and-the-new-application-mode/index.html
index ba47851de..de65da599 100644
--- a/content/2020/07/14/application-deployment-in-flink-current-state-and-the-new-application-mode/index.html
+++ b/content/2020/07/14/application-deployment-in-flink-current-state-and-the-new-application-mode/index.html
@@ -28,7 +28,7 @@ These platforms aim at simplifying application submission internally by lifting
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/07/21/apache-flink-1.11.1-released/index.html b/content/2020/07/21/apache-flink-1.11.1-released/index.html
index 2ea5d05ab..53eea10c6 100644
--- a/content/2020/07/21/apache-flink-1.11.1-released/index.html
+++ b/content/2020/07/21/apache-flink-1.11.1-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/07/23/sharing-is-caring-catalogs-in-flink-sql/index.html b/content/2020/07/23/sharing-is-caring-catalogs-in-flink-sql/index.html
index b9b33c399..ec7eaa046 100644
--- a/content/2020/07/23/sharing-is-caring-catalogs-in-flink-sql/index.html
+++ b/content/2020/07/23/sharing-is-caring-catalogs-in-flink-sql/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/07/28/flink-sql-demo-building-an-end-to-end-streaming-application/index.html b/content/2020/07/28/flink-sql-demo-building-an-end-to-end-streaming-application/index.html
index a1803c915..f7f6a246e 100644
--- a/content/2020/07/28/flink-sql-demo-building-an-end-to-end-streaming-application/index.html
+++ b/content/2020/07/28/flink-sql-demo-building-an-end-to-end-streaming-application/index.html
@@ -28,7 +28,7 @@ In the following sections, we describe how to integrate Kafka, MySQL, Elasticsea
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/07/29/flink-community-update-july20/index.html b/content/2020/07/29/flink-community-update-july20/index.html
index c2e2d9d35..b7cf2e17e 100644
--- a/content/2020/07/29/flink-community-update-july20/index.html
+++ b/content/2020/07/29/flink-community-update-july20/index.html
@@ -30,7 +30,7 @@ The Past Month in Flink # Flink Releases # Flink 1.11 # A couple of weeks ago, F
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/07/30/advanced-flink-application-patterns-vol.3-custom-window-processing/index.html b/content/2020/07/30/advanced-flink-application-patterns-vol.3-custom-window-processing/index.html
index bac22702e..417e61aca 100644
--- a/content/2020/07/30/advanced-flink-application-patterns-vol.3-custom-window-processing/index.html
+++ b/content/2020/07/30/advanced-flink-application-patterns-vol.3-custom-window-processing/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/08/04/pyflink-the-integration-of-pandas-into-pyflink/index.html b/content/2020/08/04/pyflink-the-integration-of-pandas-into-pyflink/index.html
index 1ed7101b1..38f7f42dc 100644
--- a/content/2020/08/04/pyflink-the-integration-of-pandas-into-pyflink/index.html
+++ b/content/2020/08/04/pyflink-the-integration-of-pandas-into-pyflink/index.html
@@ -28,7 +28,7 @@ Pic source: VanderPlas 2017, slide 52." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/08/06/accelerating-your-workload-with-gpu-and-other-external-resources/index.html b/content/2020/08/06/accelerating-your-workload-with-gpu-and-other-external-resources/index.html
index 48bf9403e..d69e728c2 100644
--- a/content/2020/08/06/accelerating-your-workload-with-gpu-and-other-external-resources/index.html
+++ b/content/2020/08/06/accelerating-your-workload-with-gpu-and-other-external-resources/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/08/18/monitoring-and-controlling-networks-of-iot-devices-with-flink-stateful-functions/index.html b/content/2020/08/18/monitoring-and-controlling-networks-of-iot-devices-with-flink-stateful-functions/index.html
index a2a504d27..9acdc8b56 100644
--- a/content/2020/08/18/monitoring-and-controlling-networks-of-iot-devices-with-flink-stateful-functions/index.html
+++ b/content/2020/08/18/monitoring-and-controlling-networks-of-iot-devices-with-flink-stateful-functions/index.html
@@ -28,7 +28,7 @@ IoT networks are composed of many individual, but interconnected components, whi
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/08/20/the-state-of-flink-on-docker/index.html b/content/2020/08/20/the-state-of-flink-on-docker/index.html
index db27541c7..51302e378 100644
--- a/content/2020/08/20/the-state-of-flink-on-docker/index.html
+++ b/content/2020/08/20/the-state-of-flink-on-docker/index.html
@@ -32,7 +32,7 @@ Reduce confusion: Flink used to have 2 Dockerfiles and a 3rd file maintained out
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/08/25/apache-flink-1.10.2-released/index.html b/content/2020/08/25/apache-flink-1.10.2-released/index.html
index 1c82d12bb..bf89c8b24 100644
--- a/content/2020/08/25/apache-flink-1.10.2-released/index.html
+++ b/content/2020/08/25/apache-flink-1.10.2-released/index.html
@@ -32,7 +32,7 @@ Note After FLINK-18242, the deprecated `OptionsFactory` and `ConfigurableOptions
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/09/01/memory-management-improvements-for-flinks-jobmanager-in-apache-flink-1.11/index.html b/content/2020/09/01/memory-management-improvements-for-flinks-jobmanager-in-apache-flink-1.11/index.html
index 6f4d6b8d3..b737e6087 100644
--- a/content/2020/09/01/memory-management-improvements-for-flinks-jobmanager-in-apache-flink-1.11/index.html
+++ b/content/2020/09/01/memory-management-improvements-for-flinks-jobmanager-in-apache-flink-1.11/index.html
@@ -28,7 +28,7 @@ The previous blog post focused on the memory model of the TaskManagers and how i
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/09/04/flink-community-update-august20/index.html b/content/2020/09/04/flink-community-update-august20/index.html
index f7907351d..83e380d3b 100644
--- a/content/2020/09/04/flink-community-update-august20/index.html
+++ b/content/2020/09/04/flink-community-update-august20/index.html
@@ -28,7 +28,7 @@ The Past Month in Flink # Flink Releases # Getting Ready for Flink Stateful Func
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/09/17/apache-flink-1.11.2-released/index.html b/content/2020/09/17/apache-flink-1.11.2-released/index.html
index 21037ab60..f66439c6b 100644
--- a/content/2020/09/17/apache-flink-1.11.2-released/index.html
+++ b/content/2020/09/17/apache-flink-1.11.2-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/09/28/stateful-functions-2.2.0-release-announcement/index.html b/content/2020/09/28/stateful-functions-2.2.0-release-announcement/index.html
index c543e348b..04df00407 100644
--- a/content/2020/09/28/stateful-functions-2.2.0-release-announcement/index.html
+++ b/content/2020/09/28/stateful-functions-2.2.0-release-announcement/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/10/13/stateful-functions-internals-behind-the-scenes-of-stateful-serverless/index.html b/content/2020/10/13/stateful-functions-internals-behind-the-scenes-of-stateful-serverless/index.html
index 46f117a3f..9d6ce1598 100644
--- a/content/2020/10/13/stateful-functions-internals-behind-the-scenes-of-stateful-serverless/index.html
+++ b/content/2020/10/13/stateful-functions-internals-behind-the-scenes-of-stateful-serverless/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/10/15/from-aligned-to-unaligned-checkpoints-part-1-checkpoints-alignment-and-backpressure/index.html b/content/2020/10/15/from-aligned-to-unaligned-checkpoints-part-1-checkpoints-alignment-and-backpressure/index.html
index 9db2dc6bb..81a47e8d4 100644
--- a/content/2020/10/15/from-aligned-to-unaligned-checkpoints-part-1-checkpoints-alignment-and-backpressure/index.html
+++ b/content/2020/10/15/from-aligned-to-unaligned-checkpoints-part-1-checkpoints-alignment-and-backpressure/index.html
@@ -28,7 +28,7 @@ Despite all these great properties, Flink&rsquo;s checkpointing method has an Ac
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/11/11/stateful-functions-2.2.1-release-announcement/index.html b/content/2020/11/11/stateful-functions-2.2.1-release-announcement/index.html
index fec5ab02e..437ddcee0 100644
--- a/content/2020/11/11/stateful-functions-2.2.1-release-announcement/index.html
+++ b/content/2020/11/11/stateful-functions-2.2.1-release-announcement/index.html
@@ -30,7 +30,7 @@ We strongly recommend all users to upgrade to 2." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/12/02/improvements-in-task-scheduling-for-batch-workloads-in-apache-flink-1.12/index.html b/content/2020/12/02/improvements-in-task-scheduling-for-batch-workloads-in-apache-flink-1.12/index.html
index 5799030b9..3f411103d 100644
--- a/content/2020/12/02/improvements-in-task-scheduling-for-batch-workloads-in-apache-flink-1.12/index.html
+++ b/content/2020/12/02/improvements-in-task-scheduling-for-batch-workloads-in-apache-flink-1.12/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/12/10/apache-flink-1.12.0-release-announcement/index.html b/content/2020/12/10/apache-flink-1.12.0-release-announcement/index.html
index 1a2ce36fb..1b735cf74 100644
--- a/content/2020/12/10/apache-flink-1.12.0-release-announcement/index.html
+++ b/content/2020/12/10/apache-flink-1.12.0-release-announcement/index.html
@@ -30,7 +30,7 @@ The community has added support for efficient batch execution in the DataStream
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2020/12/18/apache-flink-1.11.3-released/index.html b/content/2020/12/18/apache-flink-1.11.3-released/index.html
index 762f3a3ee..ccb11dc5a 100644
--- a/content/2020/12/18/apache-flink-1.11.3-released/index.html
+++ b/content/2020/12/18/apache-flink-1.11.3-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/01/02/stateful-functions-2.2.2-release-announcement/index.html b/content/2021/01/02/stateful-functions-2.2.2-release-announcement/index.html
index 8681500f9..ec1abf831 100644
--- a/content/2021/01/02/stateful-functions-2.2.2-release-announcement/index.html
+++ b/content/2021/01/02/stateful-functions-2.2.2-release-announcement/index.html
@@ -28,7 +28,7 @@ The most important change of this bugfix release is upgrading Apache Flink to ve
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/01/07/whats-new-in-the-pulsar-flink-connector-2.7.0/index.html b/content/2021/01/07/whats-new-in-the-pulsar-flink-connector-2.7.0/index.html
index 793ff96b8..f3cd30a49 100644
--- a/content/2021/01/07/whats-new-in-the-pulsar-flink-connector-2.7.0/index.html
+++ b/content/2021/01/07/whats-new-in-the-pulsar-flink-connector-2.7.0/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/01/11/exploring-fine-grained-recovery-of-bounded-data-sets-on-flink/index.html b/content/2021/01/11/exploring-fine-grained-recovery-of-bounded-data-sets-on-flink/index.html
index c2b1b7bba..1c18119bb 100644
--- a/content/2021/01/11/exploring-fine-grained-recovery-of-bounded-data-sets-on-flink/index.html
+++ b/content/2021/01/11/exploring-fine-grained-recovery-of-bounded-data-sets-on-flink/index.html
@@ -28,7 +28,7 @@ Processing efficiency is not the only parameter users of data processing systems
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/01/18/using-rocksdb-state-backend-in-apache-flink-when-and-how/index.html b/content/2021/01/18/using-rocksdb-state-backend-in-apache-flink-when-and-how/index.html
index 14733f814..c52b8b3b1 100644
--- a/content/2021/01/18/using-rocksdb-state-backend-in-apache-flink-when-and-how/index.html
+++ b/content/2021/01/18/using-rocksdb-state-backend-in-apache-flink-when-and-how/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/01/19/apache-flink-1.12.1-released/index.html b/content/2021/01/19/apache-flink-1.12.1-released/index.html
index f25afb9ed..4c2c66c2e 100644
--- a/content/2021/01/19/apache-flink-1.12.1-released/index.html
+++ b/content/2021/01/19/apache-flink-1.12.1-released/index.html
@@ -32,7 +32,7 @@ Attention: Using unaligned checkpoints in Flink 1.12.0 combined with two/multipl
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/01/29/apache-flink-1.10.3-released/index.html b/content/2021/01/29/apache-flink-1.10.3-released/index.html
index 0231d193e..76d1a2140 100644
--- a/content/2021/01/29/apache-flink-1.10.3-released/index.html
+++ b/content/2021/01/29/apache-flink-1.10.3-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/02/10/how-to-natively-deploy-flink-on-kubernetes-with-high-availability-ha/index.html b/content/2021/02/10/how-to-natively-deploy-flink-on-kubernetes-with-high-availability-ha/index.html
index fbdd25710..1f211400d 100644
--- a/content/2021/02/10/how-to-natively-deploy-flink-on-kubernetes-with-high-availability-ha/index.html
+++ b/content/2021/02/10/how-to-natively-deploy-flink-on-kubernetes-with-high-availability-ha/index.html
@@ -28,7 +28,7 @@ From release to release, the Flink community has made significant progress in in
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/03/03/apache-flink-1.12.2-released/index.html b/content/2021/03/03/apache-flink-1.12.2-released/index.html
index 72328735e..3d7166204 100644
--- a/content/2021/03/03/apache-flink-1.12.2-released/index.html
+++ b/content/2021/03/03/apache-flink-1.12.2-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/03/11/a-rundown-of-batch-execution-mode-in-the-datastream-api/index.html b/content/2021/03/11/a-rundown-of-batch-execution-mode-in-the-datastream-api/index.html
index f93fc3573..1d1ba668a 100644
--- a/content/2021/03/11/a-rundown-of-batch-execution-mode-in-the-datastream-api/index.html
+++ b/content/2021/03/11/a-rundown-of-batch-execution-mode-in-the-datastream-api/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/04/15/stateful-functions-3.0.0-remote-functions-front-and-center/index.html b/content/2021/04/15/stateful-functions-3.0.0-remote-functions-front-and-center/index.html
index a599d191c..d5c48af50 100644
--- a/content/2021/04/15/stateful-functions-3.0.0-remote-functions-front-and-center/index.html
+++ b/content/2021/04/15/stateful-functions-3.0.0-remote-functions-front-and-center/index.html
@@ -28,7 +28,7 @@ This new release brings remote functions to the front and center of StateFun, ma
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/04/29/apache-flink-1.12.3-released/index.html b/content/2021/04/29/apache-flink-1.12.3-released/index.html
index e9f769b85..423ac74ef 100644
--- a/content/2021/04/29/apache-flink-1.12.3-released/index.html
+++ b/content/2021/04/29/apache-flink-1.12.3-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/05/03/apache-flink-1.13.0-release-announcement/index.html b/content/2021/05/03/apache-flink-1.13.0-release-announcement/index.html
index f6b742d8b..c35cbe891 100644
--- a/content/2021/05/03/apache-flink-1.13.0-release-announcement/index.html
+++ b/content/2021/05/03/apache-flink-1.13.0-release-announcement/index.html
@@ -28,7 +28,7 @@ The release brings us a big step forward in one of our major efforts: Making Str
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/05/06/scaling-flink-automatically-with-reactive-mode/index.html b/content/2021/05/06/scaling-flink-automatically-with-reactive-mode/index.html
index be0e4a3af..e564dcedc 100644
--- a/content/2021/05/06/scaling-flink-automatically-with-reactive-mode/index.html
+++ b/content/2021/05/06/scaling-flink-automatically-with-reactive-mode/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/05/21/apache-flink-1.12.4-released/index.html b/content/2021/05/21/apache-flink-1.12.4-released/index.html
index e008ea758..90090bb8e 100644
--- a/content/2021/05/21/apache-flink-1.12.4-released/index.html
+++ b/content/2021/05/21/apache-flink-1.12.4-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/05/28/apache-flink-1.13.1-released/index.html b/content/2021/05/28/apache-flink-1.13.1-released/index.html
index af2376aa7..0ac71f3a1 100644
--- a/content/2021/05/28/apache-flink-1.13.1-released/index.html
+++ b/content/2021/05/28/apache-flink-1.13.1-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/07/07/how-to-identify-the-source-of-backpressure/index.html b/content/2021/07/07/how-to-identify-the-source-of-backpressure/index.html
index 68bb6ede6..903b78172 100644
--- a/content/2021/07/07/how-to-identify-the-source-of-backpressure/index.html
+++ b/content/2021/07/07/how-to-identify-the-source-of-backpressure/index.html
@@ -28,7 +28,7 @@ The backpressure topic was tackled from different angles over the last couple of
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/08/06/apache-flink-1.12.5-released/index.html b/content/2021/08/06/apache-flink-1.12.5-released/index.html
index 9e3c1670d..4cdbe017b 100644
--- a/content/2021/08/06/apache-flink-1.12.5-released/index.html
+++ b/content/2021/08/06/apache-flink-1.12.5-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/08/06/apache-flink-1.13.2-released/index.html b/content/2021/08/06/apache-flink-1.13.2-released/index.html
index 11bebbe84..4eb0bfe43 100644
--- a/content/2021/08/06/apache-flink-1.13.2-released/index.html
+++ b/content/2021/08/06/apache-flink-1.13.2-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/08/09/apache-flink-1.11.4-released/index.html b/content/2021/08/09/apache-flink-1.11.4-released/index.html
index 0796f7bdc..625ab5321 100644
--- a/content/2021/08/09/apache-flink-1.11.4-released/index.html
+++ b/content/2021/08/09/apache-flink-1.11.4-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/08/31/help-us-stabilize-apache-flink-1.14.0-rc0/index.html b/content/2021/08/31/help-us-stabilize-apache-flink-1.14.0-rc0/index.html
index 2f9958f84..b79bd8eeb 100644
--- a/content/2021/08/31/help-us-stabilize-apache-flink-1.14.0-rc0/index.html
+++ b/content/2021/08/31/help-us-stabilize-apache-flink-1.14.0-rc0/index.html
@@ -30,7 +30,7 @@ A lot of features and fixes went into this release, including improvements to th
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/08/31/stateful-functions-3.1.0-release-announcement/index.html b/content/2021/08/31/stateful-functions-3.1.0-release-announcement/index.html
index ea8ee2504..6313e2161 100644
--- a/content/2021/08/31/stateful-functions-3.1.0-release-announcement/index.html
+++ b/content/2021/08/31/stateful-functions-3.1.0-release-announcement/index.html
@@ -28,7 +28,7 @@ The binary distribution and source artifacts are now available on the updated Do
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-one/index.html b/content/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-one/index.html
index fa5eca898..4925c97c3 100644
--- a/content/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-one/index.html
+++ b/content/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-one/index.html
@@ -28,7 +28,7 @@ Introduction # Apache Flink is a data processing engine that aims to keep state
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-two/index.html b/content/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-two/index.html
index cda3c5153..9e2e5ebe8 100644
--- a/content/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-two/index.html
+++ b/content/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-two/index.html
@@ -30,7 +30,7 @@ integrate a source connector which connects to a mailbox using the IMAP protocol
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/09/29/apache-flink-1.14.0-release-announcement/index.html b/content/2021/09/29/apache-flink-1.14.0-release-announcement/index.html
index 6b5be1e91..125f2907f 100644
--- a/content/2021/09/29/apache-flink-1.14.0-release-announcement/index.html
+++ b/content/2021/09/29/apache-flink-1.14.0-release-announcement/index.html
@@ -28,7 +28,7 @@ This release brings many new features and improvements in areas such as the SQL
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/10/19/apache-flink-1.13.3-released/index.html b/content/2021/10/19/apache-flink-1.13.3-released/index.html
index 42b240311..a94acf17f 100644
--- a/content/2021/10/19/apache-flink-1.13.3-released/index.html
+++ b/content/2021/10/19/apache-flink-1.13.3-released/index.html
@@ -34,7 +34,7 @@ Updated Maven dependencies:
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-one/index.html b/content/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-one/index.html
index 22d86adc4..47d01c08b 100644
--- a/content/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-one/index.html
+++ b/content/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-one/index.html
@@ -28,7 +28,7 @@ How data gets passed around between operators # Data shuffling is an important s
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-two/index.html b/content/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-two/index.html
index ab8e8a9a3..7f9728fb8 100644
--- a/content/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-two/index.html
+++ b/content/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-two/index.html
@@ -28,7 +28,7 @@ Like sort-merge shuffle implemented by other distributed data processing framewo
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/11/03/flink-backward-the-apache-flink-retrospective/index.html b/content/2021/11/03/flink-backward-the-apache-flink-retrospective/index.html
index f07449a41..7121d8a32 100644
--- a/content/2021/11/03/flink-backward-the-apache-flink-retrospective/index.html
+++ b/content/2021/11/03/flink-backward-the-apache-flink-retrospective/index.html
@@ -28,7 +28,7 @@ A retrospective on the release cycle # From the team, we collected emotions that
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/12/10/advise-on-apache-log4j-zero-day-cve-2021-44228/index.html b/content/2021/12/10/advise-on-apache-log4j-zero-day-cve-2021-44228/index.html
index 27b2f0424..8a638880e 100644
--- a/content/2021/12/10/advise-on-apache-log4j-zero-day-cve-2021-44228/index.html
+++ b/content/2021/12/10/advise-on-apache-log4j-zero-day-cve-2021-44228/index.html
@@ -30,7 +30,7 @@ env.java.opts: -Dlog4j2.formatMsgNoLookups=true If you are already setting env."
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/12/16/apache-flink-log4j-emergency-releases/index.html b/content/2021/12/16/apache-flink-log4j-emergency-releases/index.html
index ec4aa9304..6202c320d 100644
--- a/content/2021/12/16/apache-flink-log4j-emergency-releases/index.html
+++ b/content/2021/12/16/apache-flink-log4j-emergency-releases/index.html
@@ -34,7 +34,7 @@ We are publishing this announcement earlier than usual to give users access to t
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -252,7 +252,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2021/12/22/apache-flink-statefun-log4j-emergency-release/index.html b/content/2021/12/22/apache-flink-statefun-log4j-emergency-release/index.html
index c75a62164..0d07b7b55 100644
--- a/content/2021/12/22/apache-flink-statefun-log4j-emergency-release/index.html
+++ b/content/2021/12/22/apache-flink-statefun-log4j-emergency-release/index.html
@@ -32,7 +32,7 @@ You can find the source and binaries on the updated Downloads page, and Docker i
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-one/index.html b/content/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-one/index.html
index 4264ebd00..c7bd0150e 100644
--- a/content/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-one/index.html
+++ b/content/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-one/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-two/index.html b/content/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-two/index.html
index 58796e41f..caa438f63 100644
--- a/content/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-two/index.html
+++ b/content/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-two/index.html
@@ -28,7 +28,7 @@ Reducing complexity with groups # A distribution pattern describes how consumer
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/01/07/apache-flink-ml-2.0.0-release-announcement/index.html b/content/2022/01/07/apache-flink-ml-2.0.0-release-announcement/index.html
index ba5ed2b15..70acdc368 100644
--- a/content/2022/01/07/apache-flink-ml-2.0.0-release-announcement/index.html
+++ b/content/2022/01/07/apache-flink-ml-2.0.0-release-announcement/index.html
@@ -28,7 +28,7 @@ This release involves a major refactor of the earlier Flink ML library and intro
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/01/17/apache-flink-1.14.3-release-announcement/index.html b/content/2022/01/17/apache-flink-1.14.3-release-announcement/index.html
index ebbe3afae..4511ab4f7 100644
--- a/content/2022/01/17/apache-flink-1.14.3-release-announcement/index.html
+++ b/content/2022/01/17/apache-flink-1.14.3-release-announcement/index.html
@@ -28,7 +28,7 @@ This release includes 164 fixes and minor improvements for Flink 1." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/01/20/pravega-flink-connector-101/index.html b/content/2022/01/20/pravega-flink-connector-101/index.html
index 73d55666f..092a98e6f 100644
--- a/content/2022/01/20/pravega-flink-connector-101/index.html
+++ b/content/2022/01/20/pravega-flink-connector-101/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/01/31/stateful-functions-3.2.0-release-announcement/index.html b/content/2022/01/31/stateful-functions-3.2.0-release-announcement/index.html
index a7fe82058..57b55b08e 100644
--- a/content/2022/01/31/stateful-functions-3.2.0-release-announcement/index.html
+++ b/content/2022/01/31/stateful-functions-3.2.0-release-announcement/index.html
@@ -28,7 +28,7 @@ The binary distribution and source artifacts are now available on the updated Do
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/02/18/apache-flink-1.13.6-release-announcement/index.html b/content/2022/02/18/apache-flink-1.13.6-release-announcement/index.html
index 176917bdc..ad734b2c6 100644
--- a/content/2022/02/18/apache-flink-1.13.6-release-announcement/index.html
+++ b/content/2022/02/18/apache-flink-1.13.6-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users to upgrade to Flink 1." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/02/22/scala-free-in-one-fifteen/index.html b/content/2022/02/22/scala-free-in-one-fifteen/index.html
index 8fa31c673..7e85a6631 100644
--- a/content/2022/02/22/scala-free-in-one-fifteen/index.html
+++ b/content/2022/02/22/scala-free-in-one-fifteen/index.html
@@ -30,7 +30,7 @@ TLDR: All Scala dependencies are now isolated to the flink-scala jar." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/03/11/apache-flink-1.14.4-release-announcement/index.html b/content/2022/03/11/apache-flink-1.14.4-release-announcement/index.html
index 303b953b1..5b138033a 100644
--- a/content/2022/03/11/apache-flink-1.14.4-release-announcement/index.html
+++ b/content/2022/03/11/apache-flink-1.14.4-release-announcement/index.html
@@ -32,7 +32,7 @@ Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org."
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/03/16/the-generic-asynchronous-base-sink/index.html b/content/2022/03/16/the-generic-asynchronous-base-sink/index.html
index cf4337a86..90e703eef 100644
--- a/content/2022/03/16/the-generic-asynchronous-base-sink/index.html
+++ b/content/2022/03/16/the-generic-asynchronous-base-sink/index.html
@@ -30,7 +30,7 @@ This is a base implementation for asynchronous sinks, which you should use whene
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/04/03/apache-flink-kubernetes-operator-0.1.0-release-announcement/index.html b/content/2022/04/03/apache-flink-kubernetes-operator-0.1.0-release-announcement/index.html
index 2ab0196b1..cf4db2eac 100644
--- a/content/2022/04/03/apache-flink-kubernetes-operator-0.1.0-release-announcement/index.html
+++ b/content/2022/04/03/apache-flink-kubernetes-operator-0.1.0-release-announcement/index.html
@@ -30,7 +30,7 @@ The operator takes care of submitting, savepointing, upgrading and generally man
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/05/05/announcing-the-release-of-apache-flink-1.15/index.html b/content/2022/05/05/announcing-the-release-of-apache-flink-1.15/index.html
index 715fbc8c7..fa80dce06 100644
--- a/content/2022/05/05/announcing-the-release-of-apache-flink-1.15/index.html
+++ b/content/2022/05/05/announcing-the-release-of-apache-flink-1.15/index.html
@@ -28,7 +28,7 @@ One of the main concepts that makes Apache Flink stand out is the unification of
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/05/06/exploring-the-thread-mode-in-pyflink/index.html b/content/2022/05/06/exploring-the-thread-mode-in-pyflink/index.html
index 6182157b5..95c708ce6 100644
--- a/content/2022/05/06/exploring-the-thread-mode-in-pyflink/index.html
+++ b/content/2022/05/06/exploring-the-thread-mode-in-pyflink/index.html
@@ -28,7 +28,7 @@ Before Flink 1.15, Python user-defined functions will be executed in separate Py
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/05/06/improvements-to-flink-operations-snapshots-ownership-and-savepoint-formats/index.html b/content/2022/05/06/improvements-to-flink-operations-snapshots-ownership-and-savepoint-formats/index.html
index 752879d3f..3c024de2f 100644
--- a/content/2022/05/06/improvements-to-flink-operations-snapshots-ownership-and-savepoint-formats/index.html
+++ b/content/2022/05/06/improvements-to-flink-operations-snapshots-ownership-and-savepoint-formats/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/05/11/apache-flink-table-store-0.1.0-release-announcement/index.html b/content/2022/05/11/apache-flink-table-store-0.1.0-release-announcement/index.html
index dd50d36c1..63975e16c 100644
--- a/content/2022/05/11/apache-flink-table-store-0.1.0-release-announcement/index.html
+++ b/content/2022/05/11/apache-flink-table-store-0.1.0-release-announcement/index.html
@@ -32,7 +32,7 @@ What is Flink Table Store # In the past years, thanks to our numerous contributo
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/05/18/getting-into-low-latency-gears-with-apache-flink-part-one/index.html b/content/2022/05/18/getting-into-low-latency-gears-with-apache-flink-part-one/index.html
index 8d9984839..47c14e684 100644
--- a/content/2022/05/18/getting-into-low-latency-gears-with-apache-flink-part-one/index.html
+++ b/content/2022/05/18/getting-into-low-latency-gears-with-apache-flink-part-one/index.html
@@ -28,7 +28,7 @@ In this multi-part series, we will present a collection of low-latency technique
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/05/23/getting-into-low-latency-gears-with-apache-flink-part-two/index.html b/content/2022/05/23/getting-into-low-latency-gears-with-apache-flink-part-two/index.html
index 95c740129..4ed5ccd43 100644
--- a/content/2022/05/23/getting-into-low-latency-gears-with-apache-flink-part-two/index.html
+++ b/content/2022/05/23/getting-into-low-latency-gears-with-apache-flink-part-two/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/05/30/improving-speed-and-stability-of-checkpointing-with-generic-log-based-incremental-checkpoints/index.html b/content/2022/05/30/improving-speed-and-stability-of-checkpointing-with-generic-log-based-incremental-checkpoints/index.html
index a424feeda..81c83ee0e 100644
--- a/content/2022/05/30/improving-speed-and-stability-of-checkpointing-with-generic-log-based-incremental-checkpoints/index.html
+++ b/content/2022/05/30/improving-speed-and-stability-of-checkpointing-with-generic-log-based-incremental-checkpoints/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/06/05/apache-flink-kubernetes-operator-1.0.0-release-announcement/index.html b/content/2022/06/05/apache-flink-kubernetes-operator-1.0.0-release-announcement/index.html
index dc36e792e..103f5c031 100644
--- a/content/2022/06/05/apache-flink-kubernetes-operator-1.0.0-release-announcement/index.html
+++ b/content/2022/06/05/apache-flink-kubernetes-operator-1.0.0-release-announcement/index.html
@@ -30,7 +30,7 @@ New v1beta1 API version &amp; compatibility guarantees Session Job Management su
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/06/17/adaptive-batch-scheduler-automatically-decide-parallelism-of-flink-batch-jobs/index.html b/content/2022/06/17/adaptive-batch-scheduler-automatically-decide-parallelism-of-flink-batch-jobs/index.html
index ad35cd2be..06f4610e4 100644
--- a/content/2022/06/17/adaptive-batch-scheduler-automatically-decide-parallelism-of-flink-batch-jobs/index.html
+++ b/content/2022/06/17/adaptive-batch-scheduler-automatically-decide-parallelism-of-flink-batch-jobs/index.html
@@ -28,7 +28,7 @@ To decide a proper parallelism, one needs to know how much data each operator ne
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/06/22/apache-flink-1.14.5-release-announcement/index.html b/content/2022/06/22/apache-flink-1.14.5-release-announcement/index.html
index 501b2b434..7806d71a2 100644
--- a/content/2022/06/22/apache-flink-1.14.5-release-announcement/index.html
+++ b/content/2022/06/22/apache-flink-1.14.5-release-announcement/index.html
@@ -32,7 +32,7 @@ Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org."
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/07/06/apache-flink-1.15.1-release-announcement/index.html b/content/2022/07/06/apache-flink-1.15.1-release-announcement/index.html
index 38f46ede5..01eff8b9a 100644
--- a/content/2022/07/06/apache-flink-1.15.1-release-announcement/index.html
+++ b/content/2022/07/06/apache-flink-1.15.1-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 1.15.1." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-one/index.html b/content/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-one/index.html
index caf175539..b5d92390b 100644
--- a/content/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-one/index.html
+++ b/content/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-one/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-two/index.html b/content/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-two/index.html
index d63e3eb6d..354707c99 100644
--- a/content/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-two/index.html
+++ b/content/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-two/index.html
@@ -28,7 +28,7 @@ Implementation of support Checkpointing with Finished Tasks # As described in pa
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/07/12/apache-flink-ml-2.1.0-release-announcement/index.html b/content/2022/07/12/apache-flink-ml-2.1.0-release-announcement/index.html
index f833baf79..7089ba2fd 100644
--- a/content/2022/07/12/apache-flink-ml-2.1.0-release-announcement/index.html
+++ b/content/2022/07/12/apache-flink-ml-2.1.0-release-announcement/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/07/25/apache-flink-kubernetes-operator-1.1.0-release-announcement/index.html b/content/2022/07/25/apache-flink-kubernetes-operator-1.1.0-release-announcement/index.html
index c0a63707f..5703a1056 100644
--- a/content/2022/07/25/apache-flink-kubernetes-operator-1.1.0-release-announcement/index.html
+++ b/content/2022/07/25/apache-flink-kubernetes-operator-1.1.0-release-announcement/index.html
@@ -30,7 +30,7 @@ Release Highlights # A non-exhaustive list of some of the more exciting features
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/08/24/apache-flink-1.15.2-release-announcement/index.html b/content/2022/08/24/apache-flink-1.15.2-release-announcement/index.html
index 17912761d..d44385b4c 100644
--- a/content/2022/08/24/apache-flink-1.15.2-release-announcement/index.html
+++ b/content/2022/08/24/apache-flink-1.15.2-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 1.15.2." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/08/29/apache-flink-table-store-0.2.0-release-announcement/index.html b/content/2022/08/29/apache-flink-table-store-0.2.0-release-announcement/index.html
index 377446377..bf00f27c7 100644
--- a/content/2022/08/29/apache-flink-table-store-0.2.0-release-announcement/index.html
+++ b/content/2022/08/29/apache-flink-table-store-0.2.0-release-announcement/index.html
@@ -32,7 +32,7 @@ As a new type of updatable data lake, Flink Table Store has the following featur
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/09/08/regarding-akkas-licensing-change/index.html b/content/2022/09/08/regarding-akkas-licensing-change/index.html
index 429e359ae..c527f29c4 100644
--- a/content/2022/09/08/regarding-akkas-licensing-change/index.html
+++ b/content/2022/09/08/regarding-akkas-licensing-change/index.html
@@ -30,7 +30,7 @@ The purpose of this blogpost is to clarify our position on the matter." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/09/28/apache-flink-1.14.6-release-announcement/index.html b/content/2022/09/28/apache-flink-1.14.6-release-announcement/index.html
index ceec45849..4b2927bcb 100644
--- a/content/2022/09/28/apache-flink-1.14.6-release-announcement/index.html
+++ b/content/2022/09/28/apache-flink-1.14.6-release-announcement/index.html
@@ -32,7 +32,7 @@ Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org."
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/10/07/apache-flink-kubernetes-operator-1.2.0-release-announcement/index.html b/content/2022/10/07/apache-flink-kubernetes-operator-1.2.0-release-announcement/index.html
index bc01ee4ff..de12357f3 100644
--- a/content/2022/10/07/apache-flink-kubernetes-operator-1.2.0-release-announcement/index.html
+++ b/content/2022/10/07/apache-flink-kubernetes-operator-1.2.0-release-announcement/index.html
@@ -28,7 +28,7 @@ Release Highlights # Standalone deployment mode support Improved upgrade flow Re
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/10/13/apache-flink-table-store-0.2.1-release-announcement/index.html b/content/2022/10/13/apache-flink-table-store-0.2.1-release-announcement/index.html
index 0e3264d3e..0de37ed3e 100644
--- a/content/2022/10/13/apache-flink-table-store-0.2.1-release-announcement/index.html
+++ b/content/2022/10/13/apache-flink-table-store-0.2.1-release-announcement/index.html
@@ -32,7 +32,7 @@ Release Artifacts # Binaries # You can find the binaries on the updated Download
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/10/28/announcing-the-release-of-apache-flink-1.16/index.html b/content/2022/10/28/announcing-the-release-of-apache-flink-1.16/index.html
index 8dd155763..d1275bcd2 100644
--- a/content/2022/10/28/announcing-the-release-of-apache-flink-1.16/index.html
+++ b/content/2022/10/28/announcing-the-release-of-apache-flink-1.16/index.html
@@ -28,7 +28,7 @@ Flink has become the leading role and factual standard of stream processing, and
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/11/10/apache-flink-1.15.3-release-announcement/index.html b/content/2022/11/10/apache-flink-1.15.3-release-announcement/index.html
index c7be9bada..5d25268a3 100644
--- a/content/2022/11/10/apache-flink-1.15.3-release-announcement/index.html
+++ b/content/2022/11/10/apache-flink-1.15.3-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 1.15.3." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/11/25/optimising-the-throughput-of-async-sinks-using-a-custom-ratelimitingstrategy/index.html b/content/2022/11/25/optimising-the-throughput-of-async-sinks-using-a-custom-ratelimitingstrategy/index.html
index 4dc918cf3..8dc224048 100644
--- a/content/2022/11/25/optimising-the-throughput-of-async-sinks-using-a-custom-ratelimitingstrategy/index.html
+++ b/content/2022/11/25/optimising-the-throughput-of-async-sinks-using-a-custom-ratelimitingstrategy/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2022/12/14/apache-flink-kubernetes-operator-1.3.0-release-announcement/index.html b/content/2022/12/14/apache-flink-kubernetes-operator-1.3.0-release-announcement/index.html
index d577bb369..35aef4017 100644
--- a/content/2022/12/14/apache-flink-kubernetes-operator-1.3.0-release-announcement/index.html
+++ b/content/2022/12/14/apache-flink-kubernetes-operator-1.3.0-release-announcement/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/01/10/apache-flink-kubernetes-operator-1.3.1-release-announcement/index.html b/content/2023/01/10/apache-flink-kubernetes-operator-1.3.1-release-announcement/index.html
index f650de024..3a9d9c6d4 100644
--- a/content/2023/01/10/apache-flink-kubernetes-operator-1.3.1-release-announcement/index.html
+++ b/content/2023/01/10/apache-flink-kubernetes-operator-1.3.1-release-announcement/index.html
@@ -32,7 +32,7 @@ Release Notes # Bug # [FLINK-30329] - flink-kubernetes-operator helm chart does
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/01/13/apache-flink-table-store-0.3.0-release-announcement/index.html b/content/2023/01/13/apache-flink-table-store-0.3.0-release-announcement/index.html
index 40d683a02..42cf27547 100644
--- a/content/2023/01/13/apache-flink-table-store-0.3.0-release-announcement/index.html
+++ b/content/2023/01/13/apache-flink-table-store-0.3.0-release-announcement/index.html
@@ -32,7 +32,7 @@ Flink Table Store 0.3 completes many exciting features, enhances its ability as
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/01/20/delegation-token-framework-obtain-distribute-and-use-temporary-credentials-automatically/index.html b/content/2023/01/20/delegation-token-framework-obtain-distribute-and-use-temporary-credentials-automatically/index.html
index a723a5742..a158bda99 100644
--- a/content/2023/01/20/delegation-token-framework-obtain-distribute-and-use-temporary-credentials-automatically/index.html
+++ b/content/2023/01/20/delegation-token-framework-obtain-distribute-and-use-temporary-credentials-automatically/index.html
@@ -28,7 +28,7 @@ Introduction # Authentication in distributed systems is not an easy task. Previo
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/01/30/apache-flink-1.16.1-release-announcement/index.html b/content/2023/01/30/apache-flink-1.16.1-release-announcement/index.html
index 30c314a77..b4e9c220d 100644
--- a/content/2023/01/30/apache-flink-1.16.1-release-announcement/index.html
+++ b/content/2023/01/30/apache-flink-1.16.1-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 1.16.1." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/02/27/apache-flink-kubernetes-operator-1.4.0-release-announcement/index.html b/content/2023/02/27/apache-flink-kubernetes-operator-1.4.0-release-announcement/index.html
index 51b3efb0d..c002e996d 100644
--- a/content/2023/02/27/apache-flink-kubernetes-operator-1.4.0-release-announcement/index.html
+++ b/content/2023/02/27/apache-flink-kubernetes-operator-1.4.0-release-announcement/index.html
@@ -28,7 +28,7 @@ Flink Streaming Job Autoscaler # A highly requested feature for Flink applicatio
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/03/15/apache-flink-1.15.4-release-announcement/index.html b/content/2023/03/15/apache-flink-1.15.4-release-announcement/index.html
index b90767906..f989258ef 100644
--- a/content/2023/03/15/apache-flink-1.15.4-release-announcement/index.html
+++ b/content/2023/03/15/apache-flink-1.15.4-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 1.15.4." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/03/23/announcing-the-release-of-apache-flink-1.17/index.html b/content/2023/03/23/announcing-the-release-of-apache-flink-1.17/index.html
index 04357affc..1a3bb7997 100644
--- a/content/2023/03/23/announcing-the-release-of-apache-flink-1.17/index.html
+++ b/content/2023/03/23/announcing-the-release-of-apache-flink-1.17/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/04/19/apache-flink-ml-2.2.0-release-announcement/index.html b/content/2023/04/19/apache-flink-ml-2.2.0-release-announcement/index.html
index 012249d5b..f5faff3f4 100644
--- a/content/2023/04/19/apache-flink-ml-2.2.0-release-announcement/index.html
+++ b/content/2023/04/19/apache-flink-ml-2.2.0-release-announcement/index.html
@@ -28,7 +28,7 @@ With the addition of these algorithms, we believe Flink ML library is ready for
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/05/03/howto-create-a-batch-source-with-the-new-source-framework/index.html b/content/2023/05/03/howto-create-a-batch-source-with-the-new-source-framework/index.html
index 4f32bdb0e..5a6e07612 100644
--- a/content/2023/05/03/howto-create-a-batch-source-with-the-new-source-framework/index.html
+++ b/content/2023/05/03/howto-create-a-batch-source-with-the-new-source-framework/index.html
@@ -28,7 +28,7 @@ Implementing the source components # The source architecture is depicted in the
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/05/09/howto-migrate-a-real-life-batch-pipeline-from-the-dataset-api-to-the-datastream-api/index.html b/content/2023/05/09/howto-migrate-a-real-life-batch-pipeline-from-the-dataset-api-to-the-datastream-api/index.html
index 531e2a853..57d67de06 100644
--- a/content/2023/05/09/howto-migrate-a-real-life-batch-pipeline-from-the-dataset-api-to-the-datastream-api/index.html
+++ b/content/2023/05/09/howto-migrate-a-real-life-batch-pipeline-from-the-dataset-api-to-the-datastream-api/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/05/12/howto-test-a-batch-source-with-the-new-source-framework/index.html b/content/2023/05/12/howto-test-a-batch-source-with-the-new-source-framework/index.html
index aaf91dfa4..a06dc3d68 100644
--- a/content/2023/05/12/howto-test-a-batch-source-with-the-new-source-framework/index.html
+++ b/content/2023/05/12/howto-test-a-batch-source-with-the-new-source-framework/index.html
@@ -28,7 +28,7 @@ Unit testing the source # Testing the serializers # Example Cassandra SplitSeria
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/05/17/apache-flink-kubernetes-operator-1.5.0-release-announcement/index.html b/content/2023/05/17/apache-flink-kubernetes-operator-1.5.0-release-announcement/index.html
index b4dda12dc..fc5a736b8 100644
--- a/content/2023/05/17/apache-flink-kubernetes-operator-1.5.0-release-announcement/index.html
+++ b/content/2023/05/17/apache-flink-kubernetes-operator-1.5.0-release-announcement/index.html
@@ -28,7 +28,7 @@ We encourage you to download the release and share your feedback with the commun
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/05/25/apache-flink-1.16.2-release-announcement/index.html b/content/2023/05/25/apache-flink-1.16.2-release-announcement/index.html
index e8a433f9b..4f50eebfc 100644
--- a/content/2023/05/25/apache-flink-1.16.2-release-announcement/index.html
+++ b/content/2023/05/25/apache-flink-1.16.2-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 1.16.2." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/05/25/apache-flink-1.17.1-release-announcement/index.html b/content/2023/05/25/apache-flink-1.17.1-release-announcement/index.html
index f2e3b1a70..388f41ee7 100644
--- a/content/2023/05/25/apache-flink-1.17.1-release-announcement/index.html
+++ b/content/2023/05/25/apache-flink-1.17.1-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 1.17.1." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/07/03/sigmod-systems-award-for-apache-flink/index.html b/content/2023/07/03/sigmod-systems-award-for-apache-flink/index.html
index df364192f..85320ab4d 100644
--- a/content/2023/07/03/sigmod-systems-award-for-apache-flink/index.html
+++ b/content/2023/07/03/sigmod-systems-award-for-apache-flink/index.html
@@ -32,7 +32,7 @@ Winning of SIGMOD Systems Award indicates the high recognition of Flink&rsquo;s
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/08/04/announcing-three-new-apache-flink-connectors-the-new-connector-versioning-strategy-and-externalization/index.html b/content/2023/08/04/announcing-three-new-apache-flink-connectors-the-new-connector-versioning-strategy-and-externalization/index.html
index c7e073e64..1c60fb691 100644
--- a/content/2023/08/04/announcing-three-new-apache-flink-connectors-the-new-connector-versioning-strategy-and-externalization/index.html
+++ b/content/2023/08/04/announcing-three-new-apache-flink-connectors-the-new-connector-versioning-strategy-and-externalization/index.html
@@ -28,7 +28,7 @@ Amazon DynamoDB - This connector includes a sink that provides at-least-once del
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/08/15/apache-flink-kubernetes-operator-1.6.0-release-announcement/index.html b/content/2023/08/15/apache-flink-kubernetes-operator-1.6.0-release-announcement/index.html
index 7edd94c2f..51f8bd032 100644
--- a/content/2023/08/15/apache-flink-kubernetes-operator-1.6.0-release-announcement/index.html
+++ b/content/2023/08/15/apache-flink-kubernetes-operator-1.6.0-release-announcement/index.html
@@ -30,7 +30,7 @@ Highlights # Improved and simplified rollback mechanism # Previously the rollbac
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/09/19/stateful-functions-3.3.0-release-announcement/index.html b/content/2023/09/19/stateful-functions-3.3.0-release-announcement/index.html
index 4ae01e272..413a642dd 100644
--- a/content/2023/09/19/stateful-functions-3.3.0-release-announcement/index.html
+++ b/content/2023/09/19/stateful-functions-3.3.0-release-announcement/index.html
@@ -30,7 +30,7 @@ The binary distribution and source artifacts are now available on the updated Do
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/10/24/announcing-the-release-of-apache-flink-1.18/index.html b/content/2023/10/24/announcing-the-release-of-apache-flink-1.18/index.html
index 6d108e1c6..f9fa9d562 100644
--- a/content/2023/10/24/announcing-the-release-of-apache-flink-1.18/index.html
+++ b/content/2023/10/24/announcing-the-release-of-apache-flink-1.18/index.html
@@ -30,7 +30,7 @@ Towards a Streaming Lakehouse # Flink SQL Improvements # Introduce Flink JDBC Dr
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/10/27/apache-flink-kubernetes-operator-1.6.1-release-announcement/index.html b/content/2023/10/27/apache-flink-kubernetes-operator-1.6.1-release-announcement/index.html
index bffbd939c..f4ac4061c 100644
--- a/content/2023/10/27/apache-flink-kubernetes-operator-1.6.1-release-announcement/index.html
+++ b/content/2023/10/27/apache-flink-kubernetes-operator-1.6.1-release-announcement/index.html
@@ -32,7 +32,7 @@ Release Notes # Bug # [FLINK-32890] Correct HA patch check for zookeeper metadat
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/11/22/apache-flink-kubernetes-operator-1.7.0-release-announcement/index.html b/content/2023/11/22/apache-flink-kubernetes-operator-1.7.0-release-announcement/index.html
index 22dfc4248..16c851b2f 100644
--- a/content/2023/11/22/apache-flink-kubernetes-operator-1.7.0-release-announcement/index.html
+++ b/content/2023/11/22/apache-flink-kubernetes-operator-1.7.0-release-announcement/index.html
@@ -28,7 +28,7 @@ We encourage you to download the release and share your feedback with the commun
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/11/29/apache-flink-1.16.3-release-announcement/index.html b/content/2023/11/29/apache-flink-1.16.3-release-announcement/index.html
index 2a9317461..e58f3432b 100644
--- a/content/2023/11/29/apache-flink-1.16.3-release-announcement/index.html
+++ b/content/2023/11/29/apache-flink-1.16.3-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 1.16.3." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2023/11/29/apache-flink-1.17.2-release-announcement/index.html b/content/2023/11/29/apache-flink-1.17.2-release-announcement/index.html
index c6d448446..c456f4063 100644
--- a/content/2023/11/29/apache-flink-1.17.2-release-announcement/index.html
+++ b/content/2023/11/29/apache-flink-1.17.2-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 1.17.2." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2024/01/19/apache-flink-1.18.1-release-announcement/index.html b/content/2024/01/19/apache-flink-1.18.1-release-announcement/index.html
index a3af95a03..941f0e040 100644
--- a/content/2024/01/19/apache-flink-1.18.1-release-announcement/index.html
+++ b/content/2024/01/19/apache-flink-1.18.1-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 1.18.1." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2024/03/18/announcing-the-release-of-apache-flink-1.19/index.html b/content/2024/03/18/announcing-the-release-of-apache-flink-1.19/index.html
index e7bb86bf7..590460163 100644
--- a/content/2024/03/18/announcing-the-release-of-apache-flink-1.19/index.html
+++ b/content/2024/03/18/announcing-the-release-of-apache-flink-1.19/index.html
@@ -30,7 +30,7 @@ Flink SQL Improvements # Custom Parallelism for Table/SQL Sources # Now in Flink
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2024/03/21/apache-flink-kubernetes-operator-1.8.0-release-announcement/index.html b/content/2024/03/21/apache-flink-kubernetes-operator-1.8.0-release-announcement/index.html
index 4757c863a..424586487 100644
--- a/content/2024/03/21/apache-flink-kubernetes-operator-1.8.0-release-announcement/index.html
+++ b/content/2024/03/21/apache-flink-kubernetes-operator-1.8.0-release-announcement/index.html
@@ -32,7 +32,7 @@ Highlights # Flink Autotuning # We&rsquo;re excited to announce our latest addit
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -250,7 +250,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2024/05/17/apache-flink-cdc-3.1.0-release-announcement/index.html b/content/2024/05/17/apache-flink-cdc-3.1.0-release-announcement/index.html
index db6548fa2..85a752c90 100644
--- a/content/2024/05/17/apache-flink-cdc-3.1.0-release-announcement/index.html
+++ b/content/2024/05/17/apache-flink-cdc-3.1.0-release-announcement/index.html
@@ -28,7 +28,7 @@ We&rsquo;d like to invite you to check out Flink CDC documentation and have a tr
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2024/06/14/apache-flink-1.19.1-release-announcement/index.html b/content/2024/06/14/apache-flink-1.19.1-release-announcement/index.html
index 662e47080..aa445e9dd 100644
--- a/content/2024/06/14/apache-flink-1.19.1-release-announcement/index.html
+++ b/content/2024/06/14/apache-flink-1.19.1-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 1.19.1." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2024/06/18/apache-flink-cdc-3.1.1-release-announcement/index.html b/content/2024/06/18/apache-flink-cdc-3.1.1-release-announcement/index.html
index c42f0f801..ef8055a8b 100644
--- a/content/2024/06/18/apache-flink-cdc-3.1.1-release-announcement/index.html
+++ b/content/2024/06/18/apache-flink-cdc-3.1.1-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users to upgrade to Flink CDC 3." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2024/07/02/apache-flink-kubernetes-operator-1.9.0-release-announcement/index.html b/content/2024/07/02/apache-flink-kubernetes-operator-1.9.0-release-announcement/index.html
index 6e20a0404..e6e2c6e65 100644
--- a/content/2024/07/02/apache-flink-kubernetes-operator-1.9.0-release-announcement/index.html
+++ b/content/2024/07/02/apache-flink-kubernetes-operator-1.9.0-release-announcement/index.html
@@ -30,7 +30,7 @@ We encourage you to download the release and share your experience with the comm
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2024/08/02/announcing-the-release-of-apache-flink-1.20/index.html b/content/2024/08/02/announcing-the-release-of-apache-flink-1.20/index.html
index 5b97e9f13..5a9ee8b69 100644
--- a/content/2024/08/02/announcing-the-release-of-apache-flink-1.20/index.html
+++ b/content/2024/08/02/announcing-the-release-of-apache-flink-1.20/index.html
@@ -30,7 +30,7 @@ Standing on the Eve of Apache Flink 2.0 # Flink 1.0 was released eight years ago
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2024/09/05/apache-flink-cdc-3.2.0-release-announcement/index.html b/content/2024/09/05/apache-flink-cdc-3.2.0-release-announcement/index.html
index 2c44c7ad5..ce9fc8e9b 100644
--- a/content/2024/09/05/apache-flink-cdc-3.2.0-release-announcement/index.html
+++ b/content/2024/09/05/apache-flink-cdc-3.2.0-release-announcement/index.html
@@ -28,7 +28,7 @@ Flink CDC release packages are available at Releases Page, and documentations ar
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2024/10/23/preview-release-of-apache-flink-2.0/index.html b/content/2024/10/23/preview-release-of-apache-flink-2.0/index.html
index b26a8fec5..273199fe1 100644
--- a/content/2024/10/23/preview-release-of-apache-flink-2.0/index.html
+++ b/content/2024/10/23/preview-release-of-apache-flink-2.0/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2024/10/25/apache-flink-kubernetes-operator-1.10.0-release-announcement/index.html b/content/2024/10/25/apache-flink-kubernetes-operator-1.10.0-release-announcement/index.html
index 84cf1328c..7ccdaab92 100644
--- a/content/2024/10/25/apache-flink-kubernetes-operator-1.10.0-release-announcement/index.html
+++ b/content/2024/10/25/apache-flink-kubernetes-operator-1.10.0-release-announcement/index.html
@@ -30,7 +30,7 @@ We encourage you to download the release and share your experience with the comm
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2024/11/25/introducing-the-new-amazon-kinesis-data-stream-and-amazon-dynamodb-stream-sources/index.html b/content/2024/11/25/introducing-the-new-amazon-kinesis-data-stream-and-amazon-dynamodb-stream-sources/index.html
index 7e2f3eae6..05e40c4bc 100644
--- a/content/2024/11/25/introducing-the-new-amazon-kinesis-data-stream-and-amazon-dynamodb-stream-sources/index.html
+++ b/content/2024/11/25/introducing-the-new-amazon-kinesis-data-stream-and-amazon-dynamodb-stream-sources/index.html
@@ -28,7 +28,7 @@ The new KinesisStreamsSource replaces the legacy FlinkKinesisConsumer; and the n
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2024/11/27/apache-flink-cdc-3.2.1-release-announcement/index.html b/content/2024/11/27/apache-flink-cdc-3.2.1-release-announcement/index.html
index 25391b300..6159e06d0 100644
--- a/content/2024/11/27/apache-flink-cdc-3.2.1-release-announcement/index.html
+++ b/content/2024/11/27/apache-flink-cdc-3.2.1-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users to upgrade to Flink CDC 3." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2024/12/05/introducing-the-new-prometheus-connector/index.html b/content/2024/12/05/introducing-the-new-prometheus-connector/index.html
index 77d6d89ef..22324570b 100644
--- a/content/2024/12/05/introducing-the-new-prometheus-connector/index.html
+++ b/content/2024/12/05/introducing-the-new-prometheus-connector/index.html
@@ -30,7 +30,7 @@ Motivations for a Prometheus connector # Prometheus is an efficient time-series
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/01/21/apache-flink-cdc-3.3.0-release-announcement/index.html b/content/2025/01/21/apache-flink-cdc-3.3.0-release-announcement/index.html
index 8cfa95f86..19411f79d 100644
--- a/content/2025/01/21/apache-flink-cdc-3.3.0-release-announcement/index.html
+++ b/content/2025/01/21/apache-flink-cdc-3.3.0-release-announcement/index.html
@@ -30,7 +30,7 @@ Highlights # Connectors # New Pipeline Connectors # Flink CDC 3." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/02/12/apache-flink-1.19.2-release-announcement/index.html b/content/2025/02/12/apache-flink-1.19.2-release-announcement/index.html
index 0976f0b2f..c6042305e 100644
--- a/content/2025/02/12/apache-flink-1.19.2-release-announcement/index.html
+++ b/content/2025/02/12/apache-flink-1.19.2-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 1.19.2." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/02/12/apache-flink-1.20.1-release-announcement/index.html b/content/2025/02/12/apache-flink-1.20.1-release-announcement/index.html
index 2b3dde8ca..a05fa0623 100644
--- a/content/2025/02/12/apache-flink-1.20.1-release-announcement/index.html
+++ b/content/2025/02/12/apache-flink-1.20.1-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 1.20.1." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/03/03/apache-flink-kubernetes-operator-1.11.0-release-announcement/index.html b/content/2025/03/03/apache-flink-kubernetes-operator-1.11.0-release-announcement/index.html
index de905b97d..f6c6ae4d6 100644
--- a/content/2025/03/03/apache-flink-kubernetes-operator-1.11.0-release-announcement/index.html
+++ b/content/2025/03/03/apache-flink-kubernetes-operator-1.11.0-release-announcement/index.html
@@ -30,7 +30,7 @@ Highlights # Flink 2.0 Preview Support # The Flink Kubernetes Operator and Autos
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/03/24/apache-flink-2.0.0-a-new-era-of-real-time-data-processing/index.html b/content/2025/03/24/apache-flink-2.0.0-a-new-era-of-real-time-data-processing/index.html
index 1e0465f89..f7c127467 100644
--- a/content/2025/03/24/apache-flink-2.0.0-a-new-era-of-real-time-data-processing/index.html
+++ b/content/2025/03/24/apache-flink-2.0.0-a-new-era-of-real-time-data-processing/index.html
@@ -28,7 +28,7 @@ In this release, 165 contributors have come together to complete 25 FLIPs (Flink
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/04/30/introducing-the-externalized-kudu-connector/index.html b/content/2025/04/30/introducing-the-externalized-kudu-connector/index.html
index 6b9708b38..ee3205316 100644
--- a/content/2025/04/30/introducing-the-externalized-kudu-connector/index.html
+++ b/content/2025/04/30/introducing-the-externalized-kudu-connector/index.html
@@ -26,7 +26,7 @@
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -244,7 +244,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/05/16/apache-flink-cdc-3.4.0-release-announcement/index.html b/content/2025/05/16/apache-flink-cdc-3.4.0-release-announcement/index.html
index 648bd97e6..73fb382b8 100644
--- a/content/2025/05/16/apache-flink-cdc-3.4.0-release-announcement/index.html
+++ b/content/2025/05/16/apache-flink-cdc-3.4.0-release-announcement/index.html
@@ -28,7 +28,7 @@ Flink CDC release packages are available at Releases Page, and documentations ar
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/06/03/apache-flink-kubernetes-operator-1.12.0-release-announcement/index.html b/content/2025/06/03/apache-flink-kubernetes-operator-1.12.0-release-announcement/index.html
index 655273401..73b9b6e8c 100644
--- a/content/2025/06/03/apache-flink-kubernetes-operator-1.12.0-release-announcement/index.html
+++ b/content/2025/06/03/apache-flink-kubernetes-operator-1.12.0-release-announcement/index.html
@@ -30,7 +30,7 @@ Highlights # Enhanced Error Visibility and Event Reporting # This release places
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/07/10/apache-flink-1.19.3-release-announcement/index.html b/content/2025/07/10/apache-flink-1.19.3-release-announcement/index.html
index 9964dccb3..692b870cc 100644
--- a/content/2025/07/10/apache-flink-1.19.3-release-announcement/index.html
+++ b/content/2025/07/10/apache-flink-1.19.3-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 1.19.3 or higher." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/07/10/apache-flink-1.20.2-release-announcement/index.html b/content/2025/07/10/apache-flink-1.20.2-release-announcement/index.html
index a80f0aed6..2b845e1cc 100644
--- a/content/2025/07/10/apache-flink-1.20.2-release-announcement/index.html
+++ b/content/2025/07/10/apache-flink-1.20.2-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 1.20.2 or higher." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/07/31/apache-flink-2.1.0-ushers-in-a-new-era-of-unified-real-time-data--ai-with-comprehensive-upgrades/index.html b/content/2025/07/31/apache-flink-2.1.0-ushers-in-a-new-era-of-unified-real-time-data--ai-with-comprehensive-upgrades/index.html
index 4316b9d06..079df477e 100644
--- a/content/2025/07/31/apache-flink-2.1.0-ushers-in-a-new-era-of-unified-real-time-data--ai-with-comprehensive-upgrades/index.html
+++ b/content/2025/07/31/apache-flink-2.1.0-ushers-in-a-new-era-of-unified-real-time-data--ai-with-comprehensive-upgrades/index.html
@@ -28,7 +28,7 @@ Breakthroughs in Real-Time AI:" />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/09/26/apache-flink-cdc-3.5.0-release-announcement/index.html b/content/2025/09/26/apache-flink-cdc-3.5.0-release-announcement/index.html
index 15d6f5b76..2413b24e5 100644
--- a/content/2025/09/26/apache-flink-cdc-3.5.0-release-announcement/index.html
+++ b/content/2025/09/26/apache-flink-cdc-3.5.0-release-announcement/index.html
@@ -30,7 +30,7 @@ Flink CDC release packages are available at Releases Page, and documentations ar
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/09/29/apache-flink-kubernetes-operator-1.13.0-release-announcement/index.html b/content/2025/09/29/apache-flink-kubernetes-operator-1.13.0-release-announcement/index.html
index 754532211..5d1000c7d 100644
--- a/content/2025/09/29/apache-flink-kubernetes-operator-1.13.0-release-announcement/index.html
+++ b/content/2025/09/29/apache-flink-kubernetes-operator-1.13.0-release-announcement/index.html
@@ -30,7 +30,7 @@ Highlights # Flink 2.1 Support # The Flink Kubernetes Operator and Autoscaler 1.
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/10/09/apache-flink-1.20.3-release-announcement/index.html b/content/2025/10/09/apache-flink-1.20.3-release-announcement/index.html
index 8b2421815..b159640d8 100644
--- a/content/2025/10/09/apache-flink-1.20.3-release-announcement/index.html
+++ b/content/2025/10/09/apache-flink-1.20.3-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 1.20.3 or higher." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/11/11/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/index.html b/content/2025/10/14/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/index.html
similarity index 98%
copy from content/2025/11/11/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/index.html
copy to content/2025/10/14/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/index.html
index e39cdb096..346063cf6 100644
--- a/content/2025/11/11/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/index.html
+++ b/content/2025/10/14/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/index.html
@@ -11,7 +11,7 @@
 <link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
 <script src="/js/anchor.min.js"></script>
 <script src="/js/flink.js"></script>
-<link rel="canonical" href="https://flink.apache.org/2025/11/11/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/">
+<link rel="canonical" href="https://flink.apache.org/2025/10/14/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/">
 
   <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
@@ -21,14 +21,14 @@ Enter the Flink Dynamic Iceberg Sink, a powerful pattern for Apache Flink that a
 <meta property="og:description" content="Ingesting thousands of evolving Kafka topics into a lakehouse often creates complex, brittle pipelines that require constant manual intervention as its write patterns change. But what if your ingestion pipeline could adapt on its own, with zero downtime?
 Enter the Flink Dynamic Iceberg Sink, a powerful pattern for Apache Flink that allows users to write streaming data into multiple Iceberg tables—dynamically, efficiently, and with full schema evolution support. The sink can create and write to new tables based on instructions within the records themselves." />
 <meta property="og:type" content="article" />
-<meta property="og:url" content="https://flink.apache.org/2025/11/11/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/" /><meta property="article:section" content="posts" />
-<meta property="article:published_time" content="2025-11-11T00:00:00+00:00" />
-<meta property="article:modified_time" content="2025-11-11T00:00:00+00:00" />
+<meta property="og:url" content="https://flink.apache.org/2025/10/14/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/" /><meta property="article:section" content="posts" />
+<meta property="article:published_time" content="2025-10-14T00:00:00+00:00" />
+<meta property="article:modified_time" content="2025-10-14T00:00:00+00:00" />
 <title>From Stream to Lakehouse: Kafka Ingestion with the Flink Dynamic Iceberg Sink | Apache Flink</title>
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
@@ -504,12 +504,12 @@ https://github.com/alex-shpak/hugo-book
           
 <article class="markdown">
     <h1>
-        <a href="/2025/11/11/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/">From Stream to Lakehouse: Kafka Ingestion with the Flink Dynamic Iceberg Sink</a>
+        <a href="/2025/10/14/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/">From Stream to Lakehouse: Kafka Ingestion with the Flink Dynamic Iceberg Sink</a>
     </h1>
     
 
 
-  November 11, 2025 -
+  October 14, 2025 -
 
 
 
@@ -527,7 +527,7 @@ https://github.com/alex-shpak/hugo-book
 </h2>
 <p>Let&rsquo;s start with the basics. Our goal is to get data from a single Kafka topic into a corresponding Iceberg table.</p>
 <div style="text-align: center;">
-<img src="/img/blog/2025-11-11-kafka-dynamic-iceberg-sink/simple-single-kafka-topic-to-iceberg.png" style="width:70%;margin:15px">
+<img src="/img/blog/2025-10-03-kafka-dynamic-iceberg-sink/simple-single-kafka-topic-to-iceberg.png" style="width:70%;margin:15px">
 </div>
 <h3 id="how-to-write-to-an-iceberg-table-with-flink">
   How to write to an Iceberg table with Flink
@@ -557,7 +557,7 @@ https://github.com/alex-shpak/hugo-book
 </h2>
 <p>Now, what if we have thousands of topics? The logical next step is to create a dedicated processing graph (or DAG) for each topic-to-table mapping within a single Flink application.</p>
 <div style="text-align: center;">
-<img src="/img/blog/2025-11-11-kafka-dynamic-iceberg-sink/multiple-dag-pipeline.png" style="width:70%;margin:15px">
+<img src="/img/blog/2025-10-03-kafka-dynamic-iceberg-sink/multiple-dag-pipeline.png" style="width:70%;margin:15px">
 </div>
 <p>This looks good, but this static architecture cannot adapt to the changes: an Iceberg sink can only write to <strong>one predefined table</strong>, the table must <strong>exist beforehand</strong>, and its <strong>schema is fixed</strong> for the lifetime of the job.</p>
 <h3 id="scaling-up-problems-ahead">
@@ -580,7 +580,7 @@ A single Kafka topic contains multiple event types that need to be routed to dif
 </h3>
 <p>Here’s the new architecture:</p>
 <div style="text-align: center;">
-<img src="/img/blog/2025-11-11-kafka-dynamic-iceberg-sink/dynamic-iceberg-sink.png" style="width:70%;margin:15px">
+<img src="/img/blog/2025-10-03-kafka-dynamic-iceberg-sink/dynamic-iceberg-sink.png" style="width:70%;margin:15px">
 </div>
 <p>This single, unified pipeline can ingest from any number of topics and write to any number of tables, automatically handling new topics and schema changes without restarts.</p>
 <h4 id="a-look-at-the-implementation">
@@ -703,7 +703,7 @@ A single Kafka topic contains multiple event types that need to be routed to dif
         <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
       </p>
       <p>
-        <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2025-11-11-kafka-dynamic-iceberg-sink.md">
+        <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2025-10-14-kafka-dynamic-iceberg-sink.md">
           Edit This Page<i class="fa fa-edit fa-fw"></i> 
         </a>
       </p>
diff --git a/content/2025/10/15/apache-flink-agents-0.1.0-release-announcement/index.html b/content/2025/10/15/apache-flink-agents-0.1.0-release-announcement/index.html
index 914558c6f..57b22bab0 100644
--- a/content/2025/10/15/apache-flink-agents-0.1.0-release-announcement/index.html
+++ b/content/2025/10/15/apache-flink-agents-0.1.0-release-announcement/index.html
@@ -28,7 +28,7 @@ What is Apache Flink Agents # Apache Flink Agents is a new sub-project of Apache
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/11/10/apache-flink-2.0.1-release-announcement/index.html b/content/2025/11/10/apache-flink-2.0.1-release-announcement/index.html
index 5f6ccba61..ccac0ddb1 100644
--- a/content/2025/11/10/apache-flink-2.0.1-release-announcement/index.html
+++ b/content/2025/11/10/apache-flink-2.0.1-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 2." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/11/10/apache-flink-2.1.1-release-announcement/index.html b/content/2025/11/10/apache-flink-2.1.1-release-announcement/index.html
index 6dc14068a..5a79fff6b 100644
--- a/content/2025/11/10/apache-flink-2.1.1-release-announcement/index.html
+++ b/content/2025/11/10/apache-flink-2.1.1-release-announcement/index.html
@@ -30,7 +30,7 @@ We highly recommend all users upgrade to Flink 2.1.1 or higher." />
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -248,7 +248,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/11/11/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/index.html b/content/2025/11/11/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/index.html
index e39cdb096..ce769efdb 100644
--- a/content/2025/11/11/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/index.html
+++ b/content/2025/11/11/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/index.html
@@ -28,7 +28,7 @@ Enter the Flink Dynamic Iceberg Sink, a powerful pattern for Apache Flink that a
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/2025/12/04/apache-flink-2.2.0-advancing-real-time-data--ai-and-empowering-stream-processing-for-the-ai-era/index.html b/content/2025/12/04/apache-flink-2.2.0-advancing-real-time-data--ai-and-empowering-stream-processing-for-the-ai-era/index.html
new file mode 100644
index 000000000..1f4e74415
--- /dev/null
+++ b/content/2025/12/04/apache-flink-2.2.0-advancing-real-time-data--ai-and-empowering-stream-processing-for-the-ai-era/index.html
@@ -0,0 +1,1093 @@
+
+<!DOCTYPE html>
+<html lang="en" dir=ZgotmplZ>
+
+<head>
+  
+
+
+<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
+<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
+<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
+<script src="/js/anchor.min.js"></script>
+<script src="/js/flink.js"></script>
+<link rel="canonical" href="https://flink.apache.org/2025/12/04/apache-flink-2.2.0-advancing-real-time-data--ai-and-empowering-stream-processing-for-the-ai-era/">
+
+  <meta charset="UTF-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="description" content="The Apache Flink PMC is proud to announce the release of Apache Flink 2.2.0. Flink 2.2.0 further enriches AI capabilities, enhances materialized tables and the Connector framework, and improves batch processing and PyFlink support. This release brings together 73 global contributors, implements 9 FLIPs (Flink Improvement Proposals), and resolves over 220 issues.
+Apache Flink 2.2 ushers in the AI era by seamlessly integrating real-time data processing with artificial intelligence. It introduces ML_PREDICT for large language model inference and VECTOR_SEARCH for real-time vector similarity search, empowering streaming AI applications.">
+<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Apache Flink 2.2.0: Advancing Real-Time Data &#43; AI and Empowering Stream Processing for the AI Era" />
+<meta property="og:description" content="The Apache Flink PMC is proud to announce the release of Apache Flink 2.2.0. Flink 2.2.0 further enriches AI capabilities, enhances materialized tables and the Connector framework, and improves batch processing and PyFlink support. This release brings together 73 global contributors, implements 9 FLIPs (Flink Improvement Proposals), and resolves over 220 issues.
+Apache Flink 2.2 ushers in the AI era by seamlessly integrating real-time data processing with artificial intelligence. It introduces ML_PREDICT for large language model inference and VECTOR_SEARCH for real-time vector similarity search, empowering streaming AI applications." />
+<meta property="og:type" content="article" />
+<meta property="og:url" content="https://flink.apache.org/2025/12/04/apache-flink-2.2.0-advancing-real-time-data--ai-and-empowering-stream-processing-for-the-ai-era/" /><meta property="article:section" content="posts" />
+<meta property="article:published_time" content="2025-12-04T00:00:00+00:00" />
+<meta property="article:modified_time" content="2025-12-04T00:00:00+00:00" />
+<title>Apache Flink 2.2.0: Advancing Real-Time Data &#43; AI and Empowering Stream Processing for the AI Era | Apache Flink</title>
+<link rel="manifest" href="/manifest.json">
+<link rel="icon" href="/favicon.png" type="image/x-icon">
+<link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
+<!--
+Made with Book Theme
+https://github.com/alex-shpak/hugo-book
+-->
+
+  <meta name="generator" content="Hugo 0.124.1">
+
+    
+    <script>
+      var _paq = window._paq = window._paq || [];
+       
+       
+      _paq.push(['disableCookies']);
+       
+      _paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
+      _paq.push(['trackPageView']);
+      _paq.push(['enableLinkTracking']);
+      (function() {
+        var u="//analytics.apache.org/";
+        _paq.push(['setTrackerUrl', u+'matomo.php']);
+        _paq.push(['setSiteId', '1']);
+        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+      })();
+    </script>
+    
+</head>
+
+<body dir=ZgotmplZ>
+  
+
+
+<header>
+  <nav class="navbar navbar-expand-xl">
+    <div class="container-fluid">
+      <a class="navbar-brand" href="/">
+        <img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
+        <span>Apache Flink</span>
+      </a>
+      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
+          <i class="fa fa-bars navbar-toggler-icon"></i>
+      </button>
+      <div class="collapse navbar-collapse" id="navbarSupportedContent">
+        <ul class="navbar-nav">
+          
+
+
+
+
+
+    
+      
+  
+    <li class="nav-item dropdown">
+      <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
+      <ul class="dropdown-menu">
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="/what-is-flink/security/">Security</a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
+  
+
+          </li>
+        
+      </ul>
+    </li>
+  
+
+    
+      
+  
+    <li class="nav-item dropdown">
+      <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
+      <ul class="dropdown-menu">
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable/docs/get-started/introduction/">With Flink CDC<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-agents-docs-latest/docs/get-started/overview/">With Flink Agents<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/">With Flink ML<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/">Training Course<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html">With Flink Stateful Functions<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+      </ul>
+    </li>
+  
+
+    
+      
+  
+    <li class="nav-item dropdown">
+      <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
+      <ul class="dropdown-menu">
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-lts/">Flink 1.20 (LTS)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-master/">Flink Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">Kubernetes Operator 1.13 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main">Kubernetes Operator Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable">CDC 3.5 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-master">CDC Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-agents-docs-latest/">Agents 0.1 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-agents-docs-main/">Agents Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">ML 2.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-master">ML Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">Stateful Functions 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-master">Stateful Functions Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    </a>
+  
+
+          </li>
+        
+      </ul>
+    </li>
+  
+
+    
+      
+  
+    <li class="nav-item dropdown">
+      <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">How to Contribute</a>
+      <ul class="dropdown-menu">
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="/how-to-contribute/overview/">Overview</a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="/how-to-contribute/contribute-code/">Contribute Code</a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="/how-to-contribute/reviewing-prs/">Review Pull Requests</a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="/how-to-contribute/code-style-and-quality-preamble/">Code Style and Quality Guide</a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="/how-to-contribute/contribute-documentation/">Contribute Documentation</a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="/how-to-contribute/documentation-style-guide/">Documentation Style Guide</a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="/how-to-contribute/improve-website/">Contribute to the Website</a>
+  
+
+          </li>
+        
+          <li>
+            
+  
+    <a class="dropdown-item" href="/how-to-contribute/getting-help/">Getting Help</a>
+  
+
+          </li>
+        
+      </ul>
+    </li>
+  
+
+    
+
+
+    
+      
+  
+    <li class="nav-item">
+      
+  
+    <a class="nav-link" href="/posts/">Flink Blog</a>
+  
+
+    </li>
+  
+
+    
+      
+  
+    <li class="nav-item">
+      
+  
+    <a class="nav-link" href="/downloads/">Downloads</a>
+  
+
+    </li>
+  
+
+    
+
+
+    
+
+
+
+
+
+
+
+
+
+        </ul>
+        <div class="book-search">
+          <div class="book-search-spinner hidden">
+            <i class="fa fa-refresh fa-spin"></i>
+          </div>
+          <form class="search-bar d-flex" onsubmit="return false;"su>
+            <input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/">
+            <i class="fa fa-search search"></i>
+            <i class="fa fa-circle-o-notch fa-spin spinner"></i>
+          </form>
+          <div class="book-search-spinner hidden"></div>
+          <ul id="book-search-results"></ul>
+        </div>
+      </div>
+    </div>
+  </nav>
+  <div class="navbar-clearfix"></div>
+</header>
+ 
+  
+      <main class="flex">
+        <section class="container book-page">
+          
+<article class="markdown">
+    <h1>
+        <a href="/2025/12/04/apache-flink-2.2.0-advancing-real-time-data--ai-and-empowering-stream-processing-for-the-ai-era/">Apache Flink 2.2.0: Advancing Real-Time Data &#43; AI and Empowering Stream Processing for the AI Era</a>
+    </h1>
+    
+
+
+  December 4, 2025 -
+
+
+
+  Hang Ruan
+
+
+
+
+    <p><p>The Apache Flink PMC is proud to announce the release of Apache Flink 2.2.0. Flink 2.2.0 further enriches AI capabilities, enhances materialized tables and the Connector framework, and improves batch processing and PyFlink support. This release brings together 73 global contributors, implements 9 FLIPs (Flink Improvement Proposals), and resolves over 220 issues.</p>
+<p>Apache Flink 2.2 ushers in the AI era by seamlessly integrating real-time data processing with artificial intelligence. It introduces <code>ML_PREDICT</code> for large language model inference and <code>VECTOR_SEARCH</code> for real-time vector similarity search, empowering streaming AI applications. Enhanced features like Materialized Tables, Delta Joins, balanced task scheduling, and smarter connectors (including rate limiting and skew-aware split assignment) significantly boost per [...]
+<p>Let&rsquo;s dive into the highlights.</p>
+<h1 id="flink-sql-improvements">
+  Flink SQL Improvements
+  <a class="anchor" href="#flink-sql-improvements">#</a>
+</h1>
+<h2 id="realtime-ai-function">
+  Realtime AI Function
+  <a class="anchor" href="#realtime-ai-function">#</a>
+</h2>
+<p>Apache Flink has supported leveraging LLM capabilities through the <code>ML_PREDICT</code> function in Flink SQL
+since version 2.1, enabling users to perform semantic analysis in a simple and efficient way. In Flink
+2.2, the Table API also supports model inference operations that allow you to integrate machine learning
+models directly into your data processing pipelines. You can create models with specific providers (like
+OpenAI) and use them to make predictions on your data.</p>
+<p>Example:</p>
+<ul>
+<li>Creating and Using Models</li>
+</ul>
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="c1">// 1. Set up the local environment</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">EnvironmentSettings</span><span class="w"> </span><span class="n">settings</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">EnvironmentSettings</span><span class="p">.</span><span class="na">inStreamingMode</span><span class="p">();</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">TableEnvironment</span><span class="w"> </span><span class="n">tEnv</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">TableEnvironment</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="n">settings</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// 2. Create a source table from in-memory data</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">Table</span><span class="w"> </span><span class="n">myTable</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tEnv</span><span class="p">.</span><span class="na">fromValues</span><span class="p">(</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">ROW</span><span class="p">(</span><span class="n">FIELD</span><span class="p">(</span><span class="s">&#34;text&#34;</span><span class="p">,</span><span class="w"> </span><span class="n">STRING</span><span class="p">())),</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">row</span><span class="p">(</span><span class="s">&#34;Hello&#34;</span><span class="p">),</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">row</span><span class="p">(</span><span class="s">&#34;Machine Learning&#34;</span><span class="p">),</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">row</span><span class="p">(</span><span class="s">&#34;Good morning&#34;</span><span class="p">)</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// 3. Create model</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">tEnv</span><span class="p">.</span><span class="na">createModel</span><span class="p">(</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="s">&#34;my_model&#34;</span><span class="p">,</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">ModelDescriptor</span><span class="p">.</span><span class="na">forProvider</span><span class="p">(</span><span class="s">&#34;openai&#34;</span><span class="p">)</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="p">.</span><span class="na">inputSchema</span><span class="p">(</span><span class="n">Schema</span><span class="p">.</span><span class="na">newBuilder</span><span class="p">().</span><span class="na">column</span><span class="p">(</span><span class="s">&#34;input&#34;</span><span class="p">,</span><span class="w"> </span><span class="n">STRING</span><span class="p">()).</span><span class= [...]
+</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="p">.</span><span class="na">outputSchema</span><span class="p">(</span><span class="n">Schema</span><span class="p">.</span><span class="na">newBuilder</span><span class="p">().</span><span class="na">column</span><span class="p">(</span><span class="s">&#34;output&#34;</span><span class="p">,</span><span class="w"> </span><span class="n">STRING</span><span class="p">()).</span><span clas [...]
+</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="p">.</span><span class="na">option</span><span class="p">(</span><span class="s">&#34;endpoint&#34;</span><span class="p">,</span><span class="w"> </span><span class="s">&#34;https://api.openai.com/v1/chat/completions&#34;</span><span class="p">)</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="p">.</span><span class="na">option</span><span class="p">(</span><span class="s">&#34;model&#34;</span><span class="p">,</span><span class="w"> </span><span class="s">&#34;gpt-4.1&#34;</span><span class="p">)</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="p">.</span><span class="na">option</span><span class="p">(</span><span class="s">&#34;system-prompt&#34;</span><span class="p">,</span><span class="w"> </span><span class="s">&#34;translate to chinese&#34;</span><span class="p">)</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="p">.</span><span class="na">option</span><span class="p">(</span><span class="s">&#34;api-key&#34;</span><span class="p">,</span><span class="w"> </span><span class="s">&#34;&lt;your-openai-api-key-here&gt;&#34;</span><span class="p">)</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="p">.</span><span class="na">build</span><span class="p">()</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">Model</span><span class="w"> </span><span class="n">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tEnv</span><span class="p">.</span><span class="na">fromModel</span><span class="p">(</span><span class="s">&#34;my_model&#34;</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// 4. Use the model to make predictions</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">Table</span><span class="w"> </span><span class="n">predictResult</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">model</span><span class="p">.</span><span class="na">predict</span><span class="p">(</span><span class="n">myTable</span><span class="p">,</span><span class="w"> </span><span class="n">ColumnList</span><span class="p">.</span><span clas [...]
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// 5. Async prediction example</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">Table</span><span class="w"> </span><span class="n">asyncPredictResult</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">model</span><span class="p">.</span><span class="na">predict</span><span class="p">(</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">myTable</span><span class="p">,</span><span class="w"> 
+</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">ColumnList</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="s">&#34;text&#34;</span><span class="p">),</span><span class="w"> 
+</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">Map</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="s">&#34;async&#34;</span><span class="p">,</span><span class="w"> </span><span class="s">&#34;true&#34;</span><span class="p">)</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w">
+</span></span></span></code></pre></div><p><strong>More Information</strong></p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/FLINK-38104">FLINK-38104</a></li>
+<li><a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-526%3A&#43;Model&#43;ML_PREDICT%2C&#43;ML_EVALUATE&#43;Table&#43;API">FLIP-526</a></li>
+</ul>
+<h2 id="vector-search">
+  Vector Search
+  <a class="anchor" href="#vector-search">#</a>
+</h2>
+<p>Apache Flink has supported leveraging LLM capabilities through the <code>ML_PREDICT</code> function in Flink SQL
+since version 2.1. This integration has been technically validated in scenarios such as log classification
+and real-time question-answering systems. However, the current architecture allows Flink to only use
+embedding models to convert unstructured data (e.g., text, images) into high-dimensional vector features,
+which are then persisted to downstream storage systems. It lacks real-time online querying and similarity
+analysis capabilities for vector spaces. The VECTOR_SEARCH function is provided in Flink 2.2 to enable users
+to perform streaming vector similarity searches and real-time context retrieval
+directly within Flink.</p>
+<p>Take the following SQL statements as an example:</p>
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="c1">-- Basic usage
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> 
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">input_table</span><span class="p">,</span><span class="w"> </span><span class="k">LATERAL</span><span class="w"> </span><span class="n">VECTOR_SEARCH</span><span class="p">(</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="k">TABLE</span><span class="w"> </span><span class="n">vector_table</span><span class="p">,</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">input_table</span><span class="p">.</span><span class="n">vector_column</span><span class="p">,</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="k">DESCRIPTOR</span><span class="p">(</span><span class="n">index_column</span><span class="p">),</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="mi">10</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">-- With configuration options
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> 
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">input_table</span><span class="p">,</span><span class="w"> </span><span class="k">LATERAL</span><span class="w"> </span><span class="n">VECTOR_SEARCH</span><span class="p">(</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="k">TABLE</span><span class="w"> </span><span class="n">vector_table</span><span class="p">,</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">input_table</span><span class="p">.</span><span class="n">vector_column</span><span class="p">,</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="k">DESCRIPTOR</span><span class="p">(</span><span class="n">index_column</span><span class="p">),</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="mi">10</span><span class="p">,</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="k">MAP</span><span class="p">[</span><span class="s1">&#39;async&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;true&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;timeout&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;100s&#39;</span><span class="p">]</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">-- Using named parameters
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> 
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">input_table</span><span class="p">,</span><span class="w"> </span><span class="k">LATERAL</span><span class="w"> </span><span class="n">VECTOR_SEARCH</span><span class="p">(</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">SEARCH_TABLE</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">vector_table</span><span class="p">,</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">COLUMN_TO_QUERY</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="n">input_table</span><span class="p">.</span><span class="n">vector_column</span><span class="p">,</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">COLUMN_TO_SEARCH</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="k">DESCRIPTOR</span><span class="p">(</span><span class="n">index_column</span><span class="p">),</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">TOP_K</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">CONFIG</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="k">MAP</span><span class="p">[</span><span class="s1">&#39;async&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;true&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;timeout&#39;</span><span class="p">,</span><span class="w">  [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">-- Searching with contant value
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> 
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">FROM</span><span class="w"> </span><span class="n">VECTOR_SEARCH</span><span class="p">(</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="k">TABLE</span><span class="w"> </span><span class="n">vector_table</span><span class="p">,</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nb">ARRAY</span><span class="p">[</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">],</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="k">DESCRIPTOR</span><span class="p">(</span><span class="n">index_column</span><span class="p">),</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="mi">10</span><span class="p">,</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">);</span><span class="w">
+</span></span></span></code></pre></div><p><strong>More Information</strong></p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/FLINK-38422">FLINK-38422</a></li>
+<li><a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-540%3A&#43;Support&#43;VECTOR_SEARCH&#43;in&#43;Flink&#43;SQL">FLIP-540</a></li>
+<li><a href="https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/dev/table/sql/queries/vector-search/">Vector Search</a></li>
+</ul>
+<h2 id="materialized-table">
+  Materialized Table
+  <a class="anchor" href="#materialized-table">#</a>
+</h2>
+<p><a href="https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/dev/table/materialized-table/overview/">Materialized Table</a> is a new table type introduced in Flink SQL, aimed at simplifying both batch and stream data pipelines, providing a consistent development experience. By specifying data freshness and query when creating Materialized Table, the engine automatically derives the schema for the materialized table and creates corresponding data refresh pipeline to achieve  [...]
+<p>From Flink 2.2, the FRESHNESS clause is not a mandatory part of the CREATE MATERIALIZED TABLE and
+CREATE OR ALTER MATERIALIZED TABLE DDL statements. Flink 2.2 introduces a new MaterializedTableEnricher
+interface. This provides a formal extension point for customizable default logic, allowing advanced
+users and vendors to implement &ldquo;smart&rdquo; default behaviors (e.g., inferring freshness from upstream tables).</p>
+<p>Besides this, users can use <code>DISTRIBUTED BY</code> or<code>DISTRIBUTED INTO</code> to support bucketing concept
+for Materialized tables. Users can use <code>SHOW MATERIALIZED TABLES</code> to show all Materialized tables.</p>
+<p>Take the following SQL statements as an example:</p>
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="k">CREATE</span><span class="w"> </span><span class="n">MATERIALIZED</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">my_materialized_table</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">PARTITIONED</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="p">(</span><span class="n">ds</span><span class="p">)</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">DISTRIBUTED</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="n">BUCKETS</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">FRESHNESS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">&#39;1&#39;</span><span class="w"> </span><span class="n">HOUR</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="k">AS</span><span class="w"> </span><span class="k">SELECT</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">ds</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="k">FROM</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">     </span><span class="p">...</span><span class="w">
+</span></span></span></code></pre></div><p><strong>More Information</strong></p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/FLINK-38532">FLINK-38532</a></li>
+<li><a href="https://issues.apache.org/jira/browse/FLINK-38311">FLINK-38311</a></li>
+<li><a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-542%3A&#43;Make&#43;materialized&#43;table&#43;DDL&#43;consistent&#43;with&#43;regular&#43;tables">FLIP-542</a></li>
+<li><a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-551%3A&#43;Make&#43;FRESHNESS&#43;Optional&#43;for&#43;Materialized&#43;Tables">FLIP-551</a></li>
+</ul>
+<h2 id="sinkupsertmaterializer-v2">
+  SinkUpsertMaterializer V2
+  <a class="anchor" href="#sinkupsertmaterializer-v2">#</a>
+</h2>
+<p>SinkUpsertMaterializer is an operator in Flink that reconciles out of order changelog events before
+sending them to an upsert sink. Performance of this operator degrades exponentially in some cases.
+Flink 2.2 introduces a new implementation that is optimized for such cases.</p>
+<p><strong>More Information</strong></p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/FLINK-38459">FLINK-38459</a></li>
+<li><a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-544%3A&#43;SinkUpsertMaterializer&#43;V2">FLIP-544</a></li>
+</ul>
+<h2 id="delta-join">
+  Delta Join
+  <a class="anchor" href="#delta-join">#</a>
+</h2>
+<p>In 2.1, Apache Flink has introduced a new delta join operator to mitigate the challenges caused by big state in regular joins. It replaces the large state maintained by regular joins with a bidirectional lookup-based join that directly reuses data from the source tables.</p>
+<p>Flink 2.2 enhances support for converting more SQL patterns into delta joins. Delta joins now support consuming CDC sources without DELETE operations, and allow projection and filter operations after the source. Additionally, delta joins include support for caching, which helps reduce requests to external storage.</p>
+<p>Currently, tables with <a href="https://fluss.apache.org/blog/fluss-open-source/">Apache Fluss (Incubating)</a> can be used as source tables for delta joins. You can find the table definitions and example query that can be optimized into delta joins in <a href="https://fluss.apache.org/docs/engine-flink/delta-joins/">Fluss</a>.</p>
+<p><strong>More Information</strong></p>
+<ul>
+<li><a href="https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/dev/table/tuning/#delta-joins">Delta Joins</a></li>
+<li><a href="https://fluss.apache.org/docs/engine-flink/delta-joins/">Delta Join in Fluss</a></li>
+</ul>
+<h2 id="sql-types">
+  SQL Types
+  <a class="anchor" href="#sql-types">#</a>
+</h2>
+<p>Before Flink 2.2, row types defined in SQL e.g. <code>SELECT CAST(f AS ROW&amp;lt;i NOT NULL&amp;gt;)</code> did ignore
+the <code>NOT NULL</code> constraint. This was more aligned with the SQL standard but caused many type
+inconsistencies and cryptic error message when working on nested data. For example, it prevented
+using rows in computed columns or join keys. The new behavior takes the nullability into consideration.
+The config option <code>table.legacy-nested-row-nullability</code> allows to restore the old behavior if required,
+but it is recommended to update existing queries that ignored constraints before.</p>
+<p>Casting to TIME type now considers the correct precision (0-3). Casting incorrect strings to time
+(e.g. where the hour component is higher than 24) leads to a runtime exception now. Casting between
+BINARY and VARBINARY should now correctly consider the target length.</p>
+<p><strong>More Information</strong></p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/FLINK-20539">FLINK-20539</a></li>
+<li><a href="https://issues.apache.org/jira/browse/FLINK-38181">FLINK-38181</a></li>
+</ul>
+<h2 id="use-uniquekeys-instead-of-upsertkeys-for-state-management">
+  Use UniqueKeys instead of Upsertkeys for state management
+  <a class="anchor" href="#use-uniquekeys-instead-of-upsertkeys-for-state-management">#</a>
+</h2>
+<p>This is considerable optimization and an breaking change for the StreamingMultiJoinOperator.
+As noted in the release notes, the operator was launched in an experimental state for Flink 2.1
+since we&rsquo;re working on relevant optimizations that could be breaking changes.</p>
+<p><strong>More Information</strong></p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/FLINK-38209">FLINK-38209</a></li>
+</ul>
+<h1 id="runtime">
+  Runtime
+  <a class="anchor" href="#runtime">#</a>
+</h1>
+<h2 id="balanced-tasks-scheduling">
+  Balanced Tasks Scheduling
+  <a class="anchor" href="#balanced-tasks-scheduling">#</a>
+</h2>
+<p>Flink 2.2 introduced a balanced tasks scheduling strategy to achieve task load balancing for TMs and reducing
+job bottlenecks.</p>
+<p><strong>More Information</strong></p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/FLINK-31757">FLINK-31757</a></li>
+<li><a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-370%3A&#43;Support&#43;Balanced&#43;Tasks&#43;Scheduling">FLIP-370</a></li>
+</ul>
+<h2 id="enhanced-job-history-retention-policies-for-historyserver">
+  Enhanced Job History Retention Policies for HistoryServer
+  <a class="anchor" href="#enhanced-job-history-retention-policies-for-historyserver">#</a>
+</h2>
+<p>Before Flink 2.2, HistoryServer supports only a quantity-based job archive retention policy and
+is insufficient for scenarios, requiring time-based retention or combined rules. Users can use
+the new configuration <code>historyserver.archive.retained-ttl</code> combining with <code>historyserver.archive.retained-jobs</code>
+to fulfill more scenario requirements.</p>
+<p><strong>More Information</strong></p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/FLINK-38229">FLINK-38229</a></li>
+<li><a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=332499857">FLIP-490</a></li>
+</ul>
+<h2 id="metrics">
+  Metrics
+  <a class="anchor" href="#metrics">#</a>
+</h2>
+<p>Since 2.2.0 users can now assign custom metric variables for each operator/transformation used in the
+Job. Those variables are later converted to tags/labels by the metric reporters, allowing users to
+tab/label specific operator&rsquo;s metrics. For example, you can use this to name and differentiate sources.</p>
+<p>Users can now control the level of details of checkpoint spans via <a href="https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/deployment/config/#traces-checkpoint-span-detail-level">traces.checkpoint.span-detail-level</a>.
+Highest levels report tree of spans for each task and subtask. Reported custom spans can now contain
+children spans. See more details in <a href="https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/ops/traces/">Traces</a>.</p>
+<p><strong>More Information</strong></p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/FLINK-38158">FLINK-38158</a></li>
+<li><a href="https://issues.apache.org/jira/browse/FLINK-38353">FLINK-38353</a></li>
+</ul>
+<h1 id="connectors">
+  Connectors
+  <a class="anchor" href="#connectors">#</a>
+</h1>
+<h2 id="introduce-ratelimiter-for-scan-source">
+  Introduce RateLimiter for Scan Source
+  <a class="anchor" href="#introduce-ratelimiter-for-scan-source">#</a>
+</h2>
+<p>Flink jobs frequently exchange data with external systems, which consumes their network bandwidth
+and CPU. When these resources are scarce, pulling data too aggressively can disrupt other workloads,
+such as the MySQL CDC connector. In Flink 2.2, we introduce a RateLimiter interface to provide request
+rate limiting for Scan Sources and connector developers can integrate with rate limiting frameworks
+to implement their own read restriction strategies. This feature is currently only available in the
+DataStream API.</p>
+<p><strong>More Information</strong></p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/FLINK-38497">FLINK-38497</a></li>
+<li><a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-535%3A&#43;Introduce&#43;RateLimiter&#43;to&#43;Source">FLIP-535</a></li>
+</ul>
+<h2 id="balanced-splits-assignment">
+  Balanced splits assignment
+  <a class="anchor" href="#balanced-splits-assignment">#</a>
+</h2>
+<p>SplitEnumerator is responsible for assigning splits, but it lacks visibility into the actual runtime
+status or distribution of these splits. This makes it impossible for SplitEnumerator to guarantee
+that the sharding is evenly distributed, and data skew is very likely to occur. From Flink 2.2,
+SplitEnumerator has the information of the splits distribution and provides the ability to evenly
+assign splits at runtime. For example, this feature can be used to address data skew issues in the Kafka
+connector.</p>
+<p><strong>More Information</strong></p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/FLINK-38564">FLINK-38564</a></li>
+<li><a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=373886480">FLIP-537</a></li>
+</ul>
+<h1 id="others-improvements">
+  Others Improvements
+  <a class="anchor" href="#others-improvements">#</a>
+</h1>
+<h2 id="pyflink">
+  PyFlink
+  <a class="anchor" href="#pyflink">#</a>
+</h2>
+<p>In Flink 2.2, we have added support of async function in Python DataStream API. This enables Python users to efficiently query external services in their Flink jobs, e.g. large-sized LLM which is typically deployed in a standalone GPU cluster, etc.</p>
+<p>Furthermore, we have provided comprehensive support to ensure the stability of external service access. On one hand, we support limiting the number of concurrent requests sent to the external service to avoid overwhelming it. On the other hand, we have also added retry support to tolerate temporary unavailability which maybe caused by network jitter or other transient issues.</p>
+<p>Here is a simple example showing how to use it:</p>
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">List</span>
+</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">ollama</span> <span class="kn">import</span> <span class="n">AsyncClient</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">pyflink.common</span> <span class="kn">import</span> <span class="n">Types</span><span class="p">,</span> <span class="n">Time</span><span class="p">,</span> <span class="n">Row</span>
+</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">pyflink.datastream</span> <span class="kn">import</span> <span class="p">(</span>
+</span></span><span class="line"><span class="cl">    <span class="n">StreamExecutionEnvironment</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl">    <span class="n">AsyncDataStream</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl">    <span class="n">AsyncFunction</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl">    <span class="n">RuntimeContext</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl">    <span class="n">CheckpointingMode</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"><span class="p">)</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">AsyncLLMRequest</span><span class="p">(</span><span class="n">AsyncFunction</span><span class="p">[</span><span class="n">Row</span><span class="p">,</span> <span class="nb">str</span><span class="p">]):</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">):</span>
+</span></span><span class="line"><span class="cl">        <span class="bp">self</span><span class="o">.</span><span class="n">_host</span> <span class="o">=</span> <span class="n">host</span>
+</span></span><span class="line"><span class="cl">        <span class="bp">self</span><span class="o">.</span><span class="n">_port</span> <span class="o">=</span> <span class="n">port</span>
+</span></span><span class="line"><span class="cl">  
+</span></span><span class="line"><span class="cl">    <span class="k">def</span> <span class="nf">open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">runtime_context</span><span class="p">:</span> <span class="n">RuntimeContext</span><span class="p">):</span>
+</span></span><span class="line"><span class="cl">        <span class="bp">self</span><span class="o">.</span><span class="n">_client</span> <span class="o">=</span> <span class="n">AsyncClient</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="s1">&#39;</span><span class="si">{}</span><span class="s1">:</span><span class="si">{}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span [...]
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">    <span class="k">async</span> <span class="k">def</span> <span class="nf">async_invoke</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">:</span> <span class="n">Row</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
+</span></span><span class="line"><span class="cl">        <span class="n">message</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&#34;role&#34;</span><span class="p">:</span> <span class="s2">&#34;user&#34;</span><span class="p">,</span> <span class="s2">&#34;content&#34;</span><span class="p">:</span> <span class="n">value</span><span class="o">.</span><span class="n">question</span><span class="p">}</span>
+</span></span><span class="line"><span class="cl">        <span class="n">question_id</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">id</span>
+</span></span><span class="line"><span class="cl">        <span class="n">ollam_response</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_client</span><span class="o">.</span><span class="n">chat</span><span class="p">(</span><span class="n">model</span><span class="o">=</span><span class="s2">&#34;qwen3:4b&#34;</span><span class="p">,</span> <span class="n">messages</span><span class="o">=</span><span class [...]
+</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="p">[</span>
+</span></span><span class="line"><span class="cl">            <span class="sa">f</span><span class="s2">&#34;Question ID </span><span class="si">{</span><span class="n">question_id</span><span class="si">}</span><span class="s2">: response: </span><span class="si">{</span><span class="n">ollam_response</span><span class="p">[</span><span class="s1">&#39;message&#39;</span><span class="p">][</span><span class="s1">&#39;content&#39;</span><span class="p">]</span><span class="si">}</span><s [...]
+</span></span><span class="line"><span class="cl">        <span class="p">]</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">    <span class="k">def</span> <span class="nf">timeout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">:</span> <span class="n">Row</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
+</span></span><span class="line"><span class="cl">        <span class="c1"># return a default value in case timeout</span>
+</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="p">[</span><span class="sa">f</span><span class="s2">&#34;Timeout for this question: </span><span class="si">{</span><span class="n">value</span><span class="o">.</span><span class="n">a</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">]</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">output_path</span><span class="p">):</span>
+</span></span><span class="line"><span class="cl">    <span class="n">env</span> <span class="o">=</span> <span class="n">StreamExecutionEnvironment</span><span class="o">.</span><span class="n">get_execution_environment</span><span class="p">()</span>
+</span></span><span class="line"><span class="cl">    <span class="n">env</span><span class="o">.</span><span class="n">enable_checkpointing</span><span class="p">(</span><span class="mi">30000</span><span class="p">,</span> <span class="n">CheckpointingMode</span><span class="o">.</span><span class="n">EXACTLY_ONCE</span><span class="p">)</span>
+</span></span><span class="line"><span class="cl">    <span class="n">ds</span> <span class="o">=</span> <span class="n">env</span><span class="o">.</span><span class="n">from_collection</span><span class="p">(</span>
+</span></span><span class="line"><span class="cl">        <span class="p">[</span>
+</span></span><span class="line"><span class="cl">            <span class="p">(</span><span class="s2">&#34;Who are you?&#34;</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
+</span></span><span class="line"><span class="cl">            <span class="p">(</span><span class="s2">&#34;Tell me a joke&#34;</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span>
+</span></span><span class="line"><span class="cl">            <span class="p">(</span><span class="s2">&#34;Tell me the result of comparing 0.8 and 0.11&#34;</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span>
+</span></span><span class="line"><span class="cl">        <span class="p">],</span>
+</span></span><span class="line"><span class="cl">        <span class="n">type_info</span><span class="o">=</span><span class="n">Types</span><span class="o">.</span><span class="n">ROW_NAMED</span><span class="p">([</span><span class="s2">&#34;question&#34;</span><span class="p">,</span> <span class="s2">&#34;id&#34;</span><span class="p">],</span> <span class="p">[</span><span class="n">Types</span><span class="o">.</span><span class="n">STRING</span><span class="p">(),</span> <span cl [...]
+</span></span><span class="line"><span class="cl">    <span class="p">)</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">    <span class="n">result_stream</span> <span class="o">=</span> <span class="n">AsyncDataStream</span><span class="o">.</span><span class="n">unordered_wait</span><span class="p">(</span>
+</span></span><span class="line"><span class="cl">        <span class="n">data_stream</span><span class="o">=</span><span class="n">ds</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl">        <span class="n">async_function</span><span class="o">=</span><span class="n">AsyncLLMRequest</span><span class="p">(),</span>
+</span></span><span class="line"><span class="cl">        <span class="n">timeout</span><span class="o">=</span><span class="n">Time</span><span class="o">.</span><span class="n">seconds</span><span class="p">(</span><span class="mi">100</span><span class="p">),</span>
+</span></span><span class="line"><span class="cl">        <span class="n">capacity</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl">        <span class="n">output_type</span><span class="o">=</span><span class="n">Types</span><span class="o">.</span><span class="n">STRING</span><span class="p">(),</span>
+</span></span><span class="line"><span class="cl">    <span class="p">)</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">    <span class="c1"># define the sink</span>
+</span></span><span class="line"><span class="cl">    <span class="n">result_stream</span><span class="o">.</span><span class="n">print</span><span class="p">()</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">    <span class="c1"># submit for execution</span>
+</span></span><span class="line"><span class="cl">    <span class="n">env</span><span class="o">.</span><span class="n">execute</span><span class="p">()</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&#34;__main__&#34;</span><span class="p">:</span>
+</span></span><span class="line"><span class="cl">    <span class="n">main</span><span class="p">(</span><span class="n">known_args</span><span class="o">.</span><span class="n">output</span><span class="p">)</span>
+</span></span></code></pre></div><p><strong>More Information</strong></p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/FLINK-38190">FLINK-38190</a></li>
+</ul>
+<h2 id="upgrade-commons-lang3-to-version-3180">
+  Upgrade commons-lang3 to version 3.18.0
+  <a class="anchor" href="#upgrade-commons-lang3-to-version-3180">#</a>
+</h2>
+<p>Upgrade commons-lang3 from 3.12.0 to 3.18.0 to mitigate CVE-2025-48924.</p>
+<p><strong>More Information</strong></p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/FLINK-38193">FLINK-38193</a></li>
+</ul>
+<h2 id="upgrade-protobuf-java-from-3x-to-4321-with-compatibility-patch-for-parquet-protobuf">
+  Upgrade protobuf-java from 3.x to 4.32.1 with compatibility patch for parquet-protobuf
+  <a class="anchor" href="#upgrade-protobuf-java-from-3x-to-4321-with-compatibility-patch-for-parquet-protobuf">#</a>
+</h2>
+<p>Flink now uses protobuf-java 4.32.1 (corresponding to Protocol Buffers version 32), upgrading from
+protobuf-java 3.21.7 (Protocol Buffers version 21). This major upgrade enables:</p>
+<ul>
+<li><strong>Protobuf Editions Support</strong>: Full support for the new <code>edition = &quot;2023&quot;</code> and <code>edition = &quot;2024&quot;</code>
+syntax introduced in Protocol Buffers v27+. Editions provide a unified approach that combines
+proto2 and proto3 functionality with fine-grained feature control.</li>
+<li><strong>Improved Proto3 Field Presence</strong>: Better handling of optional fields in proto3 without the
+limitations of older protobuf versions, eliminating the need to set <code>protobuf.read-default-values</code>
+to <code>true</code> for field presence checking.</li>
+<li><strong>Enhanced Performance</strong>: Leverages performance improvements and bug fixes from 11 Protocol
+Buffers releases (versions 22-32).</li>
+<li><strong>Modern Protobuf Features</strong>: Access to newer protobuf capabilities including Edition 2024
+features and improved runtime behavior.</li>
+</ul>
+<p>Users with existing proto2 and proto3 <code>.proto</code> files will continue to work without changes.</p>
+<p><strong>More Information</strong></p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/FLINK-38547">FLINK-38547</a></li>
+</ul>
+<h1 id="upgrade-notes">
+  Upgrade Notes
+  <a class="anchor" href="#upgrade-notes">#</a>
+</h1>
+<p>The Flink community tries to ensure that upgrades are as seamless as possible.
+However, certain changes may require users to make adjustments to certain parts
+of the program when upgrading to version 2.2. Please refer to the
+<a href="https://nightlies.apache.org/flink/flink-docs-release-2.2/release-notes/flink-2.2/">release notes</a>
+for a comprehensive list of adjustments to make and issues to check during the
+upgrading process.</p>
+<h1 id="list-of-contributors">
+  List of Contributors
+  <a class="anchor" href="#list-of-contributors">#</a>
+</h1>
+<p>The Apache Flink community would like to express gratitude to all the contributors who made this release possible:</p>
+<p>Alan Sheinberg, Aleksandr Iushmanov, AlexYinHan, Arvid Heise, CuiYanxiang, David Hotham, David Radley, Dawid Wysakowicz, Dian Fu, Etienne Chauchot, Ferenc Csaky, Gabor Somogyi, Gustavo de Morais, Hang Ruan, Hao Li, Hongshun Wang, Jackeyzhe, Jakub Stejskal, Jiaan Geng, Jinkun Liu, Juntao Zhang, Kaiqi Dong, Khaled Hammouda, Kumar Mallikarjuna, Kunni, Laffery, Mario Petruccelli, Martijn Visser, Mate Czagany, Maximilian Michels, Mika Naylor, Mingliang Liu, Myracle, Naci Simsek, Natea Eshe [...]
+</p>
+</article>
+
+          
+
+
+
+  
+    
+    <div class="edit-this-page">
+      <p>
+        <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
+      </p>
+      <p>
+        <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2025-12-04-release-2.2.0.md">
+          Edit This Page<i class="fa fa-edit fa-fw"></i> 
+        </a>
+      </p>
+    </div>
+
+        </section>
+        
+          <aside class="book-toc">
+            
+
+
+<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
+  <ul>
+    <li><a href="#flink-sql-improvements">Flink SQL Improvements</a>
+      <ul>
+        <li><a href="#realtime-ai-function">Realtime AI Function</a></li>
+        <li><a href="#vector-search">Vector Search</a></li>
+        <li><a href="#materialized-table">Materialized Table</a></li>
+        <li><a href="#sinkupsertmaterializer-v2">SinkUpsertMaterializer V2</a></li>
+        <li><a href="#delta-join">Delta Join</a></li>
+        <li><a href="#sql-types">SQL Types</a></li>
+        <li><a href="#use-uniquekeys-instead-of-upsertkeys-for-state-management">Use UniqueKeys instead of Upsertkeys for state management</a></li>
+      </ul>
+    </li>
+    <li><a href="#runtime">Runtime</a>
+      <ul>
+        <li><a href="#balanced-tasks-scheduling">Balanced Tasks Scheduling</a></li>
+        <li><a href="#enhanced-job-history-retention-policies-for-historyserver">Enhanced Job History Retention Policies for HistoryServer</a></li>
+        <li><a href="#metrics">Metrics</a></li>
+      </ul>
+    </li>
+    <li><a href="#connectors">Connectors</a>
+      <ul>
+        <li><a href="#introduce-ratelimiter-for-scan-source">Introduce RateLimiter for Scan Source</a></li>
+        <li><a href="#balanced-splits-assignment">Balanced splits assignment</a></li>
+      </ul>
+    </li>
+    <li><a href="#others-improvements">Others Improvements</a>
+      <ul>
+        <li><a href="#pyflink">PyFlink</a></li>
+        <li><a href="#upgrade-commons-lang3-to-version-3180">Upgrade commons-lang3 to version 3.18.0</a></li>
+        <li><a href="#upgrade-protobuf-java-from-3x-to-4321-with-compatibility-patch-for-parquet-protobuf">Upgrade protobuf-java from 3.x to 4.32.1 with compatibility patch for parquet-protobuf</a></li>
+      </ul>
+    </li>
+    <li><a href="#upgrade-notes">Upgrade Notes</a></li>
+    <li><a href="#list-of-contributors">List of Contributors</a></li>
+  </ul>
+</nav>
+
+
+          </aside>
+          <aside class="expand-toc hidden">
+            <a class="toc" onclick="expandToc()" href="javascript:void(0)">
+              <i class="fa fa-bars" aria-hidden="true"></i>
+            </a>
+          </aside>
+        
+      </main>
+
+      <footer>
+        
+
+
+<div class="separator"></div>
+<div class="panels">
+  <div class="wrapper">
+      <div class="panel">
+        <ul>
+          <li>
+            <a href="https://flink-packages.org/">flink-packages.org</a>
+          </li>
+          <li>
+            <a href="https://www.apache.org/">Apache Software Foundation</a>
+          </li>
+          <li>
+            <a href="https://www.apache.org/licenses/">License</a>
+          </li>
+          
+          
+          
+            
+          
+            
+          
+          
+
+          
+            
+              
+            
+          
+            
+              
+                <li>
+                  <a  href="/zh/">
+                    <i class="fa fa-globe" aria-hidden="true"></i>&nbsp;中文版
+                  </a>
+                </li>
+              
+            
+          
+       </ul>
+      </div>
+      <div class="panel">
+        <ul>
+          <li>
+            <a href="/what-is-flink/security">Security</a-->
+          </li>
+          <li>
+            <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
+          </li>
+          <li>
+            <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+          </li>
+       </ul>
+      </div>
+      <div class="panel icons">
+        <div>
+          <a href="/posts">
+            <div class="icon flink-blog-icon"></div>
+            <span>Flink blog</span>
+          </a>
+        </div>
+        <div>
+          <a href="https://github.com/apache/flink">
+            <div class="icon flink-github-icon"></div>
+            <span>Github</span>
+          </a>
+        </div>
+        <div>
+          <a href="https://twitter.com/apacheflink">
+            <div class="icon flink-twitter-icon"></div>
+            <span>Twitter</span>
+          </a>
+        </div>
+      </div>
+  </div>
+</div>
+
+<hr/>
+
+<div class="container disclaimer">
+  <p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
+</div>
+
+
+
+      </footer>
+    
+  </body>
+</html>
+
+
+
+
+
+
diff --git a/content/404.html b/content/404.html
index 52b875f3d..4bddc473d 100644
--- a/content/404.html
+++ b/content/404.html
@@ -15,7 +15,7 @@
 <link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/404.html" title="404 Page not found">
 
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
diff --git a/content/categories/index.html b/content/categories/index.html
index 4fa47f6d9..defd8d7b5 100644
--- a/content/categories/index.html
+++ b/content/categories/index.html
@@ -26,7 +26,7 @@
 <link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/categories/" title="Categories">
 
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <link rel="alternate" type="application/rss+xml" href="https://flink.apache.org/categories/index.xml" title="Apache Flink" />
 <!--
 Made with Book Theme
@@ -245,7 +245,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/documentation/flink-agents-master/index.html b/content/documentation/flink-agents-master/index.html
index d59467c90..98b463583 100644
--- a/content/documentation/flink-agents-master/index.html
+++ b/content/documentation/flink-agents-master/index.html
@@ -28,7 +28,7 @@
 <link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/documentation/flink-agents-master/" title="Agents Main (snapshot)">
 
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/documentation/flink-agents-stable/index.html b/content/documentation/flink-agents-stable/index.html
index 7833d669a..08beb578e 100644
--- a/content/documentation/flink-agents-stable/index.html
+++ b/content/documentation/flink-agents-stable/index.html
@@ -28,7 +28,7 @@
 <link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/documentation/flink-agents-stable/" title="Agents 0.1 (latest)">
 
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/documentation/flink-cdc-master/index.html b/content/documentation/flink-cdc-master/index.html
index a0a7a5a5e..7ece16ec2 100644
--- a/content/documentation/flink-cdc-master/index.html
+++ b/content/documentation/flink-cdc-master/index.html
@@ -28,7 +28,7 @@
 <link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/documentation/flink-cdc-master/" title="CDC Master (snapshot)">
 
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/documentation/flink-cdc-stable/index.html b/content/documentation/flink-cdc-stable/index.html
index bc8b451d1..95370f4ff 100644
--- a/content/documentation/flink-cdc-stable/index.html
+++ b/content/documentation/flink-cdc-stable/index.html
@@ -28,7 +28,7 @@
 <link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/documentation/flink-cdc-stable/" title="CDC 3.5 (stable)">
 
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/documentation/flink-kubernetes-operator-master/index.html b/content/documentation/flink-kubernetes-operator-master/index.html
index 83bc0985a..5de3019d7 100644
--- a/content/documentation/flink-kubernetes-operator-master/index.html
+++ b/content/documentation/flink-kubernetes-operator-master/index.html
@@ -28,7 +28,7 @@
 <link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/documentation/flink-kubernetes-operator-master/" title="Kubernetes Operator Main (snapshot)">
 
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/documentation/flink-kubernetes-operator-stable/index.html b/content/documentation/flink-kubernetes-operator-stable/index.html
index 66cf242d2..3e0ffd3c3 100644
--- a/content/documentation/flink-kubernetes-operator-stable/index.html
+++ b/content/documentation/flink-kubernetes-operator-stable/index.html
@@ -28,7 +28,7 @@
 <link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/documentation/flink-kubernetes-operator-stable/" title="Kubernetes Operator 1.13 (latest)">
 
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/documentation/flink-lts/index.html b/content/documentation/flink-lts/index.html
index 293a3a9f7..db8440a56 100644
--- a/content/documentation/flink-lts/index.html
+++ b/content/documentation/flink-lts/index.html
@@ -28,7 +28,7 @@
 <link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/documentation/flink-lts/" title="Flink 1.20 (LTS)">
 
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/documentation/flink-master/index.html b/content/documentation/flink-master/index.html
index 5be6b13ed..76e2ea730 100644
--- a/content/documentation/flink-master/index.html
+++ b/content/documentation/flink-master/index.html
@@ -28,7 +28,7 @@
 <link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/documentation/flink-master/" title="Flink Master (snapshot)">
 
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/documentation/flink-stable/index.html b/content/documentation/flink-stable/index.html
index db7b83f66..3ee15a38e 100644
--- a/content/documentation/flink-stable/index.html
+++ b/content/documentation/flink-stable/index.html
@@ -22,13 +22,13 @@
 <meta property="og:url" content="https://flink.apache.org/documentation/flink-stable/" /><meta property="article:section" content="documentation" />
 
 
-<title>Flink 2.1 (stable) | Apache Flink</title>
+<title>Flink 2.2 (stable) | Apache Flink</title>
 <link rel="manifest" href="/manifest.json">
 <link rel="icon" href="/favicon.png" type="image/x-icon">
-<link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/documentation/flink-stable/" title="Flink 2.1 (stable)">
+<link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/documentation/flink-stable/" title="Flink 2.2 (stable)">
 
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/documentation/flink-stateful-functions-master/index.html b/content/documentation/flink-stateful-functions-master/index.html
index ec3aaeb37..b14db52bb 100644
--- a/content/documentation/flink-stateful-functions-master/index.html
+++ b/content/documentation/flink-stateful-functions-master/index.html
@@ -28,7 +28,7 @@
 <link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/documentation/flink-stateful-functions-master/" title="Stateful Functions Master (snapshot)">
 
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/documentation/flink-stateful-functions-stable/index.html b/content/documentation/flink-stateful-functions-stable/index.html
index fcb063de8..26ceea957 100644
--- a/content/documentation/flink-stateful-functions-stable/index.html
+++ b/content/documentation/flink-stateful-functions-stable/index.html
@@ -28,7 +28,7 @@
 <link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/documentation/flink-stateful-functions-stable/" title="Stateful Functions 3.3 (stable)">
 
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/documentation/flinkml-master/index.html b/content/documentation/flinkml-master/index.html
index b9d3609c1..343ce3dcc 100644
--- a/content/documentation/flinkml-master/index.html
+++ b/content/documentation/flinkml-master/index.html
@@ -28,7 +28,7 @@
 <link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/documentation/flinkml-master/" title="ML Master (snapshot)">
 
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/documentation/flinkml-stable/index.html b/content/documentation/flinkml-stable/index.html
index 28988d1f1..ed36d4f28 100644
--- a/content/documentation/flinkml-stable/index.html
+++ b/content/documentation/flinkml-stable/index.html
@@ -28,7 +28,7 @@
 <link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/documentation/flinkml-stable/" title="ML 2.3 (stable)">
 
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -246,7 +246,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/documentation/index.html b/content/documentation/index.html
index 8a80ac6d2..e0bac2e38 100644
--- a/content/documentation/index.html
+++ b/content/documentation/index.html
@@ -26,7 +26,7 @@
 <link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/documentation/" title="Documentation">
 
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <link rel="alternate" type="application/rss+xml" href="https://flink.apache.org/documentation/index.xml" title="Apache Flink" />
 <!--
 Made with Book Theme
@@ -245,7 +245,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
diff --git a/content/downloads/index.html b/content/downloads/index.html
index 84a17296c..c656ca472 100644
--- a/content/downloads/index.html
+++ b/content/downloads/index.html
@@ -15,23 +15,23 @@
 
   <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="description" content="Apache Flink® Downloads # Apache Flink # Apache Flink® 2.1.1 is the latest stable release.
+<meta name="description" content="Apache Flink® Downloads # Apache Flink # Apache Flink® 2.2.0 is the latest stable release.
+Apache Flink 2.2.0 # Apache Flink 2.2.0 (asc, sha512)
+Apache Flink 2.2.0 Source Release (asc, sha512)
 Apache Flink 2.1.1 # Apache Flink 2.1.1 (asc, sha512)
 Apache Flink 2.1.1 Source Release (asc, sha512)
 Apache Flink 2.0.1 # Apache Flink 2.0.1 (asc, sha512)
 Apache Flink 2.0.1 Source Release (asc, sha512)
-Apache Flink 1.20.3 # Apache Flink 1.20.3 (asc, sha512)
-Apache Flink 1.20.3 Source Release (asc, sha512)
-Release Notes # Please have a look at the Release Notes for Apache Flink 1.">
+Apache Flink 1.20.3 # Apache Flink 1.">
 <meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Downloads" />
-<meta property="og:description" content="Apache Flink® Downloads # Apache Flink # Apache Flink® 2.1.1 is the latest stable release.
+<meta property="og:description" content="Apache Flink® Downloads # Apache Flink # Apache Flink® 2.2.0 is the latest stable release.
+Apache Flink 2.2.0 # Apache Flink 2.2.0 (asc, sha512)
+Apache Flink 2.2.0 Source Release (asc, sha512)
 Apache Flink 2.1.1 # Apache Flink 2.1.1 (asc, sha512)
 Apache Flink 2.1.1 Source Release (asc, sha512)
 Apache Flink 2.0.1 # Apache Flink 2.0.1 (asc, sha512)
 Apache Flink 2.0.1 Source Release (asc, sha512)
-Apache Flink 1.20.3 # Apache Flink 1.20.3 (asc, sha512)
-Apache Flink 1.20.3 Source Release (asc, sha512)
-Release Notes # Please have a look at the Release Notes for Apache Flink 1." />
+Apache Flink 1.20.3 # Apache Flink 1." />
 <meta property="og:type" content="article" />
 <meta property="og:url" content="https://flink.apache.org/downloads/" /><meta property="article:section" content="" />
 
@@ -42,7 +42,7 @@ Release Notes # Please have a look at the Release Notes for Apache Flink 1." />
 <link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/downloads/" title="Downloads">
 
 <link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
-<script defer src="/en.search.min.2d5cbf7adccdae7fc84bdb981d1fd004104716e01aadef148ccaff27d940b82b.js" integrity="sha256-LVy/etzNrn/IS9uYHR/QBBBHFuAare8UjMr/J9lAuCs="></script>
+<script defer src="/en.search.min.abf85d9735937528ba6cf27955e9593b504eef73d691ea86e6894279b8794bab.js" integrity="sha256-q/hdlzWTdSi6bPJ5VelZO1BO73PWkeqG5olCebh5S6s="></script>
 <!--
 Made with Book Theme
 https://github.com/alex-shpak/hugo-book
@@ -260,7 +260,7 @@ https://github.com/alex-shpak/hugo-book
           <li>
             
   
-    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.1 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 2.2 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
     </a>
   
 
@@ -542,7 +542,13 @@ under the License.
   Apache Flink
   <a class="anchor" href="#apache-flink">#</a>
 </h2>
-<p>Apache Flink® 2.1.1 is the latest stable release.</p>
+<p>Apache Flink® 2.2.0 is the latest stable release.</p>
+<h3 id="apache-flink-220">
+  Apache Flink 2.2.0
+  <a class="anchor" href="#apache-flink-220">#</a>
+</h3>
+<p><a href="https://www.apache.org/dyn/closer.lua/flink/flink-2.2.0/flink-2.2.0-bin-scala_2.12.tgz">Apache Flink 2.2.0</a> <a href="https://downloads.apache.org/flink/flink-2.2.0/flink-2.2.0-bin-scala_2.12.tgz.asc">(asc</a>, <a href="https://downloads.apache.org/flink/flink-2.2.0/flink-2.2.0-bin-scala_2.12.tgz.sha512">sha512)</a></p>
+<p><a href="https://www.apache.org/dyn/closer.lua/flink/flink-2.2.0/flink-2.2.0-src.tgz">Apache Flink 2.2.0 Source Release</a> <a href="https://downloads.apache.org/flink/flink-2.2.0/flink-2.2.0-src.tgz.asc">(asc</a>, <a href="https://downloads.apache.org/flink/flink-2.2.0/flink-2.2.0-src.tgz.sha512">sha512)</a></p>
 <h3 id="apache-flink-211">
   Apache Flink 2.1.1
   <a class="anchor" href="#apache-flink-211">#</a>
@@ -1100,17 +1106,17 @@ under the License.
 <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-xml" data-lang="xml"><span class="line"><span class="cl"><span class="nt">&lt;dependency&gt;</span>
 </span></span><span class="line"><span class="cl">  <span class="nt">&lt;groupId&gt;</span>org.apache.flink<span class="nt">&lt;/groupId&gt;</span>
 </span></span><span class="line"><span class="cl">  <span class="nt">&lt;artifactId&gt;</span>flink-java<span class="nt">&lt;/artifactId&gt;</span>
-</span></span><span class="line"><span class="cl">  <span class="nt">&lt;version&gt;</span>2.1.1<span class="nt">&lt;/version&gt;</span>
+</span></span><span class="line"><span class="cl">  <span class="nt">&lt;version&gt;</span>2.2.0<span class="nt">&lt;/version&gt;</span>
 </span></span><span class="line"><span class="cl"><span class="nt">&lt;/dependency&gt;</span>
 </span></span><span class="line"><span class="cl"><span class="nt">&lt;dependency&gt;</span>
 </span></span><span class="line"><span class="cl">  <span class="nt">&lt;groupId&gt;</span>org.apache.flink<span class="nt">&lt;/groupId&gt;</span>
 </span></span><span class="line"><span class="cl">  <span class="nt">&lt;artifactId&gt;</span>flink-streaming-java<span class="nt">&lt;/artifactId&gt;</span>
-</span></span><span class="line"><span class="cl">  <span class="nt">&lt;version&gt;</span>2.1.1<span class="nt">&lt;/version&gt;</span>
+</span></span><span class="line"><span class="cl">  <span class="nt">&lt;version&gt;</span>2.2.0<span class="nt">&lt;/version&gt;</span>
 </span></span><span class="line"><span class="cl"><span class="nt">&lt;/dependency&gt;</span>
 </span></span><span class="line"><span class="cl"><span class="nt">&lt;dependency&gt;</span>
 </span></span><span class="line"><span class="cl">  <span class="nt">&lt;groupId&gt;</span>org.apache.flink<span class="nt">&lt;/groupId&gt;</span>
 </span></span><span class="line"><span class="cl">  <span class="nt">&lt;artifactId&gt;</span>flink-clients<span class="nt">&lt;/artifactId&gt;</span>
-</span></span><span class="line"><span class="cl">  <span class="nt">&lt;version&gt;</span>2.1.1<span class="nt">&lt;/version&gt;</span>
+</span></span><span class="line"><span class="cl">  <span class="nt">&lt;version&gt;</span>2.2.0<span class="nt">&lt;/version&gt;</span>
 </span></span><span class="line"><span class="cl"><span class="nt">&lt;/dependency&gt;</span>
 </span></span></code></pre></div><h3 id="apache-flink-stateful-functions-1">
   Apache Flink Stateful Functions
@@ -1182,6 +1188,7 @@ The <code>statefun-flink-harness</code> dependency includes a local execution en
   <a class="anchor" href="#apache-flink-2">#</a>
 </h3>
 <ul>
+<li>Apache Flink 2.2.0 - 2025-12-04 (<a href="https://archive.apache.org/dist/flink/flink-2.2.0/flink-2.2.0-src.tgz">Source</a>, <a href="https://archive.apache.org/dist/flink/flink-2.2.0">Binaries</a>, <a href="https://nightlies.apache.org/flink/flink-docs-release-2.2">Docs</a>, <a href="https://nightlies.apache.org/flink/flink-docs-release-2.2/api/java">Javadocs</a>, <a href="https://nightlies.apache.org/flink/flink-docs-release-2.2/api/scala/index.html">Scaladocs</a> )</li>
 <li>Apache Flink 2.0.1 - 2025-11-10 (<a href="https://archive.apache.org/dist/flink/flink-2.0.1/flink-2.0.1-src.tgz">Source</a>, <a href="https://archive.apache.org/dist/flink/flink-2.0.1">Binaries</a>, <a href="https://nightlies.apache.org/flink/flink-docs-release-2.0">Docs</a>, <a href="https://nightlies.apache.org/flink/flink-docs-release-2.0/api/java">Javadocs</a>, <a href="https://nightlies.apache.org/flink/flink-docs-release-2.0/api/scala/index.html">Scaladocs</a> )</li>
 <li>Apache Flink 2.1.1 - 2025-11-10 (<a href="https://archive.apache.org/dist/flink/flink-2.1.1/flink-2.1.1-src.tgz">Source</a>, <a href="https://archive.apache.org/dist/flink/flink-2.1.1">Binaries</a>, <a href="https://nightlies.apache.org/flink/flink-docs-release-2.1">Docs</a>, <a href="https://nightlies.apache.org/flink/flink-docs-release-2.1/api/java">Javadocs</a>, <a href="https://nightlies.apache.org/flink/flink-docs-release-2.1/api/scala/index.html">Scaladocs</a> )</li>
 <li>Apache Flink 2.1.0 - 2025-07-31 (<a href="https://archive.apache.org/dist/flink/flink-2.1.0/flink-2.1.0-src.tgz">Source</a>, <a href="https://archive.apache.org/dist/flink/flink-2.1.0">Binaries</a>, <a href="https://nightlies.apache.org/flink/flink-docs-release-2.1">Docs</a>, <a href="https://nightlies.apache.org/flink/flink-docs-release-2.1/api/java">Javadocs</a>, <a href="https://nightlies.apache.org/flink/flink-docs-release-2.1/api/scala/index.html">Scaladocs</a> )</li>
@@ -1490,6 +1497,7 @@ The <code>statefun-flink-harness</code> dependency includes a local execution en
       <ul>
         <li><a href="#apache-flink">Apache Flink</a>
           <ul>
+            <li><a href="#apache-flink-220">Apache Flink 2.2.0</a></li>
             <li><a href="#apache-flink-211">Apache Flink 2.1.1</a></li>
             <li><a href="#apache-flink-201">Apache Flink 2.0.1</a></li>
             <li><a href="#apache-flink-1203">Apache Flink 1.20.3</a></li>
diff --git a/content/en.search-data.min.9569f37cda97a86fe426f11fcc661d63a088fedfed0b7ceea9f69a734bca5b54.js b/content/en.search-data.min.bf2cf522dbad268429f30edb53c011054da6f67779b4827d05c02c90c9b708e4.js
similarity index 97%
rename from content/en.search-data.min.9569f37cda97a86fe426f11fcc661d63a088fedfed0b7ceea9f69a734bca5b54.js
rename to content/en.search-data.min.bf2cf522dbad268429f30edb53c011054da6f67779b4827d05c02c90c9b708e4.js
index 4239d222d..a42c1e273 100644
--- a/content/en.search-data.min.9569f37cda97a86fe426f11fcc661d63a088fedfed0b7ceea9f69a734bca5b54.js
+++ b/content/en.search-data.min.bf2cf522dbad268429f30edb53c011054da6f67779b4827d05c02c90c9b708e4.js
@@ -58,7 +58,9 @@ Data pipelines serve a similar purpose as ETL jobs. They transform and enrich da
 The figure below depicts the difference between periodic ETL jobs and continuous data pipelines.
 What are the advantages of data pipelines? # The obvious advantage of continuous data pipelines over periodic ETL jobs is the reduced latency of moving data to its destination. Moreover, data pipelines are more versatile and can be employed for more use cases because they are able to continuously consume and emit data.
 How does Flink support data pipelines? # Many common data transformation or enrichment tasks can be addressed by Flink&rsquo;s SQL interface (or Table API) and its support for user-defined functions. Data pipelines with more advanced requirements can be realized by using the DataStream API which is more generic. Flink provides a rich set of connectors to various storage systems such as Kafka, Kinesis, Elasticsearch, and JDBC database systems. It also features continuous sources for file  [...]
-What are typical data pipeline applications? # Real-time search index building in e-commerce Continuous ETL in e-commerce `}),e.add({id:11,href:"/getting-started/with-flink-agents/",title:"With Flink Agents",section:"Getting Started",content:" Getting Started with Flink Agents # Read how you can get started with Flink Agents here. "}),e.add({id:12,href:"/downloads/",title:"Downloads",section:"Apache Flink® — Stateful Computations over Data Streams",content:` Apache Flink® Downloads # Apa [...]
+What are typical data pipeline applications? # Real-time search index building in e-commerce Continuous ETL in e-commerce `}),e.add({id:11,href:"/getting-started/with-flink-agents/",title:"With Flink Agents",section:"Getting Started",content:" Getting Started with Flink Agents # Read how you can get started with Flink Agents here. "}),e.add({id:12,href:"/downloads/",title:"Downloads",section:"Apache Flink® — Stateful Computations over Data Streams",content:` Apache Flink® Downloads # Apa [...]
+Apache Flink 2.2.0 # Apache Flink 2.2.0 (asc, sha512)
+Apache Flink 2.2.0 Source Release (asc, sha512)
 Apache Flink 2.1.1 # Apache Flink 2.1.1 (asc, sha512)
 Apache Flink 2.1.1 Source Release (asc, sha512)
 Apache Flink 2.0.1 # Apache Flink 2.0.1 (asc, sha512)
@@ -210,7 +212,7 @@ Apache Flink-shaded 18.0 Source Release # Apache Flink-shaded 18.0 Source Releas
 Apache Flink-connector-parent 1.1.0 Source release # Apache Flink-connector-parent 1.1.0 Source release Source Release (asc, sha512)
 Verifying Hashes and Signatures # Along with our releases, we also provide sha512 hashes in *.sha512 files and cryptographic signatures in *.asc files. The Apache Software Foundation has an extensive tutorial to verify hashes and signatures which you can follow by using any of these release-signing KEYS.
 Maven Dependencies # Apache Flink # You can add the following dependencies to your pom.xml to include Apache Flink in your project. These dependencies include a local execution environment and thus support local testing.
-Scala API: To use the Scala API, replace the flink-java artifact id with flink-scala_2.12 and flink-streaming-java with flink-streaming-scala_2.12. &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;2.1.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;2.1.1&lt;/version&gt; &lt;/depen [...]
+Scala API: To use the Scala API, replace the flink-java artifact id with flink-scala_2.12 and flink-streaming-java with flink-streaming-scala_2.12. &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;2.2.0&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;2.2.0&lt;/version&gt; &lt;/depen [...]
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;statefun-sdk&lt;/artifactId&gt; &lt;version&gt;3.3.0&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;statefun-flink-harness&lt;/artifactId&gt; &lt;version&gt;3.3.0&lt;/version&gt; &lt;/dependency&gt; The statefun-sdk dependency is the only one you will need to start developing applications. The statefun-flink-harness dependency incl [...]
 Apache Flink ML # You can add the following dependencies to your pom.xml to include Apache Flink ML in your project.
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-ml-core&lt;/artifactId&gt; &lt;version&gt;2.3.0&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-ml-iteration&lt;/artifactId&gt; &lt;version&gt;2.3.0&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-ml-lib&lt;/artifactId&gt; &lt;version&gt;2.3.0 [...]
@@ -219,7 +221,7 @@ Use artifact flink-ml-core in order to develop custom ML algorithms. Use artifac
 As of March 2023, the Flink community decided that upon release of a new Flink minor version, the community will perform one final bugfix release for resolved critical/blocker issues in the Flink minor version losing support. If 1.16.1 is the current release and 1.15.4 is the latest previous patch version, once 1.17.0 is released we will create a 1.15.5 to flush out any resolved critical/blocker issues.
 Note that the community is always open to discussing bugfix releases for even older versions. Please get in touch with the developers for that on the dev@flink.apache.org mailing list.
 All stable releases # All Flink releases are available via https://archive.apache.org/dist/flink/ including checksums and cryptographic signatures. At the time of writing, this includes the following versions:
-Apache Flink # Apache Flink 2.0.1 - 2025-11-10 (Source, Binaries, Docs, Javadocs, Scaladocs ) Apache Flink 2.1.1 - 2025-11-10 (Source, Binaries, Docs, Javadocs, Scaladocs ) Apache Flink 2.1.0 - 2025-07-31 (Source, Binaries, Docs, Javadocs, Scaladocs ) Apache Flink 2.0.0 - 2025-03-24 (Source, Binaries, Docs, Javadocs, Scaladocs ) Apache Flink 1.20.3 - 2025-10-09 (Source, Binaries, Docs, Javadocs, Scaladocs ) Apache Flink 1.20.2 - 2025-07-10 (Source, Binaries, Docs, Javadocs, Scaladocs ) A [...]
+Apache Flink # Apache Flink 2.2.0 - 2025-12-04 (Source, Binaries, Docs, Javadocs, Scaladocs ) Apache Flink 2.0.1 - 2025-11-10 (Source, Binaries, Docs, Javadocs, Scaladocs ) Apache Flink 2.1.1 - 2025-11-10 (Source, Binaries, Docs, Javadocs, Scaladocs ) Apache Flink 2.1.0 - 2025-07-31 (Source, Binaries, Docs, Javadocs, Scaladocs ) Apache Flink 2.0.0 - 2025-03-24 (Source, Binaries, Docs, Javadocs, Scaladocs ) Apache Flink 1.20.3 - 2025-10-09 (Source, Binaries, Docs, Javadocs, Scaladocs ) Ap [...]
 More Flink users are listed in the Powered by Flink directory in the project wiki. Please note that the list is not comprehensive. We only add users that explicitly ask to be listed.
 If you would you like to be included on this page, please reach out to the Flink user mailing list and let us know.
 Alibaba, the world&rsquo;s largest retailer, uses a fork of Flink called Blink to optimize search rankings in real time. Read more about Flink&rsquo;s role at Alibaba Amazon Managed Service for Apache Flink is a fully managed Amazon service that enables you to use an Apache Flink application to process and analyze streaming data. BetterCloud, a multi-SaaS management platform, uses Flink to surface near real-time intelligence from SaaS application activity. See BetterCloud at Flink Forwar [...]
@@ -496,7 +498,55 @@ By default, Flink takes 10% of the JVM heap size for network buffers, with a min
 Please refer to the Configuration Reference for details.
 My job fails with various exceptions from the HDFS/Hadoop code. What can I do? # The most common cause for that is that the Hadoop version in Flink&rsquo;s classpath is different than the Hadoop version of the cluster you want to connect to (HDFS / YARN).
 The easiest way to fix that is to pick a Hadoop-free Flink version and simply export the Hadoop path and classpath from the cluster.
-`}),e.add({id:41,href:"/2025/11/11/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/",title:"From Stream to Lakehouse: Kafka Ingestion with the Flink Dynamic Iceberg Sink",section:"Flink Blog",content:`Ingesting thousands of evolving Kafka topics into a lakehouse often creates complex, brittle pipelines that require constant manual intervention as its write patterns change. But what if your ingestion pipeline could adapt on its own, with zero downtime?
+`}),e.add({id:41,href:"/2025/12/04/apache-flink-2.2.0-advancing-real-time-data--ai-and-empowering-stream-processing-for-the-ai-era/",title:"Apache Flink 2.2.0: Advancing Real-Time Data + AI and Empowering Stream Processing for the AI Era",section:"Flink Blog",content:`The Apache Flink PMC is proud to announce the release of Apache Flink 2.2.0. Flink 2.2.0 further enriches AI capabilities, enhances materialized tables and the Connector framework, and improves batch processing and PyFlink  [...]
+Apache Flink 2.2 ushers in the AI era by seamlessly integrating real-time data processing with artificial intelligence. It introduces ML_PREDICT for large language model inference and VECTOR_SEARCH for real-time vector similarity search, empowering streaming AI applications. Enhanced features like Materialized Tables, Delta Joins, balanced task scheduling, and smarter connectors (including rate limiting and skew-aware split assignment) significantly boost performance, scalability, and re [...]
+Let&rsquo;s dive into the highlights.
+Flink SQL Improvements # Realtime AI Function # Apache Flink has supported leveraging LLM capabilities through the ML_PREDICT function in Flink SQL since version 2.1, enabling users to perform semantic analysis in a simple and efficient way. In Flink 2.2, the Table API also supports model inference operations that allow you to integrate machine learning models directly into your data processing pipelines. You can create models with specific providers (like OpenAI) and use them to make pr [...]
+Example:
+Creating and Using Models // 1. Set up the local environment EnvironmentSettings settings = EnvironmentSettings.inStreamingMode(); TableEnvironment tEnv = TableEnvironment.create(settings); // 2. Create a source table from in-memory data Table myTable = tEnv.fromValues( ROW(FIELD(&#34;text&#34;, STRING())), row(&#34;Hello&#34;), row(&#34;Machine Learning&#34;), row(&#34;Good morning&#34;) ); // 3. Create model tEnv.createModel( &#34;my_model&#34;, ModelDescriptor.forProvider(&#34;openai& [...]
+FLINK-38104 FLIP-526 Vector Search # Apache Flink has supported leveraging LLM capabilities through the ML_PREDICT function in Flink SQL since version 2.1. This integration has been technically validated in scenarios such as log classification and real-time question-answering systems. However, the current architecture allows Flink to only use embedding models to convert unstructured data (e.g., text, images) into high-dimensional vector features, which are then persisted to downstream st [...]
+Take the following SQL statements as an example:
+-- Basic usage SELECT * FROM input_table, LATERAL VECTOR_SEARCH( TABLE vector_table, input_table.vector_column, DESCRIPTOR(index_column), 10 ); -- With configuration options SELECT * FROM input_table, LATERAL VECTOR_SEARCH( TABLE vector_table, input_table.vector_column, DESCRIPTOR(index_column), 10, MAP[&#39;async&#39;, &#39;true&#39;, &#39;timeout&#39;, &#39;100s&#39;] ); -- Using named parameters SELECT * FROM input_table, LATERAL VECTOR_SEARCH( SEARCH_TABLE =&gt; TABLE vector_table, C [...]
+FLINK-38422 FLIP-540 Vector Search Materialized Table # Materialized Table is a new table type introduced in Flink SQL, aimed at simplifying both batch and stream data pipelines, providing a consistent development experience. By specifying data freshness and query when creating Materialized Table, the engine automatically derives the schema for the materialized table and creates corresponding data refresh pipeline to achieve the specified freshness.
+From Flink 2.2, the FRESHNESS clause is not a mandatory part of the CREATE MATERIALIZED TABLE and CREATE OR ALTER MATERIALIZED TABLE DDL statements. Flink 2.2 introduces a new MaterializedTableEnricher interface. This provides a formal extension point for customizable default logic, allowing advanced users and vendors to implement &ldquo;smart&rdquo; default behaviors (e.g., inferring freshness from upstream tables).
+Besides this, users can use DISTRIBUTED BY orDISTRIBUTED INTO to support bucketing concept for Materialized tables. Users can use SHOW MATERIALIZED TABLES to show all Materialized tables.
+Take the following SQL statements as an example:
+CREATE MATERIALIZED TABLE my_materialized_table PARTITIONED BY (ds) DISTRIBUTED INTO 5 BUCKETS FRESHNESS = INTERVAL &#39;1&#39; HOUR AS SELECT ds FROM ... More Information
+FLINK-38532 FLINK-38311 FLIP-542 FLIP-551 SinkUpsertMaterializer V2 # SinkUpsertMaterializer is an operator in Flink that reconciles out of order changelog events before sending them to an upsert sink. Performance of this operator degrades exponentially in some cases. Flink 2.2 introduces a new implementation that is optimized for such cases.
+More Information
+FLINK-38459 FLIP-544 Delta Join # In 2.1, Apache Flink has introduced a new delta join operator to mitigate the challenges caused by big state in regular joins. It replaces the large state maintained by regular joins with a bidirectional lookup-based join that directly reuses data from the source tables.
+Flink 2.2 enhances support for converting more SQL patterns into delta joins. Delta joins now support consuming CDC sources without DELETE operations, and allow projection and filter operations after the source. Additionally, delta joins include support for caching, which helps reduce requests to external storage.
+Currently, tables with Apache Fluss (Incubating) can be used as source tables for delta joins. You can find the table definitions and example query that can be optimized into delta joins in Fluss.
+More Information
+Delta Joins Delta Join in Fluss SQL Types # Before Flink 2.2, row types defined in SQL e.g. SELECT CAST(f AS ROW&amp;lt;i NOT NULL&amp;gt;) did ignore the NOT NULL constraint. This was more aligned with the SQL standard but caused many type inconsistencies and cryptic error message when working on nested data. For example, it prevented using rows in computed columns or join keys. The new behavior takes the nullability into consideration. The config option table.legacy-nested-row-nullabil [...]
+Casting to TIME type now considers the correct precision (0-3). Casting incorrect strings to time (e.g. where the hour component is higher than 24) leads to a runtime exception now. Casting between BINARY and VARBINARY should now correctly consider the target length.
+More Information
+FLINK-20539 FLINK-38181 Use UniqueKeys instead of Upsertkeys for state management # This is considerable optimization and an breaking change for the StreamingMultiJoinOperator. As noted in the release notes, the operator was launched in an experimental state for Flink 2.1 since we&rsquo;re working on relevant optimizations that could be breaking changes.
+More Information
+FLINK-38209 Runtime # Balanced Tasks Scheduling # Flink 2.2 introduced a balanced tasks scheduling strategy to achieve task load balancing for TMs and reducing job bottlenecks.
+More Information
+FLINK-31757 FLIP-370 Enhanced Job History Retention Policies for HistoryServer # Before Flink 2.2, HistoryServer supports only a quantity-based job archive retention policy and is insufficient for scenarios, requiring time-based retention or combined rules. Users can use the new configuration historyserver.archive.retained-ttl combining with historyserver.archive.retained-jobs to fulfill more scenario requirements.
+More Information
+FLINK-38229 FLIP-490 Metrics # Since 2.2.0 users can now assign custom metric variables for each operator/transformation used in the Job. Those variables are later converted to tags/labels by the metric reporters, allowing users to tab/label specific operator&rsquo;s metrics. For example, you can use this to name and differentiate sources.
+Users can now control the level of details of checkpoint spans via traces.checkpoint.span-detail-level. Highest levels report tree of spans for each task and subtask. Reported custom spans can now contain children spans. See more details in Traces.
+More Information
+FLINK-38158 FLINK-38353 Connectors # Introduce RateLimiter for Scan Source # Flink jobs frequently exchange data with external systems, which consumes their network bandwidth and CPU. When these resources are scarce, pulling data too aggressively can disrupt other workloads, such as the MySQL CDC connector. In Flink 2.2, we introduce a RateLimiter interface to provide request rate limiting for Scan Sources and connector developers can integrate with rate limiting frameworks to implement  [...]
+More Information
+FLINK-38497 FLIP-535 Balanced splits assignment # SplitEnumerator is responsible for assigning splits, but it lacks visibility into the actual runtime status or distribution of these splits. This makes it impossible for SplitEnumerator to guarantee that the sharding is evenly distributed, and data skew is very likely to occur. From Flink 2.2, SplitEnumerator has the information of the splits distribution and provides the ability to evenly assign splits at runtime. For example, this featu [...]
+More Information
+FLINK-38564 FLIP-537 Others Improvements # PyFlink # In Flink 2.2, we have added support of async function in Python DataStream API. This enables Python users to efficiently query external services in their Flink jobs, e.g. large-sized LLM which is typically deployed in a standalone GPU cluster, etc.
+Furthermore, we have provided comprehensive support to ensure the stability of external service access. On one hand, we support limiting the number of concurrent requests sent to the external service to avoid overwhelming it. On the other hand, we have also added retry support to tolerate temporary unavailability which maybe caused by network jitter or other transient issues.
+Here is a simple example showing how to use it:
+from typing import List from ollama import AsyncClient from pyflink.common import Types, Time, Row from pyflink.datastream import ( StreamExecutionEnvironment, AsyncDataStream, AsyncFunction, RuntimeContext, CheckpointingMode, ) class AsyncLLMRequest(AsyncFunction[Row, str]): def __init__(self, host, port): self._host = host self._port = port def open(self, runtime_context: RuntimeContext): self._client = AsyncClient(host=&#39;{}:{}&#39;.format(self._host, self._port)) async def async_in [...]
+FLINK-38190 Upgrade commons-lang3 to version 3.18.0 # Upgrade commons-lang3 from 3.12.0 to 3.18.0 to mitigate CVE-2025-48924.
+More Information
+FLINK-38193 Upgrade protobuf-java from 3.x to 4.32.1 with compatibility patch for parquet-protobuf # Flink now uses protobuf-java 4.32.1 (corresponding to Protocol Buffers version 32), upgrading from protobuf-java 3.21.7 (Protocol Buffers version 21). This major upgrade enables:
+Protobuf Editions Support: Full support for the new edition = &quot;2023&quot; and edition = &quot;2024&quot; syntax introduced in Protocol Buffers v27+. Editions provide a unified approach that combines proto2 and proto3 functionality with fine-grained feature control. Improved Proto3 Field Presence: Better handling of optional fields in proto3 without the limitations of older protobuf versions, eliminating the need to set protobuf.read-default-values to true for field presence checking [...]
+More Information
+FLINK-38547 Upgrade Notes # The Flink community tries to ensure that upgrades are as seamless as possible. However, certain changes may require users to make adjustments to certain parts of the program when upgrading to version 2.2. Please refer to the release notes for a comprehensive list of adjustments to make and issues to check during the upgrading process.
+List of Contributors # The Apache Flink community would like to express gratitude to all the contributors who made this release possible:
+Alan Sheinberg, Aleksandr Iushmanov, AlexYinHan, Arvid Heise, CuiYanxiang, David Hotham, David Radley, Dawid Wysakowicz, Dian Fu, Etienne Chauchot, Ferenc Csaky, Gabor Somogyi, Gustavo de Morais, Hang Ruan, Hao Li, Hongshun Wang, Jackeyzhe, Jakub Stejskal, Jiaan Geng, Jinkun Liu, Juntao Zhang, Kaiqi Dong, Khaled Hammouda, Kumar Mallikarjuna, Kunni, Laffery, Mario Petruccelli, Martijn Visser, Mate Czagany, Maximilian Michels, Mika Naylor, Mingliang Liu, Myracle, Naci Simsek, Natea Eshetu  [...]
+`}),e.add({id:42,href:"/2025/11/11/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/",title:"From Stream to Lakehouse: Kafka Ingestion with the Flink Dynamic Iceberg Sink",section:"Flink Blog",content:`Ingesting thousands of evolving Kafka topics into a lakehouse often creates complex, brittle pipelines that require constant manual intervention as its write patterns change. But what if your ingestion pipeline could adapt on its own, with zero downtime?
 Enter the Flink Dynamic Iceberg Sink, a powerful pattern for Apache Flink that allows users to write streaming data into multiple Iceberg tables—dynamically, efficiently, and with full schema evolution support. The sink can create and write to new tables based on instructions within the records themselves. As the schema of incoming records evolves, the dynamic sink automatically evolves the Iceberg table schema in the lakehouse. It can even adapt to changes in the table&rsquo;s partition [...]
 In this post, we&rsquo;ll guide you through building this exact system. We will start by exploring the limitations of traditional, static pipelines and then demonstrate how the dynamic sink pattern provides a robust, scalable solution. We&rsquo;ll focus on a common use case: ingesting Kafka data with dynamic Avro schemas sourced from a Confluent Schema Registry. By the end, you&rsquo;ll have a blueprint for building a scalable, self-adapting ingestion layer that eliminates operational to [...]
 The Building Block: A Simple Kafka-to-Iceberg Pipeline # Let&rsquo;s start with the basics. Our goal is to get data from a single Kafka topic into a corresponding Iceberg table.
@@ -531,11 +581,11 @@ Major development efforts were led by Maximilian Michels, with contributions fro
 Conclusion # In conclusion, the choice between a dynamic and a static Iceberg sink represents a trade-off between operational agility and the performance benefits of static bindings. While a simple, static Kafka-to-Iceberg sink is a performant and straightforward solution for stable data environments, the Dynamic Iceberg Sink pattern helps manage the complexity and velocity of frequently changing data.
 The most significant advantage of the Dynamic Sink is its ability to reduce operational burden by automating schema evolution. By leveraging a central schema registry, new schema versions can be published without any direct intervention in the Flink application. The dynamic sink detects these changes and adapts the downstream Iceberg table schema on the fly, eliminating the need for manual code changes, configuration updates, and disruptive job restarts. This creates a truly resilient an [...]
 Furthermore, the dynamic sink enables powerful, data-driven logic, such as routing records to different tables based on signals within the data itself. This facilitates advanced use cases like multi-tenant data segregation or event-type-based routing without needing to pre-configure every possible outcome.
-`}),e.add({id:42,href:"/2025/11/10/apache-flink-2.0.1-release-announcement/",title:"Apache Flink 2.0.1 Release Announcement",section:"Flink Blog",content:"The Apache Flink Community is pleased to announce the first bug fix release of the Flink 2.0 series.\nThis release includes 51 bug fixes, vulnerability fixes, and minor improvements for Flink 2.0. Below you will find a list of all bug fixes and improvements (excluding improvements to the build infrastructure and build stability). For a [...]
+`}),e.add({id:43,href:"/2025/11/10/apache-flink-2.0.1-release-announcement/",title:"Apache Flink 2.0.1 Release Announcement",section:"Flink Blog",content:"The Apache Flink Community is pleased to announce the first bug fix release of the Flink 2.0 series.\nThis release includes 51 bug fixes, vulnerability fixes, and minor improvements for Flink 2.0. Below you will find a list of all bug fixes and improvements (excluding improvements to the build infrastructure and build stability). For a [...]
 This release includes 25 bug fixes, vulnerability fixes, and minor improvements for Flink 2.1. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink 2.1.1 or higher.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;2.1.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;2.1.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-client [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==2.1.1 Release Notes # Release Notes - Flink - Version 2.1.1 Bug [FLINK-34094] - Document new AsyncScalarFunction [FLINK-38149] - Convert COLUMN_LIST to DescriptorType [FLINK-38219] - Manipulate state in MultiJoin with fixed row kind [FLINK-38220] - Adjust JoinToMultiJoinRule to support different types of source [FLINK-16686] - [State TTL] Make user class loader available in native RocksDB c [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==2.1.1 Release Notes # Release Notes - Flink - Version 2.1.1 Bug [FLINK-34094] - Document new AsyncScalarFunction [FLINK-38149] - Convert COLUMN_LIST to DescriptorType [FLINK-38219] - Manipulate state in MultiJoin with fixed row kind [FLINK-38220] - Adjust JoinToMultiJoinRule to support different types of source [FLINK-16686] - [State TTL] Make user class loader available in native RocksDB c [...]
 What is Apache Flink Agents # Apache Flink Agents is a new sub-project of Apache Flink for building event-driven AI agents directly on Flink’s streaming runtime. It unifies stream processing and autonomous agents in one framework, combining Flink&rsquo;s proven strengths &ndash; scale, low latency, fault tolerance, and state management &ndash; with agent capabilities &ndash; LLMs, tools, memory, and dynamic orchestration.
 Why Apache Flink Agents Matters # While AI agents have made rapid progress in interactive applications like chatbots and copilots, these systems typically operate in synchronous, one-off interactions. Many business use cases cannot wait for a user to prompt them into action. In industrial settings such as e-commerce, finance, IoT, and logistics, critical decisions must be made instantly in response to live events like a payment failure, a sensor anomaly, or a user click.
 To succeed in production, enterprise agents must be capable of:
@@ -550,11 +600,46 @@ Some functionalities may contain known or unknown issues. You can check the list
 You may reach out to us via:
 Join the Apache Flink Slack and ask for help in #flink-agents-user. Post feature requirements and bug reports at Github Issues. Share your use case and ideas at Github Discussions. List of Contributors # The Apache Flink community would like to thank each and every one of the contributors that have made this release possible:
 Adem Amen Thabti, Alan Z., Eugene, Hao Li, HuangXingBo, Kavishankarks, KeGu-069, Letao Jiang, Qingsheng Ren, Richard, Wenjin Xie, Xintong Song, Xu Huang, Xuannan, twosom, yanand0909, zhaomin1423
-`}),e.add({id:45,href:"/2025/10/09/apache-flink-1.20.3-release-announcement/",title:"Apache Flink 1.20.3 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the second bug fix release of the Flink 1.20 series.
+`}),e.add({id:46,href:"/2025/10/14/from-stream-to-lakehouse-kafka-ingestion-with-the-flink-dynamic-iceberg-sink/",title:"From Stream to Lakehouse: Kafka Ingestion with the Flink Dynamic Iceberg Sink",section:"Flink Blog",content:`Ingesting thousands of evolving Kafka topics into a lakehouse often creates complex, brittle pipelines that require constant manual intervention as its write patterns change. But what if your ingestion pipeline could adapt on its own, with zero downtime?
+Enter the Flink Dynamic Iceberg Sink, a powerful pattern for Apache Flink that allows users to write streaming data into multiple Iceberg tables—dynamically, efficiently, and with full schema evolution support. The sink can create and write to new tables based on instructions within the records themselves. As the schema of incoming records evolves, the dynamic sink automatically evolves the Iceberg table schema in the lakehouse. It can even adapt to changes in the table&rsquo;s partition [...]
+In this post, we&rsquo;ll guide you through building this exact system. We will start by exploring the limitations of traditional, static pipelines and then demonstrate how the dynamic sink pattern provides a robust, scalable solution. We&rsquo;ll focus on a common use case: ingesting Kafka data with dynamic Avro schemas sourced from a Confluent Schema Registry. By the end, you&rsquo;ll have a blueprint for building a scalable, self-adapting ingestion layer that eliminates operational to [...]
+The Building Block: A Simple Kafka-to-Iceberg Pipeline # Let&rsquo;s start with the basics. Our goal is to get data from a single Kafka topic into a corresponding Iceberg table.
+How to write to an Iceberg table with Flink # A standard Flink job for this task consists of three main components.
+Kafka Source: Connects to Kafka, subscribes to the topic, and distributes records for parallel processing.
+A RowData Converter: This component is responsible for schema-aware processing. It takes the raw byte[] records from Kafka, deserializes them, and transforms them into Flink&rsquo;s internal RowData format. The logic here can vary:
+Specific Logic: The converter could contain custom deserialization logic tailored to a single, known topic schema. Generic Logic: More powerful, generic pipelines use a schema registry. For formats like Avro or Protobuf, the converter fetches the correct writer&rsquo;s schema from the registry (using an ID from the message header or payload). It then deserializes the bytes into a generic structure like Avro&rsquo;s GenericRecord or Protobuf&rsquo;s DynamicMessage. This post will focus on [...]
+Iceberg Sink: Writes the stream of RowData to a specific Iceberg table, managing transactions and ensuring exactly-once semantics.
+This setup is simple, robust, and works perfectly for a single topic with a stable schema.
+Scaling Up: The Naive Approach # Now, what if we have thousands of topics? The logical next step is to create a dedicated processing graph (or DAG) for each topic-to-table mapping within a single Flink application.
+This looks good, but this static architecture cannot adapt to the changes: an Iceberg sink can only write to one predefined table, the table must exist beforehand, and its schema is fixed for the lifetime of the job.
+Scaling Up: Problems Ahead # This static model becomes an operational bottleneck when faced with real-world scenarios.
+Scenario 1: Schema Evolution When a producer adds a new field to an event schema, the running Flink job, which was configured with the old schema, cannot process the new field. It continues to write the events with the older schema. This requires a manual update to the job&rsquo;s code or configuration, followed by a job restart.
+The target Iceberg table&rsquo;s schema must also be updated before the job is restarted. Once restarted, the Flink job&rsquo;s Iceberg sink will use the new table schema, allowing it to write events correctly from both the old and new schemas.
+Scenario 2: A New Topic Appears A new microservice starts producing events. The Flink job has no idea this topic exists. You must add a new DAG to the job code and restart the application.
+Scenario 3: Dynamic Routing from a Single Topic A single Kafka topic contains multiple event types that need to be routed to different Iceberg tables. A static sink, hard-wired to one table, can&rsquo;t do this.
+All these scenarios require complex workarounds and a way to automatically restart the application whenever something changes.
+The Solution: The Flink Dynamic Iceberg Sink (&ldquo;Dynamic Sink&rdquo;) # Here’s the new architecture:
+This single, unified pipeline can ingest from any number of topics and write to any number of tables, automatically handling new topics and schema changes without restarts.
+A Look at the Implementation # Let&rsquo;s dive into the key components that make this dynamic behavior possible.
+Step 1: Preserving Kafka Metadata with KafkaRecord # To make dynamic decisions, our pipeline needs metadata. For example, to use the topic name as the table name, we need access to the topic! Standard deserializers often discard this, returning only the deserialized payload.
+To solve this, we first pass the raw Kafka ConsumerRecord through a lightweight wrapper. This wrapper converts it into a simple POJO, KafkaRecord, that preserves all the essential metadata for downstream processing.
+Here is the structure of our KafkaRecord class:
+public class KafkaRecord { public final String topic; public final byte[] key; public final byte[] value; public final Headers headers; .... } Now, every record flowing through our Flink pipeline is a KafkaRecord object, giving our converter access to the topic for table routing and the value (the raw byte payload) for schema discovery.
+Step 2: The KafkaRecordToDynamicRecordGenerator # It takes a KafkaRecord and performs the &ldquo;late binding&rdquo; of schema and table information. For each message, it:
+Extracts the schema ID from the value byte array (using the Confluent wire format). Fetches the writer&rsquo;s schema from Schema Registry. Deserializes the Avro payload and converts it into Flink&rsquo;s RowData. Bundles everything into a DynamicRecord, which contains: The TableIdentifier (created from kafkaRecord.topic). The org.apache.iceberg.Schema (converted from the Avro schema). The PartitionSpec (e.g., based on a timestamp field). The RowData payload itself. public class KafkaRec [...]
+Step 3: Assembling the Flink Job # // A single stream from ALL topics, producing KafkaRecord objects DataStream&lt;KafkaRecord&gt; sourceStream = env.fromSource(kafkaSource, ...); // A single sink that handles everything DynamicIcebergSink.forInput(sourceStream) .generator(new KafkaRecordToDynamicRecordGenerator()) .catalogLoader(getCatalogLoader()) .append(); Project Details: Availability, Credits, and Development # This powerful capability is now officially available as part of the Apa [...]
+Find more details on the Dynamic Sink here.
+Supported Versions # You can start using the dynamic sink with the following versions:
+Apache Iceberg 1.10.0 or newer. Full release notes here. Apache Flink 1.20, 2.0, and 2.1. Contributors # The journey began with a detailed project proposal authored by Peter Vary, which laid the groundwork for this development. You can read the original proposal here.
+Major development efforts were led by Maximilian Michels, with contributions from several community members.
+Conclusion # In conclusion, the choice between a dynamic and a static Iceberg sink represents a trade-off between operational agility and the performance benefits of static bindings. While a simple, static Kafka-to-Iceberg sink is a performant and straightforward solution for stable data environments, the Dynamic Iceberg Sink pattern helps manage the complexity and velocity of frequently changing data.
+The most significant advantage of the Dynamic Sink is its ability to reduce operational burden by automating schema evolution. By leveraging a central schema registry, new schema versions can be published without any direct intervention in the Flink application. The dynamic sink detects these changes and adapts the downstream Iceberg table schema on the fly, eliminating the need for manual code changes, configuration updates, and disruptive job restarts. This creates a truly resilient an [...]
+Furthermore, the dynamic sink enables powerful, data-driven logic, such as routing records to different tables based on signals within the data itself. This facilitates advanced use cases like multi-tenant data segregation or event-type-based routing without needing to pre-configure every possible outcome.
+`}),e.add({id:47,href:"/2025/10/09/apache-flink-1.20.3-release-announcement/",title:"Apache Flink 1.20.3 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the second bug fix release of the Flink 1.20 series.
 This release includes 16 bug fixes, vulnerability fixes, and minor improvements for Flink 1.20. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink 1.20.3 or higher.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.20.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;1.20.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clie [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.20.3 Release Notes # Release Notes - Flink - Version 1.20.3 Bug [FLINK-37181] - Failed to validate Maven wrapper SHA-256 on MacOS with mvnw [FLINK-37747] - GlobalCommitterOperator cannot commit after scaling writer/committer [FLINK-38035] - Security Vulnerability in PyFlink Logging Mechanism (PythonEnvUtils.java) [FLINK-38098] - When submitting a task with the flink run command, adding th [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.20.3 Release Notes # Release Notes - Flink - Version 1.20.3 Bug [FLINK-37181] - Failed to validate Maven wrapper SHA-256 on MacOS with mvnw [FLINK-37747] - GlobalCommitterOperator cannot commit after scaling writer/committer [FLINK-38035] - Security Vulnerability in PyFlink Logging Mechanism (PythonEnvUtils.java) [FLINK-38098] - When submitting a task with the flink run command, adding th [...]
 We encourage you to download the release and share your experience with the community through the Flink mailing lists or JIRA! We&rsquo;re looking forward to your feedback!
 Highlights # Flink 2.1 Support # The Flink Kubernetes Operator and Autoscaler 1.13.0 brings support for Flink 2.1 version.
 apiVersion: flink.apache.org/v1beta1 kind: FlinkDeployment metadata: name: basic-example spec: image: flink:2.1 flinkVersion: v2_1 # ... Structured YAML Configuration Support # Starting with Flink Kubernetes Operator 1.13.0, it is possible to define the flinkConfiguration in a structured YAML format as well. This feature operates independently of Flink’s core configuration handling and is therefore not affected by the defined Flink version.
@@ -563,12 +648,12 @@ Release Resources # The source artifacts and helm chart are available on the Dow
 $ helm repo add flink-kubernetes-operator-1.13.0 https://archive.apache.org/dist/flink/flink-kubernetes-operator-1.13.0/ $ helm install flink-kubernetes-operator flink-kubernetes-operator-1.13.0/flink-kubernetes-operator --set webhook.create=false You can also find official Kubernetes Operator Docker images of the new version on Dockerhub.
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # Andrei Kaigorodov, Attila Mészáros, David Kornel, Ferenc Csaky, Gabor Somogyi, GuoYu, Gyula Fora, Kumar Mallikarjuna, Mate Czagany, Michał Fijołek, nishita-09, Santwana Verma, schongloo, Yi Chen
-`}),e.add({id:47,href:"/2025/09/26/apache-flink-cdc-3.5.0-release-announcement/",title:"Apache Flink CDC 3.5.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is excited to announce the release of Flink CDC 3.5.0!
+`}),e.add({id:49,href:"/2025/09/26/apache-flink-cdc-3.5.0-release-announcement/",title:"Apache Flink CDC 3.5.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is excited to announce the release of Flink CDC 3.5.0!
 This release introduces new pipeline connectors for Apache Fluss and PostgreSQL, and improves usability in multi-tables (with frequent table structure changes) synchronization scenario, many issues encountered in the transform and Schema evolution frameworks have also been fixed.
 Flink CDC release packages are available at Releases Page, and documentations are available at Flink CDC documentation page. Looking forward to any feedback from the community through the Flink mailing lists or JIRA!
 Highlights # Pipeline Core # Schema Evolution Optimization # [FLINK-38045] During job failover, reissue the schema information stored in the state of Source to enhance the correctness of handling schema changes and make transform operator stateless. [FLINK-38243][FLINK-38244] Properly handle schema evolution for case-sensitive table and column names. Transform Enhancement # FLINK-38079] Enhance precision support for DATE and TIME types to improve temporal handling in built-in and user-de [...]
 Sachin Mittal, suhwan, Lanny Boarts, hql0312, yuanoOo, gongzhongqiang, Kunni, North Lin, suntectec, SeungMin, ChengJie1053, kangzai, Ihor Mielientiev, Vinh Pham, wudi, Marta Paes, Shawn Huang, zhangchao.doovvv, linjc13, Sergei Morozov, MOBIN, Junbo Wang, junmuz, lvyanquan, Thorne, zhuxt2015, Xin Gong, linjianchang, tbpure, Tianzhu Wen, yuxiqian.yxq, Naci Simsek, Мухутдинов Артур, Hongshun Wang, proletarians, wangjunbo, Chao Zhang, ouyangwulin, Hang Ruan, Junbo wang, yuxiqian, wuzexian
-`}),e.add({id:48,href:"/2025/07/31/apache-flink-2.1.0-ushers-in-a-new-era-of-unified-real-time-data--ai-with-comprehensive-upgrades/",title:"Apache Flink 2.1.0: Ushers in a New Era of Unified Real-Time Data + AI with Comprehensive Upgrades",section:"Flink Blog",content:`The Apache Flink PMC is proud to announce the release of Apache Flink 2.1.0. This marks a significant milestone in the evolution of the real-time data processing engine into a unified Data + AI platform. This release brin [...]
+`}),e.add({id:50,href:"/2025/07/31/apache-flink-2.1.0-ushers-in-a-new-era-of-unified-real-time-data--ai-with-comprehensive-upgrades/",title:"Apache Flink 2.1.0: Ushers in a New Era of Unified Real-Time Data + AI with Comprehensive Upgrades",section:"Flink Blog",content:`The Apache Flink PMC is proud to announce the release of Apache Flink 2.1.0. This marks a significant milestone in the evolution of the real-time data processing engine into a unified Data + AI platform. This release brin [...]
 Breakthroughs in Real-Time AI:
 Introduces AI Model DDL, enabling flexible management of AI models through Flink SQL and the Table API.
 Extends the ML_PREDICT Table-Valued Function (TVF), empowering real-time invocation of AI models within Flink SQL, laying the foundation for building end-to-end real-time AI workflows.
@@ -625,19 +710,19 @@ More Information
 FLINK-37760 Upgrade Notes # The Flink community tries to ensure that upgrades are as seamless as possible. However, certain changes may require users to make adjustments to certain parts of the program when upgrading to version 2.1. Please refer to the release notes for a comprehensive list of adjustments to make and issues to check during the upgrading process.
 List of Contributors # The Apache Flink community would like to express gratitude to all the contributors who made this release possible:
 Ahmed Hamdy, Alan Sheinberg, Aleksandr Iushmanov, Aleksandr Savonin, AlexYinHan, Ammu Parvathy, Anupam Aggarwal, Ao Li, Arvid Heise, Au-Miner, Benchao Li, Bonnie Varghese, Chris, David Moravek, David Radley, David Wang, Dawid Wysakowicz, Dian Fu, Efrat Levitan, Feng Jin, Ferenc Csaky, Francesco Di Chiara, Gabor Somogyi, Gunnar Morling, Gustavo de Morais, Hangxiang Yu, Hao Li, Hongjia Liang, HuangXingBo, Jiaan Geng, Jiabao Sun, Jiangjie (Becket) Qin, Joery, JunRuiLee, Junrui Lee, Juntao Z [...]
-`}),e.add({id:49,href:"/2025/07/10/apache-flink-1.19.3-release-announcement/",title:"Apache Flink 1.19.3 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the third bug fix release of the Flink 1.19 series.
+`}),e.add({id:51,href:"/2025/07/10/apache-flink-1.19.3-release-announcement/",title:"Apache Flink 1.19.3 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the third bug fix release of the Flink 1.19 series.
 This release includes 14 bug fixes, vulnerability fixes, and minor improvements for Flink 1.19. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink 1.19.3 or higher.
 Note: This release contains an improvement regarding how the Adaptive Scheduler works by default on Kubernetes deployments. Beforehand, in case of a downscaling, the Adaptive Scheduler was not striving to minimize the active TaskManager number, and free up resources even if it would have been possible. This logic is now changed and by default the Adaptive Scheduler will try to maximize TaskManager utilization during a downscale event to be able to minimize the necessary TaskManager number.
 Although this behavioral change pushes the boundaries of a patch release, the community agreed that the applied default is expected in the vast majority of use-cases. To keep the previous strategy, make sure you set the jobmanager.adaptive-scheduler.prefer-minimal-taskmanagers configuration option to false. For more details, please see FLINK-33977.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.19.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;1.19.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clie [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.19.3 Release Notes # Release Notes - Flink - Version 1.19.3 Bug [FLINK-34227] - Job doesn&#39;t disconnect from ResourceManager [FLINK-36549] - Using the ignore-parse-errors parameter in Debezium/Canal/Maxwell/Ogg JSON results in unexpected data loss. [FLINK-37505] - Pyflink is not able to handle the new YAML based configs [FLINK-37605] - SinkWriter may incorrectly infer end of input duri [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.19.3 Release Notes # Release Notes - Flink - Version 1.19.3 Bug [FLINK-34227] - Job doesn&#39;t disconnect from ResourceManager [FLINK-36549] - Using the ignore-parse-errors parameter in Debezium/Canal/Maxwell/Ogg JSON results in unexpected data loss. [FLINK-37505] - Pyflink is not able to handle the new YAML based configs [FLINK-37605] - SinkWriter may incorrectly infer end of input duri [...]
 This release includes 25 bug fixes, vulnerability fixes, and minor improvements for Flink 1.20. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink 1.20.2 or higher.
 Note: This release contains an improvement regarding how the Adaptive Scheduler works by default on Kubernetes deployments. Beforehand, in case of a downscaling, the Adaptive Scheduler was not striving to minimize the active TaskManager number, and free up resources even if it had been possible. This logic is now changed and by default the Adaptive Scheduler will try to maximize TaskManager utilization during a downscale event to be able to minimize the necessary TaskManager number.
 Although this behavioral change pushes the boundaries of a patch release, the community agreed that the applied default is expected in the vast majority of use cases. To keep the previous strategy, make sure you set the jobmanager.adaptive-scheduler.prefer-minimal-taskmanagers configuration option to false. For more details, please see FLINK-33977.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.20.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;1.20.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clie [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.20.2 Release Notes # Release Notes - Flink - Version 1.20.2 Bug [FLINK-30687] - FILTER not effect in count(*) [FLINK-34227] - Job doesn&#39;t disconnect from ResourceManager [FLINK-35117] - AsyncScalarFunction has a dependency issue. [FLINK-35687] - JSON_QUERY should return a well formatted nested objects/arrays for ARRAY&lt;STRING&gt; [FLINK-36549] - Using the ignore-parse-errors paramet [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.20.2 Release Notes # Release Notes - Flink - Version 1.20.2 Bug [FLINK-30687] - FILTER not effect in count(*) [FLINK-34227] - Job doesn&#39;t disconnect from ResourceManager [FLINK-35117] - AsyncScalarFunction has a dependency issue. [FLINK-35687] - JSON_QUERY should return a well formatted nested objects/arrays for ARRAY&lt;STRING&gt; [FLINK-36549] - Using the ignore-parse-errors paramet [...]
 We encourage you to download the release and share your experience with the community through the Flink mailing lists or JIRA! We&rsquo;re looking forward to your feedback!
 Highlights # Enhanced Error Visibility and Event Reporting # This release places a strong emphasis on improving the visibility and transparency of errors across the entire Flink Kubernetes Operator stack. These improvements aim to significantly enhance the user experience by making error diagnosis and resolution faster and more intuitive.
 Comprehensive Event Reporting: Events are now emitted across all critical stages of the job lifecycle-from controller errors within the operator itself, to failures during job startup, and even runtime exceptions within Flink jobs. This end-to-end observability ensures that users are promptly informed of any issues that occur.
@@ -650,7 +735,7 @@ Release Resources # The source artifacts and helm chart are available on the Dow
 $ helm repo add flink-kubernetes-operator-1.12.0 https://archive.apache.org/dist/flink/flink-kubernetes-operator-1.12.0/ $ helm install flink-kubernetes-operator flink-kubernetes-operator-1.12.0/flink-kubernetes-operator --set webhook.create=false You can also find official Kubernetes Operator Docker images of the new version on Dockerhub.
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # Andrea, Daren, David Kornel, Eduardas Kazakas, Gyula Fora, Nick Caballero, Rodrigo, Santwana Verma, Thomas Weise, ctrlaltdilj, pchoudhury22, siddr
-`}),e.add({id:52,href:"/2025/05/16/apache-flink-cdc-3.4.0-release-announcement/",title:"Apache Flink CDC 3.4.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is excited to announce the release of Flink CDC 3.4.0! This release introduces a new pipeline Connector for Apache Iceberg, and provides support for batch execution mode, many issues encountered in the transform and Schema evolution frameworks have also been fixed.
+`}),e.add({id:54,href:"/2025/05/16/apache-flink-cdc-3.4.0-release-announcement/",title:"Apache Flink CDC 3.4.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is excited to announce the release of Flink CDC 3.4.0! This release introduces a new pipeline Connector for Apache Iceberg, and provides support for batch execution mode, many issues encountered in the transform and Schema evolution frameworks have also been fixed.
 Flink CDC release packages are available at Releases Page, and documentations are available at Flink CDC documentation page. Looking forward to any feedback from the community through the Flink mailing lists or JIRA!
 Highlights # Pipeline Core # Schema Evolution Optimization # Optimized the situation where a large number of CreateTableEvents were sent and processed when a job is started. Optimized the situation where it takes a long time to wait when processing multiple SchemaChangeEvents. Transform Enhancement # Transform arithmetic functions support parameters of null and more numerical types. Fix failure of adding a new column that has the same column name with source table using transform. Batch  [...]
 Yarn Application Mode # Users can submit job though Cli with command ./bin/flink-cdc.sh -t yarn-application to run job in YARN application mode.
@@ -658,13 +743,13 @@ Pipeline Connectors # Apache Iceberg # Flink CDC 3.4.0 introduces 1 new pipeline
 Iceberg sink. Iceberg is a high-performance format for huge analytic tables. Iceberg brings the reliability and simplicity of SQL tables to big data, while making it possible for engines like Spark, Trino, Flink, Presto, Hive and Impala to safely work with the same tables, at the same time. In this version, Iceberg is supported to be the downstream for Pipeline jobs. Apache Paimon # Bump Paimon version to 1.0.1. Add support for writing to Append Only table. Write full changelog to Paimon [...]
 List of Contributors # We would like to express gratitude to all the contributors working on this release:
 911432, chenhongyu, ConradJam, Ferenc Csaky, gongzhongqiang, Hang Ruan, He Wang, hiliuxg, Hongshun Wang, Jason Zhang, Jiabao Sun, Junbo Wang, Jzjsnow, Kevin Caesar, Kevin Wang, Kunni, Leonard Xu, lidoudou1993, linjianchang, liuxiaodong, lvyanquan, lzshlzsh, MOBIN-F, moses, North Lin, Olivier, ouyangwulin, Petrichor, proletarians, qinghuanwang, Qingsheng Ren, Robin Moffatt, Runkang He, Sergei Morozov, Seung-Min Lee, Shawn Huang, stayrascal, Thorne, Timi, Umesh Dangat, Vincent-Woo, Vinh Ph [...]
-`}),e.add({id:53,href:"/2025/04/30/introducing-the-externalized-kudu-connector/",title:"Introducing the Externalized Kudu Connector",section:"Flink Blog",content:`We are pleased to announce the revival of a connector that makes it possible for Flink to interact with Apache Kudu. The original connector existed as part of the Apache Bahir project, which was moved into the attic. Despite this, we saw interest to keep the Kudu connector updated, hence the community agreed to externalize it a [...]
+`}),e.add({id:55,href:"/2025/04/30/introducing-the-externalized-kudu-connector/",title:"Introducing the Externalized Kudu Connector",section:"Flink Blog",content:`We are pleased to announce the revival of a connector that makes it possible for Flink to interact with Apache Kudu. The original connector existed as part of the Apache Bahir project, which was moved into the attic. Despite this, we saw interest to keep the Kudu connector updated, hence the community agreed to externalize it a [...]
 Highlights # The connector is built on the already existing Apache Bahir code. The existing DataStream connector is updated to Sink V2 API. New DataStream Source API connector implementation. The Table API source and sink connectors are now using the new Schema stack. The first released connector version is 2.0.0, and it supports Flink 1.19, and 1.20. DataStream Source API # The Source API implementation is a net new addition to the externalized connector, and it brings some interesting  [...]
 KuduSource&lt;Row&gt; source = KuduSource.&lt;Row&gt;builder() .setTableInfo(...) .setReaderConfig(...) .setRowResultConverter(new RowResultRowConverter()) .setBoundedness(Boundedness.CONTINUOUS_UNBOUNDED) .setDiscoveryPeriod(Duration.ofMinutes(1)) .build(); For more details and examples, see the DataStream connector documentation
 Table API Catalog # The connector includes a catalog implementation designed to manage metadata for your Kudu setup and facilitate table operations. With the Kudu catalog, you can access all existing Kudu tables directly through Flink SQL queries. Such catalog can be defined in Flink SQL, as part of the Java application, or via a YAML catalog descriptor as well. The below example shows a minimal example in Filnk SQL.
 CREATE CATALOG my_kudu_catalog WITH( &#39;type&#39; = &#39;kudu&#39;, &#39;masters&#39; = &#39;localhost:7051&#39;, &#39;default-database&#39; = &#39;default_database&#39; ); USE CATALOG my_kudu_catalog; For other Table API related topics and examples, see the Table API connector documentation
 Release Notes # Sub-task # [FLINK-34929] - Create &ldquo;flink-connector-kudu&rdquo; repository [FLINK-34930] - Move existing Kudu connector code from Bahir repo to dedicated repo [FLINK-34931] - Update Kudu DataStream connector to use Sink V2 [FLINK-35114] - Remove old Table API implementations, update Schema stack [FLINK-35350] - Add documentation for Kudu connector [FLINK-37389] - Add &ldquo;flink-sql-connector-kudu&rdquo; module New Feature # [FLINK-36855] - Implement Source API in K [...]
-`}),e.add({id:54,href:"/2025/03/24/apache-flink-2.0.0-a-new-era-of-real-time-data-processing/",title:"Apache Flink 2.0.0: A new Era of Real-Time Data Processing",section:"Flink Blog",content:`Today, the Flink PMC is proud to announce the official release of Apache Flink 2.0.0! This marks the first release in the Flink 2.x series and is the first major release since Flink 1.0 launched nine years ago. This version is the culmination of two years of meticulous preparation and collaboration, [...]
+`}),e.add({id:56,href:"/2025/03/24/apache-flink-2.0.0-a-new-era-of-real-time-data-processing/",title:"Apache Flink 2.0.0: A new Era of Real-Time Data Processing",section:"Flink Blog",content:`Today, the Flink PMC is proud to announce the official release of Apache Flink 2.0.0! This marks the first release in the Flink 2.x series and is the first major release since Flink 1.0 launched nine years ago. This version is the culmination of two years of meticulous preparation and collaboration, [...]
 In this release, 165 contributors have come together to complete 25 FLIPs (Flink Improvement Proposals) and 369 issues. We extend our heartfelt gratitude to all contributors for their invaluable contributions to this milestone release!
 Over the past decade, Apache Flink has undergone transformative evolution. In the 1.0 era, Flink pioneered Stateful Computations over Data Streams, making end-to-end exactly-once stateful stream processing a reality. Today, real-time processing with sub-second latency has become a standard expectation. However, users of real-time computing now face new challenges that hinder broader adoption. The costs of real-time computing have remained prohibitively high, both in terms of expensive re [...]
 In the 2.0 release, Flink introduces several innovative features that address key challenges in real-time data processing and align with the growing demands of modern applications, including AI-driven workflows.
@@ -722,7 +807,7 @@ Appendix # List of breaking change programming APIs # Removed Classes # org.apac
 /jobs/:jobid/vertices/:vertexid/subtasks/:subtaskindex/attempts/:attempt
 /jobs/:jobid/vertices/:vertexid/subtasktimes
 /jobs/:jobid/vertices/:vertexid/taskmanagers
-/jobs/:jobid/taskmanagers/:taskmanagerid/log-url In their responses, the &ldquo;host&rdquo;, &ldquo;subtasks.host&rdquo; or &ldquo;taskmanagers.host&rdquo; property is removed. List of removed CLI options # sql-client.sh: -u,--update &lt;SQL update statement&gt; is removed flink-client: run-application action is removed: Please use run -t kubernetes-application to run Kubernetes Application mode `}),e.add({id:55,href:"/2025/03/03/apache-flink-kubernetes-operator-1.11.0-release-announceme [...]
+/jobs/:jobid/taskmanagers/:taskmanagerid/log-url In their responses, the &ldquo;host&rdquo;, &ldquo;subtasks.host&rdquo; or &ldquo;taskmanagers.host&rdquo; property is removed. List of removed CLI options # sql-client.sh: -u,--update &lt;SQL update statement&gt; is removed flink-client: run-application action is removed: Please use run -t kubernetes-application to run Kubernetes Application mode `}),e.add({id:57,href:"/2025/03/03/apache-flink-kubernetes-operator-1.11.0-release-announceme [...]
 We encourage you to download the release and share your experience with the community through the Flink mailing lists or JIRA! We&rsquo;re looking forward to your feedback!
 Highlights # Flink 2.0 Preview Support # The Flink Kubernetes Operator and Autoscaler 1.11.0 brings support for Flink 2.0 preview version. This should help users to try out and verify the latest features in Flink planned for the 2.0 release.
 apiVersion: flink.apache.org/v1beta1 kind: FlinkDeployment metadata: name: basic-example spec: image: flink:2.0 flinkVersion: v2_0 ... Make sure to update the operator CRD to be able to deploy Flink 2.0 pipelines.
@@ -739,26 +824,26 @@ Release Resources # The source artifacts and helm chart are available on the Dow
 $ helm repo add flink-kubernetes-operator-1.11.0 https://archive.apache.org/dist/flink/flink-kubernetes-operator-1.11.0/ $ helm install flink-kubernetes-operator flink-kubernetes-operator-1.11.0/flink-kubernetes-operator --set webhook.create=false You can also find official Kubernetes Operator Docker images of the new version on Dockerhub.
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # Alan Zhang, Anupam Aggarwal, Dao Thanh Tung, Gunnar Morling, Gyula Fora, Keith Wall, Luca Castelli, Luke Chen, Matyas Orhidi, Maximilian Michels, Rui Fan, Sam Barker, Shuyi Chen, Thomas Cooper, big face cat, dsaisharath, fqaiser94, huyuanfeng, mateczagany, sharath1709, timsn, yangjf2019
-`}),e.add({id:56,href:"/2025/02/12/apache-flink-1.19.2-release-announcement/",title:"Apache Flink 1.19.2 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the second bug fix release of the Flink 1.19 series.
+`}),e.add({id:58,href:"/2025/02/12/apache-flink-1.19.2-release-announcement/",title:"Apache Flink 1.19.2 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the second bug fix release of the Flink 1.19 series.
 This release includes 73 bug fixes, vulnerability fixes, and minor improvements for Flink 1.19. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink 1.19.2.
 Note: Flink uses Apache Pekko for RPC communication, which in turn depends on Netty. In a recent Pekko update, its Netty dependency was upgraded from Netty 3 to Netty 4, allowing Flink to drop Netty 3 entirely. This change is important and desireable because Netty 3 has been end-of-life for several years and has a large number of known security vulnerabilities (CVEs). The Flink community agreed to include this update in a patch release, despite minor differences in default memory allocat [...]
 For a detailed overview of these differences and available configuration options, please refer to the relevant section of the Flink documentation.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.19.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;1.19.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clie [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.19.2 Release Notes # Release Notes - Flink - Version 1.19.2 Bug [FLINK-30899] - FileSystemTableSource with CSV format incorrectly selects fields if filtering for partition [FLINK-33117] - a wrong scala example in udfs page [FLINK-33192] - State memory leak in the Window Operator due to unregistered cleanup timer [FLINK-33571] - Bump json-path from 2.7.0 to 2.9.0 [FLINK-33936] - Outputting [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.19.2 Release Notes # Release Notes - Flink - Version 1.19.2 Bug [FLINK-30899] - FileSystemTableSource with CSV format incorrectly selects fields if filtering for partition [FLINK-33117] - a wrong scala example in udfs page [FLINK-33192] - State memory leak in the Window Operator due to unregistered cleanup timer [FLINK-33571] - Bump json-path from 2.7.0 to 2.9.0 [FLINK-33936] - Outputting [...]
 This release includes 75 bug fixes, vulnerability fixes, and minor improvements for Flink 1.20. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink 1.20.1.
 Note: Flink uses Apache Pekko for RPC communication, which in turn depends on Netty. In a recent Pekko update, its Netty dependency was upgraded from Netty 3 to Netty 4, allowing Flink to drop Netty 3 entirely. This change is important and desireable because Netty 3 has been end-of-life for several years and has a large number of known security vulnerabilities (CVEs). The Flink community agreed to include this update in a patch release, despite minor differences in default memory allocat [...]
 For a detailed overview of these differences and available configuration options, please refer to the relevant section of the Flink documentation.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.20.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;1.20.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clie [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.20.1 Release Notes # Release Notes - Flink - Version 1.20.1 Bug [FLINK-29065] - Flink v1.15.1 contains netty(version:3.10.6). There are many vulnerabilities, like CVE-2021-21409 etc. please confirm these version and fix. thx [FLINK-29797] - can&#39;t run a job on yarn, if set fs.default-scheme [FLINK-30899] - FileSystemTableSource with CSV format incorrectly selects fields if filtering fo [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.20.1 Release Notes # Release Notes - Flink - Version 1.20.1 Bug [FLINK-29065] - Flink v1.15.1 contains netty(version:3.10.6). There are many vulnerabilities, like CVE-2021-21409 etc. please confirm these version and fix. thx [FLINK-29797] - can&#39;t run a job on yarn, if set fs.default-scheme [FLINK-30899] - FileSystemTableSource with CSV format incorrectly selects fields if filtering fo [...]
 Flink CDC release packages are available at Releases Page, and documentations are available at Flink CDC documentation page. Looking forward to any feedback from the community through the Flink mailing lists or JIRA!
 Highlights # Connectors # New Pipeline Connectors # Flink CDC 3.3.0 introduces 2 new pipeline connectors:
 OceanBase sink MaxCompute sink MySQL # Support parsing gh-ost and pt-osc generated schema changes. Parse array-typed key index binlog created between 8.0.17 and 8.0.18 rightly. Support passing op_ts to meta field in Event. Support parsing the comments of table and column. Fixed deadlock after adding new tables. Fixed a bug that works with FLOAT type with precision. Apache Paimon # Apply default value options when apply add column change. Reuse sequence number when schema evolution happen [...]
 Cdcup: quickly start a testing job # Flink CDC 3.3.0 comes with a cdc-up utility script to set up a data integration PoC pipeline and required environment easily. Follow the latest quickstart steps to get started.
 Transform # Support timestampdiff, timestampadd, unix_timestamp function. Support to add metadata columns for data in the meta fields of DataChangeEvent at transform. Support to convert delete events as insert events. Add &ldquo;OpType&rdquo; metadata column in transform. Support for AI Model Integration for Data Processing. Improve get source field value by column name in PreTransformProcessor. Deduce primary key column types to be NOT NULL. List of Contributors # We would like to expre [...]
 ConradJam, Hang Ruan, Hongshun Wang, Jason Zhang, Junbo wang, Jzjsnow, Kunni, Leonard Xu, MOBIN, North Lin, Olivier, Petrichor, Robin Moffatt, Runkang He, Sergei Morozov, Seung-Min Lee, Shawn Huang, Thorne, Timi, Umesh Dangat, Wink, Xin Gong, hiliuxg, liuxiaodong, moses, ouyangwulin, stayrascal, wenmo, wudi, yuanoOo, yuxiqian, MOBIN-F, helloliuxg, jzjsnow, molin.lxd, wuzhiping, zhangchaoming.zcm
-`}),e.add({id:59,href:"/2024/12/05/introducing-the-new-prometheus-connector/",title:"Introducing the new Prometheus connector",section:"Flink Blog",content:`We are excited to announce a new sink connector that enables writing data to Prometheus (FLIP-312). This articles introduces the main features of the connector, and the reasoning behind design decisions.
+`}),e.add({id:61,href:"/2024/12/05/introducing-the-new-prometheus-connector/",title:"Introducing the new Prometheus connector",section:"Flink Blog",content:`We are excited to announce a new sink connector that enables writing data to Prometheus (FLIP-312). This articles introduces the main features of the connector, and the reasoning behind design decisions.
 This connector allows writing data to Prometheus using the Remote-Write push interface, which lets you write time-series data to Prometheus at scale.
 Motivations for a Prometheus connector # Prometheus is an efficient time-series database optimized for building real-time dashboards and alerts, typically in combination with Grafana or other visualization tools.
 Prometheus is commonly used for observability, to monitor compute resources, Kubernetes clusters, and applications. It can also be used to observe Flink clusters and jobs. The Flink Metric Reporter has exactly this purpose.
@@ -812,13 +897,13 @@ Considerations about data validation # Data validation would be a convenient fea
 However, validating well-formed input would come with a significant performance cost. It would require checking every Label with a regular expression, and checking the ordering of the list of Labels, on every single input record.
 Additionally, checking Sample ordering in the sink would not allow reordering, unless you introduce some form of longer windowing that would inevitably increase latency. If latency is not a problem, some form of reordering can be implemented by the user, upstream of the connector.
 List of Contributors # Lorenzo Nicora, Hong Teoh, Francisco Morillo, Karthi Thyagarajan
-`}),e.add({id:60,href:"/2024/11/27/apache-flink-cdc-3.2.1-release-announcement/",title:"Apache Flink CDC 3.2.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink CDC 3.2 series.
+`}),e.add({id:62,href:"/2024/11/27/apache-flink-cdc-3.2.1-release-announcement/",title:"Apache Flink CDC 3.2.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink CDC 3.2 series.
 The release contains fixes for several critical issues and improves compatibilities with Apache Flink. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users to upgrade to Flink CDC 3.2.1.
 Release Notes # Sub-task # [FLINK-36221] Add specification about CAST &hellip; AS &hellip; built-in functions Bug # [FLINK-35980] Add transform test coverage in Integrated / E2e tests [FLINK-35982] Transform metadata config doesn&rsquo;t work if no projection block was provided [FLINK-35985] SUBSTRING function not available in transform rules [FLINK-36105] CDC pipeline job could not restore from state in Flink 1.20 [FLINK-36247] Potential transaction leak during MySQL snapshot phase [FLI [...]
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # yuxiqian, Xin Gong, Hang Ruan, wudi, qg-lin, Timi988, lvyanquan, ConradJam, Runkang He, Junbo wang, MOBIN, Leonard Xu, Sergei Morozov, liuzeshan
-`}),e.add({id:61,href:"/2024/11/25/introducing-the-new-amazon-kinesis-data-stream-and-amazon-dynamodb-stream-sources/",title:"Introducing the new Amazon Kinesis Data Stream and Amazon DynamoDB Stream sources",section:"Flink Blog",content:`We are pleased to introduce updated versions of the Amazon Kinesis Data Stream and Amazon DynamoDB Stream sources. Built on the FLIP-27 source interface, these newer connectors introduce 7 new features and are compatible with Flink 2.0.
+`}),e.add({id:63,href:"/2024/11/25/introducing-the-new-amazon-kinesis-data-stream-and-amazon-dynamodb-stream-sources/",title:"Introducing the new Amazon Kinesis Data Stream and Amazon DynamoDB Stream sources",section:"Flink Blog",content:`We are pleased to introduce updated versions of the Amazon Kinesis Data Stream and Amazon DynamoDB Stream sources. Built on the FLIP-27 source interface, these newer connectors introduce 7 new features and are compatible with Flink 2.0.
 The new KinesisStreamsSource replaces the legacy FlinkKinesisConsumer; and the new DynamoDbStreamsSource replaces the legacy FlinkDynamoDBStreamsConsumer. The new connectors are available for Flink 1.19 onwards, and AWS Connector version 5.0.0 onwards. For more information, see the section on Dependencies.
 In this blogpost, we will dive into the motivation for the new source connectors, the improvements introduced, and provide migration guidance for users.
 Dependencies # Connector API Dependency Usage Amazon Kinesis Data Streams source DataStream
@@ -840,7 +925,7 @@ Fig. 1 - Illustration of uniform resharding event in Kinesis Data Stream from 2
 The diagram below illustrates what could happen when records with a given ordering within the same partition key are written to the stream.
 Fig. 2 - Illustration of record distribution within a Kinesis Data Stream after a resharding operation. As we can see, to ensure that records from the pk2 are read in order, we need to ensure that the shards are read in order of Shard 0, then Shard 3, then Shard 6. This can be more easily understood as: All parent shards must be fully read before children shards can be read.
 The new KinesisStreamsSource ensures that parent shards are read completely before reading children shards, and so ensures that record ordering is maintained even after a resharding operation on the stream.
-`}),e.add({id:62,href:"/2024/10/25/apache-flink-kubernetes-operator-1.10.0-release-announcement/",title:"Apache Flink Kubernetes Operator 1.10.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to announce the release of Flink Kubernetes Operator 1.10.0!
+`}),e.add({id:64,href:"/2024/10/25/apache-flink-kubernetes-operator-1.10.0-release-announcement/",title:"Apache Flink Kubernetes Operator 1.10.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to announce the release of Flink Kubernetes Operator 1.10.0!
 The release includes several improvements to the autoscaler, and introduces a new Kubernetes custom resource called FlinkStateSnapshot to manage job snapshots. The process of job upgrades has also been enhanced which makes it possible to now use the last-state upgrade mode with session jobs.
 We encourage you to download the release and share your experience with the community through the Flink mailing lists or JIRA! We&rsquo;re looking forward to your feedback!
 Highlights # FlinkStateSnapshot # With this version comes also a new custom resource called FlinkStateSnapshot. This is used to describe savepoint or checkpoint for a Flink job. The savepoint/checkpoint fields found in FlinkDeployment and FlinkSessionJob status are therefore deprecated, and the operator will create new FlinkStateSnapshot resources for periodic, update and manual savepoints/checkpoints.
@@ -855,7 +940,7 @@ Release Resources # The source artifacts and helm chart are available on the Dow
 $ helm repo add flink-kubernetes-operator-1.10.0 https://archive.apache.org/dist/flink/flink-kubernetes-operator-1.10.0/ $ helm install flink-kubernetes-operator flink-kubernetes-operator-1.10.0/flink-kubernetes-operator --set webhook.create=false You can also find official Kubernetes Operator Docker images of the new version on Dockerhub.
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # Angela Chen, Ferenc Csaky, Gyula Fora, Mate Czagany, Matyas Orhidi, Naresh Kumar Reddy Gaddam, Roc Marshal, Rui Fan, Sam Barker, Yuepeng Pan, big face cat, chenyuzhi459, kartik-3513, r-sidd, 阿洋
-`}),e.add({id:63,href:"/2024/10/23/preview-release-of-apache-flink-2.0/",title:"Preview Release of Apache Flink 2.0",section:"Flink Blog",content:`The Apache Flink community is actively preparing Flink 2.0, the first major release since Flink 1.0 launched 8 years ago. As a significant milestone, Flink 2.0 is set to introduce numerous innovative features and improvements, along with some compatibility-breaking changes. To facilitate early adaptation to these changes for our users and part [...]
+`}),e.add({id:65,href:"/2024/10/23/preview-release-of-apache-flink-2.0/",title:"Preview Release of Apache Flink 2.0",section:"Flink Blog",content:`The Apache Flink community is actively preparing Flink 2.0, the first major release since Flink 1.0 launched 8 years ago. As a significant milestone, Flink 2.0 is set to introduce numerous innovative features and improvements, along with some compatibility-breaking changes. To facilitate early adaptation to these changes for our users and part [...]
 NOTICE: Flink 2.0 Preview is not a stable release and should not be used in production environments. While this preview includes most of the breaking changes planned for Flink 2.0, the final release may still subject to additional modifications.
 Breaking Changes # API # The following sets of APIs have been completely removed.
 DataSet API. Please migrate to DataStream API, or Table API/SQL if applicable. See also How to Migrate from DataSet to DataStream. Scala DataStream and DataSet API. Please migrate to the Java DataStream API. SourceFuction, SinkFunction and Sink V1. Please migrate to Source and Sink V2. TableSoure and TableSink. Please migrate to DynamicTableSource and DynamicTableSink. See also User-defined Sources &amp; Sinks. TableSchema, TableColumn and Types. Please migrate to Schema, Column and Data [...]
@@ -882,7 +967,7 @@ Appendix # List of breaking change programming APIs # Removed Classes # org.apac
 /jobs/:jobid/vertices/:vertexid/subtasks/:subtaskindex/attempts/:attempt
 /jobs/:jobid/vertices/:vertexid/subtasktimes
 /jobs/:jobid/vertices/:vertexid/taskmanagers
-/jobs/:jobid/taskmanagers/:taskmanagerid/log-url In their responses, the &ldquo;host&rdquo;, &ldquo;subtasks.host&rdquo; or &ldquo;taskmanagers.host&rdquo; property is removed. List of removed CLI options # sql-client.sh: -u,--update &lt;SQL update statement&gt; is removed flink-client: run-application action is removed: Please use run -t kubernetes-application to run Kubernetes Application mode `}),e.add({id:64,href:"/2024/09/05/apache-flink-cdc-3.2.0-release-announcement/",title:"Apach [...]
+/jobs/:jobid/taskmanagers/:taskmanagerid/log-url In their responses, the &ldquo;host&rdquo;, &ldquo;subtasks.host&rdquo; or &ldquo;taskmanagers.host&rdquo; property is removed. List of removed CLI options # sql-client.sh: -u,--update &lt;SQL update statement&gt; is removed flink-client: run-application action is removed: Please use run -t kubernetes-application to run Kubernetes Application mode `}),e.add({id:66,href:"/2024/09/05/apache-flink-cdc-3.2.0-release-announcement/",title:"Apach [...]
 Flink CDC release packages are available at Releases Page, and documentations are available at Flink CDC documentation page. Looking forward to any feedback from the community through the Flink mailing lists or JIRA!
 Highlights # Connectors # New Pipeline Connectors # Flink CDC 3.2.0 introduces 1 new pipeline connector:
 Elasticsearch sink (verified on Elasticsearch 6.8, 7.10, and 8.12) Apache Paimon # Paimon connector has bumped its dependency to an up-to-date version and could benefit from all bug fixes and improvements. Also, there are other improvements including:
@@ -903,7 +988,7 @@ transform: - source-table: db.tbl projection: &#34;fmt(&#39;id -&gt; %d&#39;, id
 Complex Routing Rules # Route operator has been improved to allow declaring more complicated route topologies:
 Routing one table to multiple sink tables (broadcasting) is supported now. One can define multiple parallel routing rules in batch with pattern replacing symbols. List of Contributors # We would like to express gratitude to all the contributors working on this release:
 ChengJie1053, ConradJam, FangXiangmin, GOODBOY008, Hang Ruan, He Wang, Hongshun Wang, Jiabao Sun, Joao Boto, Junbo wang, Kunni, Laffery, Leonard Xu, MOBIN, Muhammet Orazov, North Lin, PONYLEE, Paul Lin, Qingsheng Ren, SeungMin, Shawn Huang, Thorne, Wink, Xie Yi, Xin Gong, Zhongmin Qiao, Zmm, gong, gongzhongqiang, hk__lrzy, joyCurry30, lipl, lvyanquan, ouyangwulin, skylines, wuzexian, yanghuaiGit, yux, yuxiqian, 鼎昕
-`}),e.add({id:65,href:"/2024/08/02/announcing-the-release-of-apache-flink-1.20/",title:"Announcing the Release of Apache Flink 1.20",section:"Flink Blog",content:`The Apache Flink PMC is pleased to announce the release of Apache Flink 1.20.0. As usual, we are looking at a packed release with a wide variety of improvements and new features. Overall, 142 people contributed to this release completing 13 FLIPs and 300+ issues. Thank you!
+`}),e.add({id:67,href:"/2024/08/02/announcing-the-release-of-apache-flink-1.20/",title:"Announcing the Release of Apache Flink 1.20",section:"Flink Blog",content:`The Apache Flink PMC is pleased to announce the release of Apache Flink 1.20.0. As usual, we are looking at a packed release with a wide variety of improvements and new features. Overall, 142 people contributed to this release completing 13 FLIPs and 300+ issues. Thank you!
 Let&rsquo;s dive into the highlights.
 Standing on the Eve of Apache Flink 2.0 # Flink 1.0 was released eight years ago. Since several months, the community is actively planning and taking steps towards the next major release. The new 1.20 release is planned to be the last minor release before Flink 2.0, which is anticipated by the end of 2024.
 Start from Flink 1.19, the community has decided to officially deprecate multiple APIs that were approaching end of life for a while. In 1.20, we further sorted through all relevant APIs that might need to be replaced or deprecated to clear the way for the 2.0 release:
@@ -959,7 +1044,7 @@ More Information
 FLINK-35461 FLINK-35473 Checkpointing Options Recovery Options State Backend Options State Changelog Options Latency-track Options Upgrade Notes # The Flink community tries to ensure that upgrades are as seamless as possible. However, certain changes may require users to make adjustments to certain parts of the program when upgrading to version 1.20. Please refer to the release notes for a comprehensive list of adjustments to make and issues to check during the upgrading process.
 List of Contributors # The Apache Flink community would like to express gratitude to all the contributors who made this release possible:
 Ahmed Hamdy, Alan Sheinberg, Aleksandr Pilipenko, Alexander Fedulov, Andrey Gaskov, Antonio Vespoli, Anupam Aggarwal, Barak Ben-Nathan, Benchao Li, Brad, Cheng Pan, Chesnay Schepler, DamonXue, Danny Cranmer, David Christle, David Moravek, David Schlosnagle, Dawid Wysakowicz, Dian Fu, Dmitriy Linevich, Elphas Toringepi, Emre Kartoglu, Fang Yong, Feng Jin, Ferenc Csaky, Frank Yin, Gabor Somogyi, Gyula Fora, HCTommy, Hangxiang Yu, Hanyu Zheng, Hao Li, Hong Liang Teoh, Hong Teoh, HuangXingBo [...]
-`}),e.add({id:66,href:"/2024/07/02/apache-flink-kubernetes-operator-1.9.0-release-announcement/",title:"Apache Flink Kubernetes Operator 1.9.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to announce the release of Flink Kubernetes Operator 1.9.0!
+`}),e.add({id:68,href:"/2024/07/02/apache-flink-kubernetes-operator-1.9.0-release-announcement/",title:"Apache Flink Kubernetes Operator 1.9.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to announce the release of Flink Kubernetes Operator 1.9.0!
 The release includes many improvements to the autoscaler and standalone autoscaler, as well as memory optimizations to the operator. There was also a lot of progress made to translate documentation to Chinese.
 We encourage you to download the release and share your experience with the community through the Flink mailing lists or JIRA! We&rsquo;re looking forward to your feedback!
 Highlights # Operator Optimizations # Many improvements and fixes are included in this release to reduce overall memory usage of the operator including the introduction of jemalloc as the default memory allocator to reduce memory fragmentation.
@@ -973,17 +1058,17 @@ Release Resources # The source artifacts and helm chart are available on the Dow
 $ helm repo add flink-kubernetes-operator-1.9.0 https://archive.apache.org/dist/flink/flink-kubernetes-operator-1.9.0/ $ helm install flink-kubernetes-operator flink-kubernetes-operator-1.9.0/flink-kubernetes-operator --set webhook.create=false You can also find official Kubernetes Operator Docker images of the new version on Dockerhub.
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # Alexander Fedulov, Anupam Aggarwal, Cancai Cai, ConradJam, Ferenc Csaky, Gabor Somogyi, Gyula Fora, Marton Balassi, Matt Braymer-Hayes, Maximilian Michels, Márton Balassi, Naci Simsek, Rui Fan, Sergey Nuyanzin, Xin Hao, Yarden Shoham, caicancai, chenyuzhi459, gengbiao.gb, luismacosta, nicolas.fraison@datadoghq.com, soulzz, timsn, wenbingshen, zhou-jiang
-`}),e.add({id:67,href:"/2024/06/18/apache-flink-cdc-3.1.1-release-announcement/",title:"Apache Flink CDC 3.1.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink CDC 3.1 series.
+`}),e.add({id:69,href:"/2024/06/18/apache-flink-cdc-3.1.1-release-announcement/",title:"Apache Flink CDC 3.1.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink CDC 3.1 series.
 The release contains fixes for several critical issues and improves compatibilities with Apache Flink. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users to upgrade to Flink CDC 3.1.1.
 Release Notes # Bug # [FLINK-34908] Mysql pipeline to doris and starrocks will lost precision for timestamp [FLINK-35149] Fix DataSinkTranslator#sinkTo ignoring pre-write topology if not TwoPhaseCommittingSink [FLINK-35294] Use source config to check if the filter should be applied in timestamp starting mode [FLINK-35301] Fix deadlock when loading driver classes [FLINK-35323] Only the schema of the first hit table is recorded when the source-table of the transformer hits multiple tables  [...]
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # Hongshun Wang, Jiabao Sun, North Lin, Qingsheng Ren, Wink, Xin Gong, gongzhongqiang, joyCurry30, yux, yuxiqian
-`}),e.add({id:68,href:"/2024/06/14/apache-flink-1.19.1-release-announcement/",title:"Apache Flink 1.19.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink 1.19 series.
+`}),e.add({id:70,href:"/2024/06/14/apache-flink-1.19.1-release-announcement/",title:"Apache Flink 1.19.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink 1.19 series.
 This release includes 44 bug fixes, vulnerability fixes, and minor improvements for Flink 1.19. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink 1.19.1.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.19.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;1.19.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clie [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.19.1 Release Notes # Release Notes - Flink - Version 1.19.1 Bug [FLINK-26808] - [flink v1.14.2] Submit jobs via REST API not working after set web.submit.enable: false [FLINK-27741] - Fix NPE when use dense_rank() and rank() in over aggregation [FLINK-28693] - Codegen failed if the watermark is defined on a columnByExpression [FLINK-31223] - sql-client.sh fails to start with ssl enabled [ [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.19.1 Release Notes # Release Notes - Flink - Version 1.19.1 Bug [FLINK-26808] - [flink v1.14.2] Submit jobs via REST API not working after set web.submit.enable: false [FLINK-27741] - Fix NPE when use dense_rank() and rank() in over aggregation [FLINK-28693] - Codegen failed if the watermark is defined on a columnByExpression [FLINK-31223] - sql-client.sh fails to start with ssl enabled [ [...]
 We&rsquo;d like to invite you to check out Flink CDC documentation and have a try on the quickstart tutorial to explore the world of Flink CDC. Also we encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA! We hope you like the new release and we’d be eager to learn about your experience with it.
 Highlights # Transformation Support in Pipeline # Flink CDC 3.1.0 introduces the ability of making transformations in the CDC pipeline. By incorporating a transform section within the YAML pipeline definitions, users can now easily apply a variety of transformations to data change event from source, including projections, calculations, and addition of constant columns, enhancing the effectiveness of data integration pipelines. Leveraging an SQL-like syntax for defining these transformati [...]
 You can find examples of using transformations in the Flink CDC documentation.
@@ -998,7 +1083,7 @@ OceanBase # OceanBase CDC source now supports specifying the general DebeziumDes
 Db2 # Db2 CDC source is now migrated to the unified incremental snapshot framework.
 CLI # Flink CDC pipeline submission CLI now supports recovering a pipeline execution from a specific savepoint file by using command line argument --from-savepoint
 List of Contributors # Check Null, FocusComputing, GOODBOY008, Hang Ruan, He Wang, Hongshun Wang, Jiabao Sun, Kunni, L, Laffery, Leonard Xu, Muhammet Orazov, Paul Lin, PengFei Li, Qingsheng Ren, Qishang Zhong, Shawn Huang, Thorne, TorinJie, Xianxun Ye, Xin Gong, Yaroslav Tkachenko, e-mhui, gongzhongqiang, joyCurry30, kunni, lzshlzsh, qwding, shikai93, sky, skylines, wenmo, wudi, xleoken, xuzifu666, yanghuaiGit, yux, yuxiqian, 张田
-`}),e.add({id:70,href:"/2024/03/21/apache-flink-kubernetes-operator-1.8.0-release-announcement/",title:"Apache Flink Kubernetes Operator 1.8.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to announce the release of Flink Kubernetes Operator 1.8.0!
+`}),e.add({id:72,href:"/2024/03/21/apache-flink-kubernetes-operator-1.8.0-release-announcement/",title:"Apache Flink Kubernetes Operator 1.8.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to announce the release of Flink Kubernetes Operator 1.8.0!
 The release includes many improvements to the operator core, the autoscaler, and introduces new features like TaskManager memory auto-tuning.
 We encourage you to download the release and share your experience with the community through the Flink mailing lists or JIRA! We&rsquo;re looking forward to your feedback!
 Highlights # Flink Autotuning # We&rsquo;re excited to announce our latest addition to the autoscaling module: Flink Autotuning.
@@ -1030,7 +1115,7 @@ Release Resources # The source artifacts and helm chart are available on the Dow
 $ helm repo add flink-kubernetes-operator-1.8.0 https://archive.apache.org/dist/flink/flink-kubernetes-operator-1.8.0/ $ helm install flink-kubernetes-operator flink-kubernetes-operator-1.8.0/flink-kubernetes-operator --set webhook.create=false You can also find official Kubernetes Operator Docker images of the new version on Dockerhub.
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # 1996fanrui, Alexander Fedulov, AncyRominus, Caican Cai, Cancai Cai, ConradJam, Domenic Bove, Dominik Dębowczyk, Gabor Somogyi, Guillaume Vauvert, Gyula Fora, Hao Xin, Jerry Wang, Justin Chen, Máté Czagány, Maximilian Michels, Peter Huang, Rui Fan, Ryan van Huuksloot, Samrat, Tony Garrard, Yang-LI-CS, ensctom, fengfei02, flashJd, Nicolas Fraison
-`}),e.add({id:71,href:"/2024/03/18/announcing-the-release-of-apache-flink-1.19/",title:"Announcing the Release of Apache Flink 1.19",section:"Flink Blog",content:`The Apache Flink PMC is pleased to announce the release of Apache Flink 1.19.0. As usual, we are looking at a packed release with a wide variety of improvements and new features. Overall, 162 people contributed to this release completing 33 FLIPs and 600+ issues. Thank you!
+`}),e.add({id:73,href:"/2024/03/18/announcing-the-release-of-apache-flink-1.19/",title:"Announcing the Release of Apache Flink 1.19",section:"Flink Blog",content:`The Apache Flink PMC is pleased to announce the release of Apache Flink 1.19.0. As usual, we are looking at a packed release with a wide variety of improvements and new features. Overall, 162 people contributed to this release completing 33 FLIPs and 600+ issues. Thank you!
 Let&rsquo;s dive into the highlights.
 Flink SQL Improvements # Custom Parallelism for Table/SQL Sources # Now in Flink 1.19, you can set a custom parallelism for performance tuning via the scan.parallelism option. The first available connector is DataGen (Kafka connector is on the way). Here is an example using SQL Client:
 -- set parallelism within the ddl CREATE TABLE Orders ( order_number BIGINT, price DECIMAL(32,2), buyer ROW&lt;first_name STRING, last_name STRING&gt;, order_time TIMESTAMP(3) ) WITH ( &#39;connector&#39; = &#39;datagen&#39;, &#39;scan.parallelism&#39; = &#39;4&#39; ); -- or set parallelism via dynamic table option SELECT * FROM Orders /*+ OPTIONS(&#39;scan.parallelism&#39;=&#39;4&#39;) */; More Information
@@ -1085,20 +1170,20 @@ Migrate RuntimeContext#getExecutionConfig.getGlobalJobParameters to RuntimeConte
 Migrate RuntimeContext#getExecutionConfig.isObjectReuseEnabled() to RuntimeContext#isObjectReuseEnabled org.apache.flink.api.common.functions.RichFunction#open(Configuration parameters) method has been deprecated and will be removed in future versions. Users are encouraged to migrate to the new RichFunction#open(OpenContext openContext). org.apache.flink.configuration.AkkaOptions is deprecated and replaced with RpcOptions. Upgrade Notes # The Flink community tries to ensure that upgrades [...]
 List of Contributors # The Apache Flink community would like to express gratitude to all the contributors who made this release possible:
 Adi Polak, Ahmed Hamdy, Akira Ajisaka, Alan Sheinberg, Aleksandr Pilipenko, Alex Wu, Alexander Fedulov, Archit Goyal, Asha Boyapati, Benchao Li, Bo Cui, Cheena Budhiraja, Chesnay Schepler, Dale Lane, Danny Cranmer, David Moravek, Dawid Wysakowicz, Deepyaman Datta, Dian Fu, Dmitriy Linevich, Elkhan Dadashov, Eric Brzezenski, Etienne Chauchot, Fang Yong, Feng Jiajie, Feng Jin, Ferenc Csaky, Gabor Somogyi, Gyula Fora, Hang Ruan, Hangxiang Yu, Hanyu Zheng, Hjw, Hong Liang Teoh, Hongshun Wang [...]
-`}),e.add({id:72,href:"/2024/01/19/apache-flink-1.18.1-release-announcement/",title:"Apache Flink 1.18.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink 1.18 series.
+`}),e.add({id:74,href:"/2024/01/19/apache-flink-1.18.1-release-announcement/",title:"Apache Flink 1.18.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink 1.18 series.
 This release includes 47 bug fixes, vulnerability fixes, and minor improvements for Flink 1.18. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink 1.18.1.
 Note: Users that have state compression should not migrate to 1.18.1 (nor 1.18.0) due to a critical bug that could lead to data loss. Please refer to FLINK-34063 for more information.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.18.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;1.18.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clie [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.18.1 Release Notes # Release Notes - Flink - Version 1.18.1 Bug [FLINK-31650] - Incorrect busyMsTimePerSecond metric value for FINISHED task [FLINK-33158] - Cryptic exception when there is a StreamExecSort in JsonPlan [FLINK-33171] - Consistent implicit type coercion support for equal and non-equal comparisons for codegen [FLINK-33223] - MATCH_RECOGNIZE AFTER MATCH clause can not be deser [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.18.1 Release Notes # Release Notes - Flink - Version 1.18.1 Bug [FLINK-31650] - Incorrect busyMsTimePerSecond metric value for FINISHED task [FLINK-33158] - Cryptic exception when there is a StreamExecSort in JsonPlan [FLINK-33171] - Consistent implicit type coercion support for equal and non-equal comparisons for codegen [FLINK-33223] - MATCH_RECOGNIZE AFTER MATCH clause can not be deser [...]
 This release includes 52 bug fixes, vulnerability fixes, and minor improvements for Flink 1.16. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink 1.16.3.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.16.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;1.16.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clie [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.16.3 Release Notes # Release Notes - Flink - Version 1.16.3 Bug [FLINK-32316] - Duplicated announceCombinedWatermark task maybe scheduled if jobmanager failover [FLINK-32362] - SourceAlignment announceCombinedWatermark period task maybe lost [FLINK-32411] - SourceCoordinator thread leaks when job recovers from checkpoint [FLINK-32414] - Watermark alignment will cause flink jobs to hang fo [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.16.3 Release Notes # Release Notes - Flink - Version 1.16.3 Bug [FLINK-32316] - Duplicated announceCombinedWatermark task maybe scheduled if jobmanager failover [FLINK-32362] - SourceAlignment announceCombinedWatermark period task maybe lost [FLINK-32411] - SourceCoordinator thread leaks when job recovers from checkpoint [FLINK-32414] - Watermark alignment will cause flink jobs to hang fo [...]
 This release includes 82 bug fixes, vulnerability fixes, and minor improvements for Flink 1.17. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink 1.17.2.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.17.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;1.17.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clie [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.17.2 Release Notes # Release Notes - Flink - Version 1.17.2 Bug [FLINK-27415] - Read empty csv file throws exception in FileSystem table connector [FLINK-28513] - Flink Table API CSV streaming sink throws SerializedThrowable exception [FLINK-29913] - Shared state would be discarded by mistake when maxConcurrentCheckpoint&gt;1 [FLINK-30559] - May get wrong result for \`if\` expression if i [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.17.2 Release Notes # Release Notes - Flink - Version 1.17.2 Bug [FLINK-27415] - Read empty csv file throws exception in FileSystem table connector [FLINK-28513] - Flink Table API CSV streaming sink throws SerializedThrowable exception [FLINK-29913] - Shared state would be discarded by mistake when maxConcurrentCheckpoint&gt;1 [FLINK-30559] - May get wrong result for \`if\` expression if i [...]
 We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA! We hope you like the new release and we’d be eager to learn about your experience with it.
 Flink Version Support Policy Change # Previously the operator only added more and more supported Flink versions without a policy to remove support for these in the future. This resulted in a lot of legacy codepaths already in the core logic.
 To keep technical debt at reasonable levels, the community decided to adopt a new Flink version support policy for the operator.
@@ -1120,14 +1205,14 @@ Release Resources # The source artifacts and helm chart are available on the Dow
 $ helm repo add flink-kubernetes-operator-1.7.0 https://archive.apache.org/dist/flink/flink-kubernetes-operator-1.7.0/ $ helm install flink-kubernetes-operator flink-kubernetes-operator-1.7.0/flink-kubernetes-operator --set webhook.create=false You can also find official Kubernetes Operator Docker images of the new version on Dockerhub.
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # Alexander Fedulov, Clara Xiong, Daren Wong, Dongwoo Kim, Gabor Somogyi, Gyula Fora, Manan Mangal, Maximilian Michels, Nicolas Fraison, Peter Huang, Praneeth Ramesh, Rui Fan, Sergey Nuyanzin, SteNicholas, Zhanghao, Zhenqiu Huang, mehdid93
-`}),e.add({id:76,href:"/2023/10/27/apache-flink-kubernetes-operator-1.6.1-release-announcement/",title:"Apache Flink Kubernetes Operator 1.6.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink Kubernetes Operator 1.6 series.
+`}),e.add({id:78,href:"/2023/10/27/apache-flink-kubernetes-operator-1.6.1-release-announcement/",title:"Apache Flink Kubernetes Operator 1.6.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink Kubernetes Operator 1.6 series.
 The release contains fixes for several critical issues, and some doc improvements for the autoscaler.
 We highly recommend all users to upgrade to Flink Kubernetes Operator 1.6.1.
 Release Notes # Bug # [FLINK-32890] Correct HA patch check for zookeeper metadata store [FLINK-33011] Never accidentally delete HA metadata for last state deployments Documentation improvement # [FLINK-32868][docs] Document the need to backport FLINK-30213 for using autoscaler with older version Flinks [docs][autoscaler] Autoscaler docs and default config improvement Release Resources # The source artifacts and helm chart are available on the Downloads page of the Flink website. You can  [...]
 $ helm repo add flink-kubernetes-operator-1.6.1 https://archive.apache.org/dist/flink/flink-kubernetes-operator-1.6.1/ $ helm install flink-kubernetes-operator flink-kubernetes-operator-1.6.1/flink-kubernetes-operator --set webhook.create=false You can also find official Kubernetes Operator Docker images of the new version on Dockerhub.
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # Gyula Fora, Nicolas Fraison, Zhanghao
-`}),e.add({id:77,href:"/2023/10/24/announcing-the-release-of-apache-flink-1.18/",title:"Announcing the Release of Apache Flink 1.18",section:"Flink Blog",content:`The Apache Flink PMC is pleased to announce the release of Apache Flink 1.18.0. As usual, we are looking at a packed release with a wide variety of improvements and new features. Overall, 174 people contributed to this release completing 18 FLIPS and 700+ issues. Thank you!
+`}),e.add({id:79,href:"/2023/10/24/announcing-the-release-of-apache-flink-1.18/",title:"Announcing the Release of Apache Flink 1.18",section:"Flink Blog",content:`The Apache Flink PMC is pleased to announce the release of Apache Flink 1.18.0. As usual, we are looking at a packed release with a wide variety of improvements and new features. Overall, 174 people contributed to this release completing 18 FLIPS and 700+ issues. Thank you!
 Let&rsquo;s dive into the highlights.
 Towards a Streaming Lakehouse # Flink SQL Improvements # Introduce Flink JDBC Driver For SQL Gateway # Flink 1.18 comes with a JDBC Driver for the Flink SQL Gateway. So, you can now use any SQL Client that supports JDBC to interact with your tables via Flink SQL. Here is an example using SQLLine.
 sqlline&gt; !connect jdbc:flink://localhost:8083 sqlline version 1.12.0 sqlline&gt; !connect jdbc:flink://localhost:8083 Enter username for jdbc:flink://localhost:8083: Enter password for jdbc:flink://localhost:8083: 0: jdbc:flink://localhost:8083&gt; CREATE TABLE T( . . . . . . . . . . . . . . .)&gt; a INT, . . . . . . . . . . . . . . .)&gt; b VARCHAR(10) . . . . . . . . . . . . . . .)&gt; ) WITH ( . . . . . . . . . . . . . . .)&gt; &#39;connector&#39; = &#39;filesystem&#39;, . . . . .  [...]
@@ -1184,7 +1269,7 @@ FLINK-27998 FLINK-28744 FLINK-29319 Important Deprecations # In preparation for
 SourceFunction is now officially deprecated and will be dropped in Flink 2.0. If you are still using a connector that is built on top of SourceFunction please migrate it to Source. SinkFunction is not officially deprecated, but it is also approaching end-of-life and will be superseded by SinkV2. Queryable State is now officially deprecated and will be dropped in Flink 2.0. The DataSet API is now officially deprecated. Users are recommended to migrate to the DataStream API with execution  [...]
 List of Contributors # The Apache Flink community would like to express gratitude to all the contributors who made this release possible:
 Aitozi, Akinfolami Akin-Alamu, Alain Brown, Aleksandr Pilipenko, Alexander Fedulov, Anton Kalashnikov, Archit Goyal, Bangui Dunn, Benchao Li, BoYiZhang, Chesnay Schepler, Chris Nauroth, Colten Pilgreen, Danny Cranmer, David Christle, David Moravek, Dawid Wysakowicz, Deepyaman Datta, Dian Fu, Dian Qi, Dong Lin, Eric Xiao, Etienne Chauchot, Feng Jin, Ferenc Csaky, Fruzsina Nagy, Gabor Somogyi, Gunnar Morling, Gyula Fora, HaiYang Chen, Hang Ruan, Hangxiang Yu, Hanyu Zheng, Hong Liang Teoh,  [...]
-`}),e.add({id:78,href:"/2023/09/19/stateful-functions-3.3.0-release-announcement/",title:"Stateful Functions 3.3.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to announce the release of Stateful Functions 3.3.0!
+`}),e.add({id:80,href:"/2023/09/19/stateful-functions-3.3.0-release-announcement/",title:"Stateful Functions 3.3.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to announce the release of Stateful Functions 3.3.0!
 Stateful Functions is a cross-platform stack for building Stateful Serverless applications, making it radically simpler to develop scalable, consistent, and elastic distributed applications. This new release upgrades the Flink runtime to 1.16.2.
 The binary distribution and source artifacts are now available on the updated Downloads page of the Flink website, and the most recent Java SDK, Python SDK,, GoLang SDK and JavaScript SDK distributions are available on Maven, PyPI, Github, and npm respectively. You can also find official StateFun Docker images of the new version on Dockerhub.
 For more details, check the complete release notes and the updated documentation. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA!
@@ -1194,7 +1279,7 @@ Upgraded Flink dependency to 1.16.2 # Stateful Functions 3.3.0 runtime uses Flin
 Release Notes # Please review the release notes for a detailed list of changes and new features if you plan to upgrade your setup to Stateful Functions 3.3.0.
 List of Contributors # Till Rohrmann, Mingmin Xu, Igal Shilman, Martijn Visser, Chesnay Schepler, SiddiqueAhmad, Galen Warren, Seth Wiesman, FilKarnicki, Tzu-Li (Gordon) Tai
 If you’d like to get involved, we’re always looking for new contributors.
-`}),e.add({id:79,href:"/2023/08/15/apache-flink-kubernetes-operator-1.6.0-release-announcement/",title:"Apache Flink Kubernetes Operator 1.6.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to announce the release of Flink Kubernetes Operator 1.6.0! The release features a large number of improvements all across the operator.
+`}),e.add({id:81,href:"/2023/08/15/apache-flink-kubernetes-operator-1.6.0-release-announcement/",title:"Apache Flink Kubernetes Operator 1.6.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to announce the release of Flink Kubernetes Operator 1.6.0! The release features a large number of improvements all across the operator.
 We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA! We hope you like the new release and we’d be eager to learn about your experience with it.
 Highlights # Improved and simplified rollback mechanism # Previously the rollback mechanism had some serious limitations always requiring the presence of HA metadata. This prevented rollbacks in many cases for instance when the new application terminally failed after the upgrade.
 1.6.0 introduces several core improvements to the rollback mechanism to leverage the robust upgrade flow and cover a much wider range of failure scenarios.
@@ -1212,7 +1297,7 @@ Release Resources # The source artifacts and helm chart are available on the Dow
 $ helm repo add flink-kubernetes-operator-1.6.0 https://archive.apache.org/dist/flink/flink-kubernetes-operator-1.6.0/ $ helm install flink-kubernetes-operator flink-kubernetes-operator-1.6.0/flink-kubernetes-operator --set webhook.create=false You can also find official Kubernetes Operator Docker images of the new version on Dockerhub.
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # Alexander Fedulov, ConradJam, Fangbin Sun, Gyula Fora, James Busche, Mate Czagany, Matyas Orhidi, Maximilian Michels, Nicolas Fraison, Oleksandr Nitavskyi, Tamir Sagi, Thomas, Xin Hao, Xingcan Cui, Daren Wong, Fabio Wanner, kenankule, llussy, yangjf2019,
-`}),e.add({id:80,href:"/2023/08/04/announcing-three-new-apache-flink-connectors-the-new-connector-versioning-strategy-and-externalization/",title:"Announcing three new Apache Flink connectors, the new connector versioning strategy and externalization",section:"Flink Blog",content:` New connectors # We&rsquo;re excited to announce that Apache Flink now supports three new connectors: Amazon DynamoDB, MongoDB and OpenSearch! The connectors are available for both the DataStream and Table/SQL APIs.
+`}),e.add({id:82,href:"/2023/08/04/announcing-three-new-apache-flink-connectors-the-new-connector-versioning-strategy-and-externalization/",title:"Announcing three new Apache Flink connectors, the new connector versioning strategy and externalization",section:"Flink Blog",content:` New connectors # We&rsquo;re excited to announce that Apache Flink now supports three new connectors: Amazon DynamoDB, MongoDB and OpenSearch! The connectors are available for both the DataStream and Table/SQL APIs.
 Amazon DynamoDB - This connector includes a sink that provides at-least-once delivery guarantees. MongoDB connector - This connector includes a source and sink that provide at-least-once guarantees. OpenSearch sink - This connector includes a sink that provides at-least-once guarantees. Connector Date Released Supported Flink Versions Amazon DynamoDB sink 2022-12-02 1.15+ MongoDB connector 2023-03-31 1.16+ OpenSearch sink 2022-12-21 1.16+ List of Contributors # The Apache Flink community [...]
 Andriy Redko, Chesnay Schepler, Danny Cranmer, darenwkt, Hong Liang Teoh, Jiabao Sun, Leonid Ilyevsky, Martijn Visser, nir.tsruya, Sergey Nuyanzin, Weijie Guo, Yuri Gusev, Yuxin Tan
 Externalized connectors # The community has externalized connectors from Flink’s main repository. This was driven to realise the following benefits:
@@ -1221,19 +1306,19 @@ Kafka / Upsert-Kafka Cassandra Elasticsearch MongoDB OpenSearch RabbitMQ Google
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-connector-dynamodb&lt;/artifactId&gt; &lt;version&gt;4.1.0-1.17&lt;/version&gt; &lt;/dependency&gt; You can find the maven dependency for a connector in the Flink connectors documentation for a specific Flink version. Use the Flink Downloads page to verify which version your connector is compatible with.
 Contributing # Similarly, when creating JIRAs to report issues or to contribute to externalized connectors, the Affects Version/s and Fix Version/s fields should now use the connector version instead of a Flink version. The format should be &lt;connector-name&gt;-&lt;major&gt;.&lt;minor&gt;.&lt;patch&gt;. For example, use opensearch-1.1.0 for the OpenSearch connector. All other fields in the JIRA like Component/s remain the same.
 For more information on how to contribute to externalized connectors, see the Externalized Connector development wiki.
-`}),e.add({id:81,href:"/2023/07/03/sigmod-systems-award-for-apache-flink/",title:"SIGMOD Systems Award for Apache Flink",section:"Flink Blog",content:`Apache Flink received the 2023 SIGMOD Systems Award, which is awarded to an individual or set of individuals to recognize the development of a software or hardware system whose technical contributions have had significant impact on the theory or practice of large-scale data management systems:
+`}),e.add({id:83,href:"/2023/07/03/sigmod-systems-award-for-apache-flink/",title:"SIGMOD Systems Award for Apache Flink",section:"Flink Blog",content:`Apache Flink received the 2023 SIGMOD Systems Award, which is awarded to an individual or set of individuals to recognize the development of a software or hardware system whose technical contributions have had significant impact on the theory or practice of large-scale data management systems:
 The 2023 SIGMOD Systems Award goes to Apache Flink:
 “Apache Flink greatly expanded the use of stream data-processing.”
 Winning of SIGMOD Systems Award indicates the high recognition of Flink&rsquo;s technological advancement and industry influence from academia. This is a significant achievement by the whole community in Apache Flink, including the over 1,400 contributors and many others who contributed in ways beyond code.
-`}),e.add({id:82,href:"/2023/05/25/apache-flink-1.16.2-release-announcement/",title:"Apache Flink 1.16.2 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the second bug fix release of the Flink 1.16 series.
+`}),e.add({id:84,href:"/2023/05/25/apache-flink-1.16.2-release-announcement/",title:"Apache Flink 1.16.2 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the second bug fix release of the Flink 1.16 series.
 This release includes 104 bug fixes, vulnerability fixes, and minor improvements for Flink 1.16. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink 1.16.2.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.16.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;1.16.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clie [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.16.2 Release Notes # Bug [FLINK-27246] - Code of method &quot;processElement(Lorg/apache/flink/streaming/runtime/streamrecord/StreamRecord;)V&quot; of class &quot;HashAggregateWithKeys$9211&quot; grows beyond 64 KB [FLINK-27800] - addInEdge check state error [FLINK-27848] - ZooKeeperLeaderElectionDriver keeps writing leader information, using up zxid [FLINK-28786] - Cannot run PyFlink 1.1 [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.16.2 Release Notes # Bug [FLINK-27246] - Code of method &quot;processElement(Lorg/apache/flink/streaming/runtime/streamrecord/StreamRecord;)V&quot; of class &quot;HashAggregateWithKeys$9211&quot; grows beyond 64 KB [FLINK-27800] - addInEdge check state error [FLINK-27848] - ZooKeeperLeaderElectionDriver keeps writing leader information, using up zxid [FLINK-28786] - Cannot run PyFlink 1.1 [...]
 This release includes 75 bug fixes, vulnerability fixes, and minor improvements for Flink 1.17. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink 1.17.1.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.17.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;1.17.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clie [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.17.1 Release Notes # Release Notes - Flink - Version 1.17.1 Bug [FLINK-28786] - Cannot run PyFlink 1.16 on MacOS with M1 chip [FLINK-30989] - Configuration table.exec.spill-compression.block-size not take effect in batch job [FLINK-31131] - The INITIALIZING of ExecutionState is missed in the state_machine doc [FLINK-31165] - Over Agg: The window rank function without order by error in top [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.17.1 Release Notes # Release Notes - Flink - Version 1.17.1 Bug [FLINK-28786] - Cannot run PyFlink 1.16 on MacOS with M1 chip [FLINK-30989] - Configuration table.exec.spill-compression.block-size not take effect in batch job [FLINK-31131] - The INITIALIZING of ExecutionState is missed in the state_machine doc [FLINK-31165] - Over Agg: The window rank function without order by error in top [...]
 We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA! We hope you like the new release and we’d be eager to learn about your experience with it.
 Autoscaler improvements # Algorithm improvements and better scale down behaviour # The release contains important improvements to the core autoscaling logic. This includes improved stability of scaling decisions (leading to less parallelism oscillations) and better handling of slow or idle streams.
 There are also some fixes related to output ratio computation and propagation that greatly improves the autoscaler on more complex streaming pipelines.
@@ -1251,7 +1336,7 @@ apiVersion: flink.apache.org/v1beta1 kind: FlinkDeployment metadata: name: canar
 $ helm repo add flink-kubernetes-operator-1.5.0 https://archive.apache.org/dist/flink/flink-kubernetes-operator-1.5.0/ $ helm install flink-kubernetes-operator flink-kubernetes-operator-1.5.0/flink-kubernetes-operator --set webhook.create=false You can also find official Kubernetes Operator Docker images of the new version on Dockerhub.
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # Gyula Fora, Marton Balassi, Mate Czagany, Maximilian Michels, Rafał Boniecki, Rodrigo Meneses, Tamir Sagi, Xin Hao, Xin Li, Zhanghao Chen, Zhenqiu Huang, Daren Wong, Gaurav Miglani, Peter Vary, Tan Kim, yangjf2019
-`}),e.add({id:85,href:"/2023/05/12/howto-test-a-batch-source-with-the-new-source-framework/",title:"Howto test a batch source with the new Source framework",section:"Flink Blog",content:` Introduction # The Flink community has designed a new Source framework based on FLIP-27 lately. This article is the continuation of the howto create a batch source with the new Source framework article . Now it is time to test the created source ! As the previous article, this one was built while implem [...]
+`}),e.add({id:87,href:"/2023/05/12/howto-test-a-batch-source-with-the-new-source-framework/",title:"Howto test a batch source with the new Source framework",section:"Flink Blog",content:` Introduction # The Flink community has designed a new Source framework based on FLIP-27 lately. This article is the continuation of the howto create a batch source with the new Source framework article . Now it is time to test the created source ! As the previous article, this one was built while implem [...]
 Unit testing the source # Testing the serializers # Example Cassandra SplitSerializer and SplitEnumeratorStateSerializer
 In the previous article, we created serializers for Split and SplitEnumeratorState. We should now test them in unit tests. To test serde we create an object, serialize it using the serializer and then deserialize it using the same serializer and finally assert on the equality of the two objects. Thus, hascode() and equals() need to be implemented for the serialized objects.
 Other unit tests # Of course, we also need to unit test low level processing such as query building for example or any processing that does not require a running backend.
@@ -1273,7 +1358,7 @@ It is linked to the ITCase through a factory of TestContext as shown below.
 @TestContext TestContextFactory contextFactory = new TestContextFactory(testEnvironment); TestContext implements DataStreamSourceExternalContext:
 We don&rsquo;t connect to the backend at each test case, so the shared resources such as session are created by the backend test environment (test suite scoped). They are then passed to the test context by constructor. It is also in the constructor that we initialize test case backend resources such as test case table. close() : drop the created test case resources getProducedType(): specify the test output type of the source such as a test Pojo for example getConnectorJarPaths(): provid [...]
 Conclusion # This concludes the series of articles about creating a batch source with the new Flink framework. This was needed as, apart from the javadocs, the documentation about testing is missing for now. I hope you enjoyed reading and I hope the Flink community will receive a source PR from you soon :)
-`}),e.add({id:86,href:"/2023/05/09/howto-migrate-a-real-life-batch-pipeline-from-the-dataset-api-to-the-datastream-api/",title:"Howto migrate a real-life batch pipeline from the DataSet API to the DataStream API",section:"Flink Blog",content:` Introduction # The Flink community has been deprecating the DataSet API since version 1.12 as part of the work on FLIP-131: Consolidate the user-facing Dataflow SDKs/APIs (and deprecate the DataSet API) . This blog article illustrates the migration [...]
+`}),e.add({id:88,href:"/2023/05/09/howto-migrate-a-real-life-batch-pipeline-from-the-dataset-api-to-the-datastream-api/",title:"Howto migrate a real-life batch pipeline from the DataSet API to the DataStream API",section:"Flink Blog",content:` Introduction # The Flink community has been deprecating the DataSet API since version 1.12 as part of the work on FLIP-131: Consolidate the user-facing Dataflow SDKs/APIs (and deprecate the DataSet API) . This blog article illustrates the migration [...]
 What is TPCDS? # TPC-DS is a decision support benchmark that models several generally applicable aspects of a decision support system. The purpose of TPCDS benchmarks is to provide relevant, objective performance data of Big Data engines to industry users.
 Chosen TPCDS query # The chosen query for this article is Query3 because it contains all the more common analytics operators (filter, join, aggregation, group by, order by, limit). It represents an analytic query on store sales. Its SQL code is presented here:
 SELECT dt.d_year, item.i_brand_id brand_id, item.i_brand brand,SUM(ss_ext_sales_price) sum_agg FROM date_dim dt, store_sales, item WHERE dt.d_date_sk = store_sales.ss_sold_date_sk AND store_sales.ss_item_sk = item.i_item_sk AND item.i_manufact_id = 128 AND dt.d_moy=11 GROUP BY dt.d_year, item.i_brand, item.i_brand_id ORDER BY dt.d_year, sum_agg desc, brand_id LIMIT 100
@@ -1294,7 +1379,7 @@ Another thing: to be able to use Flink state, we need to key the datastream befo
 Migrating the limit operation # As all the elements of the DataStream were keyed by the same &ldquo;0&rdquo; key, they are kept in the same &quot; group&quot;. So we can implement the SQL LIMIT with a ProcessFunction with a counter that will output only the first 100 elements.
 Migrating the sink operation # As with sources, there were big changes in sinks with recent versions of Flink. We now use the Sink interface that requires an Encoder . But the resulting code is very similar to the one using the DataSet API. It&rsquo;s only that Encoder#encode() method writes bytes when TextOutputFormat.TextFormatter#format() wrote Strings.
 Conclusion # As you saw for the migration of the join operation, the new unified DataStream API has some limitations left in batch mode. In addition, the order by and limit resulting code is quite manual and requires the help of the Flink state API for the migration. For all these reasons, the Flink community recommends to use Flink SQL for batch pipelines. It results in much simpler code, good performance and out-of-the-box analytics capabilities. You could find the equivalent Query3 co [...]
-`}),e.add({id:87,href:"/2023/05/03/howto-create-a-batch-source-with-the-new-source-framework/",title:"Howto create a batch source with the new Source framework",section:"Flink Blog",content:` Introduction # The Flink community has designed a new Source framework based on FLIP-27 lately. Some connectors have migrated to this new framework. This article is a how-to for creating a batch source using this new framework. It was built while implementing the Flink batch source for Cassandra. If [...]
+`}),e.add({id:89,href:"/2023/05/03/howto-create-a-batch-source-with-the-new-source-framework/",title:"Howto create a batch source with the new Source framework",section:"Flink Blog",content:` Introduction # The Flink community has designed a new Source framework based on FLIP-27 lately. Some connectors have migrated to this new framework. This article is a how-to for creating a batch source using this new framework. It was built while implementing the Flink batch source for Cassandra. If [...]
 Implementing the source components # The source architecture is depicted in the diagrams below:
 Source # Example Cassandra Source
 The source interface only does the &ldquo;glue&rdquo; between all the other components. Its role is to instantiate all of them and to define the source Boundedness . We also do the source configuration here along with user configuration validation.
@@ -1324,7 +1409,7 @@ Using Java serialization is forbidden in Flink mainly for migration concerns. We
 The initial stream size depends on the size of a split.
 Testing the source # For the sake of concision of this article, testing the source will be the object of the next article. Stay tuned !
 Conclusion # This article gathering the implementation field feedback was needed as the javadocs cannot cover all the implementation details for high-performance and maintainable sources. I hope you enjoyed reading and that it gave you the desire to contribute a new connector to the Flink project !
-`}),e.add({id:88,href:"/2023/04/19/apache-flink-ml-2.2.0-release-announcement/",title:"Apache Flink ML 2.2.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to announce the release of Flink ML 2.2.0! This release focuses on enriching Flink ML&rsquo;s feature engineering algorithms. The library now includes 33 feature engineering algorithms, making it a more comprehensive library for feature engineering tasks.
+`}),e.add({id:90,href:"/2023/04/19/apache-flink-ml-2.2.0-release-announcement/",title:"Apache Flink ML 2.2.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to announce the release of Flink ML 2.2.0! This release focuses on enriching Flink ML&rsquo;s feature engineering algorithms. The library now includes 33 feature engineering algorithms, making it a more comprehensive library for feature engineering tasks.
 With the addition of these algorithms, we believe Flink ML library is ready for use in production jobs that require feature engineering capabilities, whose input can then be consumed by both offline and online machine learning tasks.
 We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA! We hope you like the new release and we’d be eager to learn about your experience with it.
 Notable Features # Introduced API and infrastructure for online serving # In machine learning, one of the main goals of model training is to deploy the trained model to perform online inference, where the model server must respond to incoming requests with millisecond-level latency. However, prior releases of Flink ML only supported nearline inference using the Flink runtime, which may not meet the requirements of online inference use-cases.
@@ -1341,7 +1426,7 @@ Release Notes and Resources # Please take a look at the release notes for a deta
 The binary distribution and source artifacts are now available on the updated Downloads page of the Flink website, and the most recent distribution of Flink ML Python package is available on PyPI.
 List of Contributors # The Apache Flink community would like to thank each one of the contributors that have made this release possible:
 Zhipeng Zhang, Dong Lin, Fan Hong, JiangXin, Zsombor Chikan, huangxingbo, taosiyuan163, vacaly, weibozhao, yunfengzhou-hub
-`}),e.add({id:89,href:"/2023/03/23/announcing-the-release-of-apache-flink-1.17/",title:"Announcing the Release of Apache Flink 1.17",section:"Flink Blog",content:`The Apache Flink PMC is pleased to announce Apache Flink release 1.17.0. Apache Flink is the leading stream processing standard, and the concept of unified stream and batch data processing is being successfully adopted in more and more companies. Thanks to our excellent community and contributors, Apache Flink continues to grow [...]
+`}),e.add({id:91,href:"/2023/03/23/announcing-the-release-of-apache-flink-1.17/",title:"Announcing the Release of Apache Flink 1.17",section:"Flink Blog",content:`The Apache Flink PMC is pleased to announce Apache Flink release 1.17.0. Apache Flink is the leading stream processing standard, and the concept of unified stream and batch data processing is being successfully adopted in more and more companies. Thanks to our excellent community and contributors, Apache Flink continues to grow [...]
 Towards Streaming Warehouses # In order to achieve greater efficiency in the realm of streaming warehouse, Flink 1.17 contains substantial improvements to both the performance of batch processing and the semantics of streaming processing. These improvements represent a significant stride towards the creation of a more efficient and streamlined data warehouse, capable of processing large quantities of data in real-time.
 For batch processing, this release includes several new features and improvements:
 Streaming Warehouse API: FLIP-282 introduces the new Delete and Update API in Flink SQL which only works in batch mode. External storage systems like Flink Table Store can implement row-level modification via this new API. The ALTER TABLE syntax is enhanced by including the ability to ADD/MODIFY/DROP columns, primary keys, and watermarks, making it easier for users to maintain their table schema. Batch Execution Improvements: Execution of batch workloads has been significantly improved i [...]
@@ -1380,11 +1465,11 @@ Generalized Delegation Token Support # Previously, Flink supported Kerberos auth
 Upgrade Notes # The Flink community tries to ensure that upgrades are as seamless as possible. However, certain changes may require users to make adjustments to certain parts of the program when upgrading to version 1.17. Please refer to the release notes for a comprehensive list of adjustments to make and issues to check during the upgrading process.
 List of Contributors # The Apache Flink community would like to express gratitude to all the contributors who made this release possible:
 Ahmed Hamdy, Aitozi, Aleksandr Pilipenko, Alexander Fedulov, Alexander Preuß, Anton Kalashnikov, Arvid Heise, Bo Cui, Brayno, Carlos Castro, ChangZhuo Chen (陳昌倬), Chen Qin, Chesnay Schepler, Clemens, ConradJam, Danny Cranmer, Dawid Wysakowicz, Dian Fu, Dong Lin, Dongjoon Hyun, Elphas Toringepi, Eric Xiao, Fabian Paul, Ferenc Csaky, Gabor Somogyi, Gen Luo, Gunnar Morling, Gyula Fora, Hangxiang Yu, Hong Liang Teoh, HuangXingBo, Jacky Lau, Jane Chan, Jark Wu, Jiale, Jin, Jing Ge, Jinzhong L [...]
-`}),e.add({id:90,href:"/2023/03/15/apache-flink-1.15.4-release-announcement/",title:"Apache Flink 1.15.4 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the fourth bug fix release of the Flink 1.15 series.
+`}),e.add({id:92,href:"/2023/03/15/apache-flink-1.15.4-release-announcement/",title:"Apache Flink 1.15.4 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the fourth bug fix release of the Flink 1.15 series.
 This release includes 53 bug fixes, vulnerability fixes, and minor improvements for Flink 1.15. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink 1.15.4.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.15.4&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;1.15.4&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clie [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.15.4 Release Notes # Bug [FLINK-27341] - TaskManager running together with JobManager are bind to 127.0.0.1 [FLINK-27800] - addInEdge check state error [FLINK-27944] - IO metrics collision happens if a task has union inputs [FLINK-28526] - Fail to lateral join with UDTF from Table with timstamp column [FLINK-28695] - Fail to send partition request to restarted taskmanager [FLINK-28742] -  [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.15.4 Release Notes # Bug [FLINK-27341] - TaskManager running together with JobManager are bind to 127.0.0.1 [FLINK-27800] - addInEdge check state error [FLINK-27944] - IO metrics collision happens if a task has union inputs [FLINK-28526] - Fail to lateral join with UDTF from Table with timstamp column [FLINK-28695] - Fail to send partition request to restarted taskmanager [FLINK-28742] -  [...]
 Flink Streaming Job Autoscaler # A highly requested feature for Flink applications is the ability to scale the pipeline based on incoming data load and the utilization of the dataflow. While Flink has already provided some of the required building blocks, this feature has not yet been realized in the open source ecosystem.
 With FLIP-271 the community set out to build such an autoscaler component as part of the Kubernetes Operator subproject. The Kubernetes Operator proved to be a great place for the autoscaler module as it already contains all the necessary bits for managing and upgrading production streaming applications.
 Fast-forward to the 1.4.0 release, we now have the first fully functional autoscaler implementation in the operator, ready to be tested and used in production applications. For more, detailed information, please refer to the Autoscaler Documentation.
@@ -1403,14 +1488,14 @@ Release Resources # The source artifacts and helm chart are available on the Dow
 $ helm repo add flink-kubernetes-operator-1.4.0 https://archive.apache.org/dist/flink/flink-kubernetes-operator-1.4.0/ $ helm install flink-kubernetes-operator flink-kubernetes-operator-1.4.0/flink-kubernetes-operator --set webhook.create=false You can also find official Kubernetes Operator Docker images of the new version on Dockerhub.
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # Anton Ippolitov, FabioWanner, Gabor Somogyi, Gyula Fora, James Busche, Kyle Ahn, Matyas Orhidi, Maximilian Michels, Mohemmad Zaid Khan, Márton Balassi, Navaneesh Kumar, Ottomata, Peter Huang, Rodrigo, Shang Yuanchun, Shipeng Xie, Swathi Chandrashekar, Tony Garrard, Usamah Jassat, Vincent Chenal, Zsombor Chikan, Peter Vary
-`}),e.add({id:92,href:"/2023/01/30/apache-flink-1.16.1-release-announcement/",title:"Apache Flink 1.16.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink 1.16 series.
+`}),e.add({id:94,href:"/2023/01/30/apache-flink-1.16.1-release-announcement/",title:"Apache Flink 1.16.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink 1.16 series.
 This release includes 84 bug fixes, vulnerability fixes, and minor improvements for Flink 1.16. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink 1.16.1.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.16.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;1.16.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clie [...]
 Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.16.1 Upgrade Notes # FLINK-28988 - Incorrect result for filter after temporal join The filter will not be pushed down into both inputs of the event time temporal join. This may cause incompatible plan changes compared to Flink 1.16.0, e.g., when the left input is an upsert source (like upsert-kafka connector), the query plan will remove the ChangelogNormalize node in Flink 1.16.1, while i [...]
 FLINK-29849 - Event time temporal join on an upsert source may produce incorrect execution plan This resolves the correctness issue when doing an event time temporal join with a versioned table backed by an upsert source. When the right input of the join is an upsert source, it no longer generates a ChangelogNormalize node for it. This is an incompatible plan change compared to 1.16.0
 FLINK-30383 - UseLogicalIdentifier makes datadog consider metric as custom The Datadog reporter now adds a &ldquo;flink.&rdquo; prefix to metric identifiers if &ldquo;useLogicalIdentifier&rdquo; is enabled. This is required for these metrics to be recognized as Flink metrics, not custom ones.
-Release Notes # Bug [FLINK-16582] - NettyBufferPoolTest may have warns on NettyBuffer leak [FLINK-26037] - TaskManagerRunner may crash during shutdown sequence [FLINK-26890] - DynamoDB consumer error consuming partitions close to retention [FLINK-27341] - TaskManager running together with JobManager are bind to 127.0.0.1 [FLINK-27944] - IO metrics collision happens if a task has union inputs [FLINK-28102] - Flink AkkaRpcSystemLoader fails when temporary directory is a symlink [FLINK-2852 [...]
+Release Notes # Bug [FLINK-16582] - NettyBufferPoolTest may have warns on NettyBuffer leak [FLINK-26037] - TaskManagerRunner may crash during shutdown sequence [FLINK-26890] - DynamoDB consumer error consuming partitions close to retention [FLINK-27341] - TaskManager running together with JobManager are bind to 127.0.0.1 [FLINK-27944] - IO metrics collision happens if a task has union inputs [FLINK-28102] - Flink AkkaRpcSystemLoader fails when temporary directory is a symlink [FLINK-2852 [...]
 Introduction # Authentication in distributed systems is not an easy task. Previously all worker nodes (TaskManagers) reading from or writing to an external system needed to authenticate on their own. In such a case several things can go wrong, including but not limited to:
 Too many authentication requests (potentially resulting in rejected requests) Large number of retries on authentication failures Re-occurring propagation/update of temporary credentials in a timely manner Dependency issues when external system libraries are having the same dependency with different versions Each authentication/temporary credentials are different making standardization challenging &hellip; The aim of Delegation Token Framework is to solve the above challenges. The framewo [...]
 New authentication providers can be added with small amount of code which is going to be loaded by Flink automatically. At the moment the following external systems are supported:
@@ -1423,7 +1508,7 @@ Check out the example implementation Change FlinkTestJavaDelegationTokenProvider
 An example tutorial can be found here on external system authentication.
 Summary # The Delegation Token Framework is feature complete on the master branch and is becoming generally available on the release of Flink 1.17. The framework obtains authentication tokens at a central location and propagates them to all workers on a re-occurring basis.
 Any connector to an external system which supports authentication can be a potential user of this framework. To support authentication in your connector we encourage you to implement your own DelegationTokenProvider/DelegationTokenReceiver pair.
-`}),e.add({id:94,href:"/2023/01/13/apache-flink-table-store-0.3.0-release-announcement/",title:"Apache Flink Table Store 0.3.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is pleased to announce the release of the Apache Flink Table Store (0.3.0).
+`}),e.add({id:96,href:"/2023/01/13/apache-flink-table-store-0.3.0-release-announcement/",title:"Apache Flink Table Store 0.3.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is pleased to announce the release of the Apache Flink Table Store (0.3.0).
 We highly recommend all users upgrade to Flink Table Store 0.3.0. 0.3.0 completed 150+ issues, which were completed by nearly 30 contributors.
 Please check out the full documentation for detailed information and user guides.
 Flink Table Store 0.3 completes many exciting features, enhances its ability as a data lake storage and greatly improves the availability of its stream pipeline. Some important features are described below.
@@ -1457,14 +1542,14 @@ What&rsquo;s Next? # In the upcoming 0.4.0 release you can expect the following
 Provides Flink decoupled independent Java APIs Spark: enhance batch write, provide streaming write and streaming read Flink: complete DDL &amp; DML, providing more management operations Changelog producer: Lookup, the delay of stream reading each scenario is less than one minute Provide multi table consistent materialized views in real-time Data Integration: Schema Evolution integration, whole database integration. Please give the release a try, share your feedback on the Flink mailing l [...]
 List of Contributors # The Apache Flink community would like to thank every one of the contributors that have made this release possible:
 Feng Wang, Hannankan, Jane Chan, Jia Liu, Jingsong Lee, Jonathan Leitschuh, JunZhang, Kirill Listopad, Liwei Li, MOBIN-F, Nicholas Jiang, Wang Luning, WencongLiu, Yubin Li, gongzhongqiang, houhang1005, liuzhuang2017, openinx, tsreaper, wuyouwuyoulian, zhuangchong, zjureel (shammon), 吴祥平
-`}),e.add({id:95,href:"/2023/01/10/apache-flink-kubernetes-operator-1.3.1-release-announcement/",title:"Apache Flink Kubernetes Operator 1.3.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink Kubernetes Operator 1.3 series.
+`}),e.add({id:97,href:"/2023/01/10/apache-flink-kubernetes-operator-1.3.1-release-announcement/",title:"Apache Flink Kubernetes Operator 1.3.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink Kubernetes Operator 1.3 series.
 The release contains fixes for several critical issues and some major stability improvements for the application upgrade mechanism.
 We highly recommend all users to upgrade to Flink Kubernetes Operator 1.3.1.
 Release Notes # Bug # [FLINK-30329] - flink-kubernetes-operator helm chart does not work with dynamic config because of use of volumeMount subPath [FLINK-30361] - Cluster deleted and created back while updating replicas [FLINK-30406] - Jobmanager Deployment error without HA metadata should not lead to unrecoverable error [FLINK-30437] - State incompatibility issue might cause state loss [FLINK-30527] - Last-state suspend followed by flinkVersion change may lead to state loss [FLINK-30528 [...]
 $ helm repo add flink-kubernetes-operator-1.3.1 https://archive.apache.org/dist/flink/flink-kubernetes-operator-1.3.1/ $ helm install flink-kubernetes-operator flink-kubernetes-operator-1.3.1/flink-kubernetes-operator --set webhook.create=false You can also find official Kubernetes Operator Docker images of the new version on Dockerhub.
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # Gyula Fora, Andrew Otto, Swathi Chandrashekar, Peter Vary
-`}),e.add({id:96,href:"/2022/12/14/apache-flink-kubernetes-operator-1.3.0-release-announcement/",title:"Apache Flink Kubernetes Operator 1.3.0 Release Announcement",section:"Flink Blog",content:`The Flink community is happy to announce that the latest Flink Kubernetes Operator version went live today. Beyond the regular operator improvements and fixes the 1.3.0 version also integrates better with some popular infrastructure management tools like OLM and Argo CD. These improvements are cl [...]
+`}),e.add({id:98,href:"/2022/12/14/apache-flink-kubernetes-operator-1.3.0-release-announcement/",title:"Apache Flink Kubernetes Operator 1.3.0 Release Announcement",section:"Flink Blog",content:`The Flink community is happy to announce that the latest Flink Kubernetes Operator version went live today. Beyond the regular operator improvements and fixes the 1.3.0 version also integrates better with some popular infrastructure management tools like OLM and Argo CD. These improvements are cl [...]
 Release Highlights # Upgrade to Fabric8 6.x.x and JOSDK 4.x.x Restart unhealthy Flink clusters Contribute the Flink Kubernetes Operator to OperatorHub Publish flink-kubernetes-operator-api module separately Upgrade to Fabric8 6.x.x and JOSDK 4.x.x # Two important framework components were upgraded with the current operator release, the Fabric8 client to v6.2.0 and the JOSDK to v4.1.0. These upgrades among others contain important informer improvements that help lower or completely elimin [...]
 With the new JOSDK version, the operator now supports leader election and allows users to run standby operator replicas to reduce downtime due to operator failures. Read more about this in the docs.
 Restart unhealthy Flink clusters # Flink has its own restart strategies which are working fine in most of the cases, but there are certain circumstances when Flink can be stuck in restart loops often resulting in OutOfMemoryError: Metaspace type of state which the job cannot recover from. If the root cause is just a temporary outage of some external system, for example, the Flink job could be resurrected by simply performing a full restart on the application.
@@ -1477,7 +1562,7 @@ Release Resources # The source artifacts and helm chart are available on the Dow
 $ helm repo add flink-kubernetes-operator-1.3.0 https://archive.apache.org/dist/flink/flink-kubernetes-operator-1.3.0/ $ helm install flink-kubernetes-operator flink-kubernetes-operator-1.3.0/flink-kubernetes-operator --set webhook.create=false You can also find official Kubernetes Operator Docker images of the new version on Dockerhub.
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # Chesnay Schepler, Clara Xiong, Denis Nuțiu, Gabor Somogyi, Gyula Fora, James Busche, Jeesmon Jacob, Marton Balassi, Matyas Orhidi, Maximilian Michels, Sriram Ganesh, Steven Zhang, Thomas Weise, Tony Garrard, Usamah Jassat, Xin Hao, Yaroslav Tkachenko, Zezae Oh, Zhenqiu Huang, Zhiming, clarax, darenwkt, jiangzho, judy.zhu, pvary, ted chang, tison, yangjf2019, zhou-jiang
-`}),e.add({id:97,href:"/2022/11/25/optimising-the-throughput-of-async-sinks-using-a-custom-ratelimitingstrategy/",title:"Optimising the throughput of async sinks using a custom RateLimitingStrategy",section:"Flink Blog",content:` Introduction # When designing a Flink data processing job, one of the key concerns is maximising job throughput. Sink throughput is a crucial factor because it can determine the entire job’s throughput. We generally want the highest possible write rate in the si [...]
+`}),e.add({id:99,href:"/2022/11/25/optimising-the-throughput-of-async-sinks-using-a-custom-ratelimitingstrategy/",title:"Optimising the throughput of async sinks using a custom RateLimitingStrategy",section:"Flink Blog",content:` Introduction # When designing a Flink data processing job, one of the key concerns is maximising job throughput. Sink throughput is a crucial factor because it can determine the entire job’s throughput. We generally want the highest possible write rate in the si [...]
 This post explains how you can optimise sink throughput by configuring a custom RateLimitingStrategy on a connector that builds on the AsyncSinkBase (FLIP-171). In the sections below, we cover the design logic behind the AsyncSinkBase and the RateLimitingStrategy, then we take you through two example implementations of rate limiting strategies, specifically the CongestionControlRateLimitingStrategy and TokenBucketRateLimitingStrategy.
 Background of the AsyncSinkBase # When implementing the AsyncSinkBase, our goal was to simplify building new async sinks to custom destinations by providing common async sink functionality used with at least once processing. This has allowed users to more easily write sinks to custom destinations, such as Amazon Kinesis Data Streams and Amazon Kinesis Firehose. An additional async sink to Amazon DynamoDB (FLIP-252) is also being developed at the time of writing.
 The AsyncSinkBase provides the core implementation which handles the mechanics of async requests and responses. This includes retrying failed messages, deciding when to flush records to the destination, and persisting un-flushed records to state during checkpointing. In order to increase throughput, the async sink also dynamically adjusts the request rate depending on the destination’s responses. Read more about this in our previous 1.15 release blog post or watch our FlinkForward talk r [...]
@@ -1506,11 +1591,11 @@ This would be useful if we know that our destination will failover ungracefully
 Specifying a custom RateLimitingStrategy # To specify a custom RateLimitingStrategy, we have to specify it in the AsyncSinkWriterConfiguration which is passed into the constructor of the AsyncSinkWriter. For example:
 class MyCustomSinkWriter&lt;InputT&gt; extends AsyncSinkWriter&lt;InputT, MyCustomRequestEntry&gt; { MyCustomSinkWriter( ElementConverter&lt;InputT, MyCustomRequestEntry&gt; elementConverter, Sink.InitContext context, Collection&lt;BufferedRequestState&lt;MyCustomRequestEntry&gt;&gt; states) { super( elementConverter, context, AsyncSinkWriterConfiguration.builder() // ... .setRateLimitingStrategy(new TokenBucketRateLimitingStrategy()) .build(), states); } } Summary # From Apache Flink 1. [...]
 We hope this extension will be useful for you. If you have any feedback, feel free to reach out!
-`}),e.add({id:98,href:"/2022/11/10/apache-flink-1.15.3-release-announcement/",title:"Apache Flink 1.15.3 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the third bug fix release of the Flink 1.15 series.
+`}),e.add({id:100,href:"/2022/11/10/apache-flink-1.15.3-release-announcement/",title:"Apache Flink 1.15.3 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the third bug fix release of the Flink 1.15 series.
 This release includes 59 bug fixes, vulnerability fixes, and minor improvements for Flink 1.15. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink 1.15.3.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.15.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;1.15.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clie [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.15.3 Release Notes # Bug [FLINK-26726] - Remove the unregistered task from readersAwaitingSplit [FLINK-26890] - DynamoDB consumer error consuming partitions close to retention [FLINK-27384] - In the Hive dimension table, when the data is changed on the original partition, the create_time configuration does not take effect [FLINK-27400] - Pulsar connector subscribed the system topic when u [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.15.3 Release Notes # Bug [FLINK-26726] - Remove the unregistered task from readersAwaitingSplit [FLINK-26890] - DynamoDB consumer error consuming partitions close to retention [FLINK-27384] - In the Hive dimension table, when the data is changed on the original partition, the create_time configuration does not take effect [FLINK-27400] - Pulsar connector subscribed the system topic when u [...]
 Flink has become the leading role and factual standard of stream processing, and the concept of the unification of stream and batch data processing is gradually gaining recognition and is being successfully implemented in more and more companies. Previously, the integrated stream and batch concept placed more emphasis on a unified API and a unified computing framework. This year, based on this, Flink proposed the next development direction of Flink-Streaming Warehouse (Streamhouse), whic [...]
 In 1.16, the Flink community has completed many improvements for both batch and stream processing:
 For batch processing, all-round improvements in ease of use, stability and performance have been completed. 1.16 is a milestone version of Flink batch processing and an important step towards maturity. Ease of use: with the introduction of SQL Gateway and full compatibility with Hive Server2, users can submit Flink SQL jobs and Hive SQL jobs very easily, and it is also easy to connect to the original Hive ecosystem. Functionality: Join hints let Flink SQL users manually specify join stra [...]
@@ -1555,11 +1640,11 @@ Introduce configurable RateLimitingStrategy for Async Sink # The Async Sink was
 Upgrade Notes # We aim to make upgrades as smooth as possible, but some of the changes require users to adjust some parts of the program when upgrading to Apache Flink 1.16. Please take a look at the release notes for a list of adjustments to make and issues to check during upgrades.
 List of Contributors # The Apache Flink community would like to thank each one of the contributors that have made this release possible:
 1996fanrui, Ada Wang, Ada Wong, Ahmed Hamdy, Aitozi, Alexander Fedulov, Alexander Preuß, Alexander Trushev, Andriy Redko, Anton Kalashnikov, Arvid Heise, Ben Augarten, Benchao Li, BiGsuw, Biao Geng, Bobby Richard, Brayno, CPS794, Cheng Pan, Chengkai Yang, Chesnay Schepler, Danny Cranmer, David N Perkins, Dawid Wysakowicz, Dian Fu, DingGeGe, EchoLee5, Etienne Chauchot, Fabian Paul, Ferenc Csaky, Francesco Guardiani, Gabor Somogyi, Gen Luo, Gyula Fora, Haizhou Zhao, Hangxiang Yu, Hao Wang, [...]
-`}),e.add({id:100,href:"/2022/10/13/apache-flink-table-store-0.2.1-release-announcement/",title:"Apache Flink Table Store 0.2.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink Table Store 0.2 series.
+`}),e.add({id:102,href:"/2022/10/13/apache-flink-table-store-0.2.1-release-announcement/",title:"Apache Flink Table Store 0.2.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink Table Store 0.2 series.
 This release includes 13 bug fixes, vulnerability fixes, and minor improvements for Flink Table Store 0.2. Below you will find a list of all bugfixes and improvements. For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink Table Store 0.2.1.
 Release Artifacts # Binaries # You can find the binaries on the updated Downloads page.
-Release Notes # Bug [FLINK-29098] - StoreWriteOperator#prepareCommit should let logSinkFunction flush first before fetching offset [FLINK-29241] - Can not overwrite from empty input [FLINK-29273] - Page not enough Exception in SortBufferMemTable [FLINK-29278] - BINARY type is not supported in table store [FLINK-29295] - Clear RecordWriter slower to avoid causing frequent compaction conflicts [FLINK-29367] - Avoid manifest corruption for incorrect checkpoint recovery [FLINK-29369] - Commi [...]
+Release Notes # Bug [FLINK-29098] - StoreWriteOperator#prepareCommit should let logSinkFunction flush first before fetching offset [FLINK-29241] - Can not overwrite from empty input [FLINK-29273] - Page not enough Exception in SortBufferMemTable [FLINK-29278] - BINARY type is not supported in table store [FLINK-29295] - Clear RecordWriter slower to avoid causing frequent compaction conflicts [FLINK-29367] - Avoid manifest corruption for incorrect checkpoint recovery [FLINK-29369] - Commi [...]
 Release Highlights # Standalone deployment mode support Improved upgrade flow Readiness and liveness probes Flexible job jar handling Standalone deployment mode support # Until now the operator relied exclusively on Flink’s built-in Native Kubernetes integration to deploy and manage Flink clusters. When using the Native deployment mode the Flink cluster communicates directly with Kubernetes to allocate/deallocate TaskManager resources on the fly. While this leads to a very simple deploym [...]
 Flink Kubernetes Operator 1.2.0 brings Standalone mode support for FlinkDeployment resources.
 When using the standalone mode, the operator itself sets up the Job and TaskManager resources for the Flink cluster. Flink processes then run without any need for Kubernetes access. In fact in this mode the Flink cluster itself is unaware that it is running in a Kubernetes environment. If unknown or external code is being executed on the Flink cluster then Standalone mode adds another layer of security.
@@ -1574,11 +1659,11 @@ This can be especially valuable in session deployments when multiple jobs, reusi
 Release Resources # The source artifacts and helm chart are now available on the updated Downloads page of the Flink website.
 $ helm repo add flink-kubernetes-operator-1.2.0 https://archive.apache.org/dist/flink/flink-kubernetes-operator-1.2.0/ $ helm install flink-kubernetes-operator flink-kubernetes-operator-1.2.0/flink-kubernetes-operator --set webhook.create=false You can also find official Kubernetes Operator Docker images of the new version on [Dockerhub](https://hub.docker.com/r/apache/flink-kubernetes-operator). For more details, check the updated documentation and the release notes. We encourage you to [...]
 List of Contributors # Aitozi, Avocadomaster, ConradJam, Dylan Meissner, Gabor Somogyi, Gaurav Miglani, Gyula Fora, Jeesmon Jacob, Joao Ubaldo, Marton Balassi, Matyas Orhidi, Maximilian Michels, Nicholas Jiang, Peter Huang, Robson Roberto Souza Peixoto, Thomas Weise, Tim, Usamah Jassat, Xin Hao, Yaroslav Tkachenko
-`}),e.add({id:102,href:"/2022/09/28/apache-flink-1.14.6-release-announcement/",title:"Apache Flink 1.14.6 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce another bug fix release for Flink 1.14.
+`}),e.add({id:104,href:"/2022/09/28/apache-flink-1.14.6-release-announcement/",title:"Apache Flink 1.14.6 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce another bug fix release for Flink 1.14.
 This release includes 34 bug fixes, vulnerability fixes and minor improvements for Flink 1.14. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users to upgrade to Flink 1.14.6.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.14.6&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.14.6&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.14.6 Release Notes # Bug [FLINK-24862] - The user-defined hive udaf/udtf cannot be used normally in hive dialect [FLINK-25454] - Negative time in throughput calculator [FLINK-27041] - KafkaSource in batch mode failing if any topic partition is empty [FLINK-27399] - Pulsar connector didn&#39;t set start consuming position correctly [FLINK-27418] - Flink SQL TopN result is wrong [FLINK-2768 [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.14.6 Release Notes # Bug [FLINK-24862] - The user-defined hive udaf/udtf cannot be used normally in hive dialect [FLINK-25454] - Negative time in throughput calculator [FLINK-27041] - KafkaSource in batch mode failing if any topic partition is empty [FLINK-27399] - Pulsar connector didn&#39;t set start consuming position correctly [FLINK-27418] - Flink SQL TopN result is wrong [FLINK-2768 [...]
 Within a few hours of the announcement several people reached out to the Flink project, worrying about the impact this has on Flink, as we use Akka internally.
 The purpose of this blogpost is to clarify our position on the matter.
 Please be aware that this topic is still quite fresh, and things are subject to change.
@@ -1599,7 +1684,7 @@ Yes, critical security updates and critical bugs will be patched in Akka v2.6.x
 How does Flink use Akka? # Akka is used in the coordination layer of Flink to
 exchange status messages between processes/components (e.g., JobManager and TaskManager), enforce certain guarantees w.r.t. multi-threading (i.e., only one thread can make changes to the internal state of a component) observe components for unexpected crashes (i.e., notice and handle TaskManager thread crashes). What this means is that we are using very few functionalities of Akka.
 Additionally, that we use Akka is an implementation detail that the vast majority of Flink code isn&rsquo;t aware of, meaning that we can replace it with something else without having to change Flink significantly.
-`}),e.add({id:104,href:"/2022/08/29/apache-flink-table-store-0.2.0-release-announcement/",title:"Apache Flink Table Store 0.2.0 Release Announcement",section:"Flink Blog",content:` The Apache Flink community is pleased to announce the release of the Apache Flink Table Store (0.2.0).
+`}),e.add({id:106,href:"/2022/08/29/apache-flink-table-store-0.2.0-release-announcement/",title:"Apache Flink Table Store 0.2.0 Release Announcement",section:"Flink Blog",content:` The Apache Flink community is pleased to announce the release of the Apache Flink Table Store (0.2.0).
 Please check out the full documentation for detailed information and user guides.
 What is Flink Table Store # Flink Table Store is a data lake storage for streaming updates/deletes changelog ingestion and high-performance queries in real time.
 As a new type of updatable data lake, Flink Table Store has the following features:
@@ -1615,12 +1700,12 @@ Streaming Changelog Concurrent Writes, the separation of Compaction. Aggregation
 We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # The Apache Flink community would like to thank every one of the contributors that have made this release possible:
 Jane Chan, Jia Liu, Jingsong Lee, liliwei, Nicholas Jiang, openinx, tsreaper
-`}),e.add({id:105,href:"/2022/08/24/apache-flink-1.15.2-release-announcement/",title:"Apache Flink 1.15.2 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the second bug fix release of the Flink 1.15 series.
+`}),e.add({id:107,href:"/2022/08/24/apache-flink-1.15.2-release-announcement/",title:"Apache Flink 1.15.2 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the second bug fix release of the Flink 1.15 series.
 This release includes 30 bug fixes, vulnerability fixes, and minor improvements for Flink 1.15. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink 1.15.2.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.15.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;1.15.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clie [...]
 Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.15.2 Upgrade Notes # For Table API: 1.15.0 and 1.15.1 generated non-deterministic UIDs for operators that make it difficult/impossible to restore state or upgrade to next patch version. A new table.exec.uid.generation config option (with correct default behavior) disables setting a UID for new pipelines from non-compiled plans. Existing pipelines can set table.exec.uid.generation=ALWAYS i [...]
-Release Notes # Bug [FLINK-23528] - stop-with-savepoint can fail with FlinkKinesisConsumer [FLINK-25097] - Bug in inner join when the filter condition is boolean type [FLINK-26931] - Pulsar sink&#39;s producer name should be unique [FLINK-27399] - Pulsar connector didn&#39;t set start consuming position correctly [FLINK-27570] - Checkpoint path error does not cause the job to stop [FLINK-27794] - The primary key obtained from MySQL is incorrect by using MysqlCatalog [FLINK-27856] - Addin [...]
+Release Notes # Bug [FLINK-23528] - stop-with-savepoint can fail with FlinkKinesisConsumer [FLINK-25097] - Bug in inner join when the filter condition is boolean type [FLINK-26931] - Pulsar sink&#39;s producer name should be unique [FLINK-27399] - Pulsar connector didn&#39;t set start consuming position correctly [FLINK-27570] - Checkpoint path error does not cause the job to stop [FLINK-27794] - The primary key obtained from MySQL is incorrect by using MysqlCatalog [FLINK-27856] - Addin [...]
 With the release of Flink Kubernetes Operator 1.1.0 we are proud to announce a number of exciting new features improving the overall experience of managing Flink resources and the operator itself in production environments.
 Release Highlights # A non-exhaustive list of some of the more exciting features added in the release:
 Kubernetes Events on application and job state changes New operator metrics Unified and more robust reconciliation flow Periodic savepoints Custom Flink Resource Listeners Dynamic watched namespaces New built-in examples For Flink SQL and PyFlink Experimental autoscaling support Kubernetes Events for Application and Job State Changes # The operator now emits native Kubernetes Events on relevant Flink Deployment and Job changes. This includes status changes, custom resource specification  [...]
@@ -1649,7 +1734,7 @@ Release Resources # The source artifacts and helm chart are available on the Dow
 You can also find official Kubernetes Operator Docker images of the new version on Dockerhub.
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # Aitozi, Biao Geng, Chethan, ConradJam, Dora Marsal, Gyula Fora, Hao Xin, Hector Miuler Malpica Gallegos, Jaganathan Asokan, Jeesmon Jacob, Jim Busche, Maksim Aniskov, Marton Balassi, Matyas Orhidi, Nicholas Jiang, Peng Yuan, Peter Vary, Thomas Weise, Xin Hao, Yang Wang
-`}),e.add({id:107,href:"/2022/07/12/apache-flink-ml-2.1.0-release-announcement/",title:"Apache Flink ML 2.1.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to announce the release of Flink ML 2.1.0! This release focuses on improving Flink ML&rsquo;s infrastructure, such as Python SDK, memory management, and benchmark framework, to facilitate the development of performant, memory-safe, and easy-to-use algorithm libraries. We validated the enhanc [...]
+`}),e.add({id:109,href:"/2022/07/12/apache-flink-ml-2.1.0-release-announcement/",title:"Apache Flink ML 2.1.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to announce the release of Flink ML 2.1.0! This release focuses on improving Flink ML&rsquo;s infrastructure, such as Python SDK, memory management, and benchmark framework, to facilitate the development of performant, memory-safe, and easy-to-use algorithm libraries. We validated the enhanc [...]
 With the improvements and performance benchmarks made in this release, we believe Flink ML&rsquo;s infrastructure is ready for use by the interested developers in the community to build performant pythonic machine learning libraries.
 We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA! We hope you like the new release and we’d be eager to learn about your experience with it.
 Notable Features # API and Infrastructure # Supporting fine-grained per-operator memory management # Before this release, algorithm operators with internal states (e.g. the training data to be replayed for each round of iteration) store state data using the state-backend API (e.g. ListState). Such an operator either needs to store all data in memory, which risks OOM, or it needs to always store data on disk. In the latter case, it needs to read and de-serialize all data from disks repeat [...]
@@ -1670,7 +1755,7 @@ Release Notes and Resources # Please take a look at the release notes for a deta
 The source artifacts is now available on the updated Downloads page of the Flink website, and the most recent distribution of Flink ML Python package is available on PyPI.
 List of Contributors # The Apache Flink community would like to thank each one of the contributors that have made this release possible:
 Yunfeng Zhou, Zhipeng Zhang, huangxingbo, weibo, Dong Lin, Yun Gao, Jingsong Li and mumuhhh.
-`}),e.add({id:108,href:"/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-one/",title:"FLIP-147: Support Checkpoints After Tasks Finished - Part One",section:"Flink Blog",content:` Motivation # Flink is a distributed processing engine for both unbounded and bounded streams of data. In recent versions, Flink has unified the DataStream API and the Table / SQL API to support both streaming and batch cases. Since most users require both types of data processing pipelines, th [...]
+`}),e.add({id:110,href:"/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-one/",title:"FLIP-147: Support Checkpoints After Tasks Finished - Part One",section:"Flink Blog",content:` Motivation # Flink is a distributed processing engine for both unbounded and bounded streams of data. In recent versions, Flink has unified the DataStream API and the Table / SQL API to support both streaming and batch cases. Since most users require both types of data processing pipelines, th [...]
 Flink provides two execution modes under the unified programming API: the streaming mode and the batch mode. The streaming mode processes records incrementally based on the states, thus it supports both bounded and unbounded sources. The batch mode works with bounded sources and usually has a better performance for bounded jobs because it executes all the tasks in topological order and avoids random state access by pre-sorting the input records. Although batch mode is often the preferred [...]
 Figure 1. A comparison of the Streaming mode and Batch mode for the example Count operator. For streaming mode, the arrived elements are not sorted, the operator would read / write the state corresponding to the element for computation. For batch mode, the arrived elements are first sorted as a whole and then processed. In streaming mode, checkpointing is the vital mechanism in supporting exactly-once guarantees. By periodically snapshotting the aligned states of operators, Flink can rec [...]
 Furthermore, being unable to take checkpoints with finished tasks is a problem for jobs using two-phase-commit sinks to achieve end-to-end exactly-once processing. The two-phase-commit sinks first write data to temporary files or external transactions, and commit the data only after a checkpoint completes to ensure the data would not be replayed on failure. However, if a job contains bounded sources, committing the results would not be possible after the bounded sources finish. Also beca [...]
@@ -1690,7 +1775,7 @@ Therefore, we do not take the intuitive option. Instead, we decoupled &ldquo;fin
 Based on this thought, as shown in the right part of Figure 3, to decoupled the process of &ldquo;finishing operator logic&rdquo; and &ldquo;finishing tasks&rdquo;, we introduced a new EndOfData event. For each task, after executing all the operator logic it would first notify the descendants with an EndOfData event so that the descendants also have chances to finish executing the operator logic. Then all the tasks could wait for the next checkpoint or the specified savepoint concurrentl [...]
 At last, it is also worthy to mention we have clarified and renamed the close() and dispose() methods in the operators’ lifecycle. The two methods are in fact different since close() is only called when the task finishes normally and dispose() is called in both cases of normal finishing and failover. However, this was not clear from their names. Therefore, we rename the two methods to finish() and close():
 finish() marks the termination of the operator and no more records are allowed after finish() is called. It should only be called when sources are finished or when the -–drain parameter is specified. close() is used to do cleanup and release all the held resources. Conclusion # By supporting the checkpoints after tasks finished and revising the process of finishing, we can support checkpoints for jobs with both bounded and unbounded sources, and ensure the bounded job gets all output rec [...]
-`}),e.add({id:109,href:"/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-two/",title:"FLIP-147: Support Checkpoints After Tasks Finished - Part Two",section:"Flink Blog",content:`In the first part of this blog, we have briefly introduced the work to support checkpoints after tasks get finished and revised the process of finishing. In this part we will present more details on the implementation, including how we support checkpoints with finished tasks and the revised pro [...]
+`}),e.add({id:111,href:"/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-two/",title:"FLIP-147: Support Checkpoints After Tasks Finished - Part Two",section:"Flink Blog",content:`In the first part of this blog, we have briefly introduced the work to support checkpoints after tasks get finished and revised the process of finishing. In this part we will present more details on the implementation, including how we support checkpoints with finished tasks and the revised pro [...]
 Implementation of support Checkpointing with Finished Tasks # As described in part one, to support checkpoints after some tasks are finished, the core idea is to mark the finished operators in checkpoints and skip executing these operators after recovery. To implement this idea, we enhanced the checkpointing procedure to generate the flag and use the flag on recovery. This section presents more details on the process of taking checkpoints with finished tasks and recovery from such checkpoints.
 Previously, checkpointing only worked when all tasks were running. As shown in the Figure 1, in this case the checkpoint coordinator first notify all the source tasks, and then the source tasks further notify the downstream tasks to take snapshots via barrier events. Similarly, if there are finished tasks, we need to find the new &ldquo;source&rdquo; tasks to initiate the checkpoint, namely those tasks that are still running but have no running precedent tasks. CheckpointCoordinator does [...]
 There might be race conditions when triggering tasks: when the checkpoint coordinator decides to trigger one task and starts emitting the RPC, it is possible that the task is just finished and reporting the FINISHED status to JobManager. In this case, the RPC message would fail and the checkpoint would be aborted.
@@ -1713,16 +1798,16 @@ Task D finishes all the operators right after receiving the EndOfData event. Sin
 Task E is a bit different in that it has two inputs. Task A might continue to run for a while and, thus, Task E needs to wait until it receives an EndOfData event also from the other input before finishing operators and its final checkpoint might be different.
 On the other hand, when using stop-with-savepoint [--drain], the process is similar except that all the tasks need to wait for the exact savepoint before finishing instead of just any checkpoints. Moreover, since both Task C and Task A would finish at the same time, Task E would also be able to wait for this particular savepoint before finishing.
 Conclusion # In this part we have presented more details of how the checkpoints are taken with finished tasks and the revised process of finishing. We hope the details could provide more insights of the thoughts and implementations for this part of work. Still, if you have any questions, please feel free to start a discussion or report an issue in the dev or user mailing list.
-`}),e.add({id:110,href:"/2022/07/06/apache-flink-1.15.1-release-announcement/",title:"Apache Flink 1.15.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink 1.15 series.
+`}),e.add({id:112,href:"/2022/07/06/apache-flink-1.15.1-release-announcement/",title:"Apache Flink 1.15.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the first bug fix release of the Flink 1.15 series.
 This release includes 62 bug fixes, vulnerability fixes, and minor improvements for Flink 1.15. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users upgrade to Flink 1.15.1.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.15.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java&lt;/artifactId&gt; &lt;version&gt;1.15.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clie [...]
 Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.15.1 Release Notes # The community is aware of 3 issues that were introduced with 1.15.0 that remain unresolved. Efforts are underway to fix these issues for Flink 1.15.2:
-[FLINK-28861] - Non-deterministic UID generation might cause issues during restore for Table/SQL API [FLINK-28060] - Kafka commit on checkpointing fails repeatedly after a broker restart [FLINK-28322] - DataStreamScanProvider's new method is not compatible Bug [FLINK-22984] - UnsupportedOperationException when using Python UDF to generate watermark [FLINK-24491] - ExecutionGraphInfo may not be archived when the dispatcher terminates [FLINK-24735] - SQL client crashes with \`Cannot add ex [...]
+[FLINK-28861] - Non-deterministic UID generation might cause issues during restore for Table/SQL API [FLINK-28060] - Kafka commit on checkpointing fails repeatedly after a broker restart [FLINK-28322] - DataStreamScanProvider's new method is not compatible Bug [FLINK-22984] - UnsupportedOperationException when using Python UDF to generate watermark [FLINK-24491] - ExecutionGraphInfo may not be archived when the dispatcher terminates [FLINK-24735] - SQL client crashes with \`Cannot add ex [...]
 This release includes 67 bugs, vulnerability fixes and minor improvements for Flink 1.14. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users to upgrade to Flink 1.14.5.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.14.5&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.14.5&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.14.5 Release Notes # Sub-task [FLINK-25800] - Update wrong links in the datastream/execution_mode.md page. Bug [FLINK-22984] - UnsupportedOperationException when using Python UDF to generate watermark [FLINK-24491] - ExecutionGraphInfo may not be archived when the dispatcher terminates [FLINK-25227] - Comparing the equality of the same (boxed) numeric values returns false [FLINK-25440] -  [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.14.5 Release Notes # Sub-task [FLINK-25800] - Update wrong links in the datastream/execution_mode.md page. Bug [FLINK-22984] - UnsupportedOperationException when using Python UDF to generate watermark [FLINK-24491] - ExecutionGraphInfo may not be archived when the dispatcher terminates [FLINK-25227] - Comparing the equality of the same (boxed) numeric values returns false [FLINK-25440] -  [...]
 To decide a proper parallelism, one needs to know how much data each operator needs to process. However, It can be hard to predict data volume to be processed by a job because it can be different everyday. And it can be harder or even impossible (due to complex operators or UDFs) to predict data volume to be processed by each operator.
 To solve this problem, we introduced the adaptive batch scheduler in Flink 1.15. The adaptive batch scheduler can automatically decide parallelism of an operator according to the size of its consumed datasets. Here are the benefits the adaptive batch scheduler can bring:
 Batch job users can be relieved from parallelism tuning. Parallelism tuning is fine grained considering different operators. This is particularly beneficial for SQL jobs which can only be set with a global parallelism previously. Parallelism tuning can better fit consumed datasets which have a varying volume size every day. Get Started # To automatically decide parallelism of operators, you need to:
@@ -1757,7 +1842,7 @@ Fig. 4 - How subpartitions serve consumer execution vertices with dynamic graph
 The scheduler will try to decide the parallelism of all job vertices before handling each scheduling event, and the parallelism decision will be made for each job vertex in topological order:
 For source vertices, the parallelism should have been decided before starting scheduling. For non-source vertices, the parallelism can be decided only when all its consumed results are fully produced. After deciding the parallelism, the scheduler will try to initialize the job vertices in topological order. A job vertex that can be initialized should meet the following conditions:
 The parallelism of the job vertex has been decided and the job vertex has not been initialized yet. All upstream job vertices have been initialized. Future improvement # Auto-rebalancing of workloads # When running batch jobs, data skew may occur (a task needs to process much larger data than other tasks), which leads to long-tail tasks and further slows down the finish of jobs. Users usually hope that the system can automatically solve this problem. One typical data skew case is that so [...]
-Fig. 5 - Auto-rebalance with finer grained subpartitions `}),e.add({id:113,href:"/2022/06/05/apache-flink-kubernetes-operator-1.0.0-release-announcement/",title:"Apache Flink Kubernetes Operator 1.0.0 Release Announcement",section:"Flink Blog",content:`In the last two months since our initial preview release the community has been hard at work to stabilize and improve the core Flink Kubernetes Operator logic. We are now proud to announce the first production ready release of the operator [...]
+Fig. 5 - Auto-rebalance with finer grained subpartitions `}),e.add({id:115,href:"/2022/06/05/apache-flink-kubernetes-operator-1.0.0-release-announcement/",title:"Apache Flink Kubernetes Operator 1.0.0 Release Announcement",section:"Flink Blog",content:`In the last two months since our initial preview release the community has been hard at work to stabilize and improve the core Flink Kubernetes Operator logic. We are now proud to announce the first production ready release of the operator [...]
 Release Highlights # The Flink Kubernetes Operator 1.0.0 version brings numerous improvements and new features to almost every aspect of the operator.
 New v1beta1 API version &amp; compatibility guarantees Session Job Management support Support for Flink 1.13, 1.14 and 1.15 Deployment recovery and rollback New Operator metrics Improved configuration management Custom validators Savepoint history and cleanup New API version and compatibility guarantees # The 1.0.0 release brings a new API version: v1beta1.
 Don’t let the name confuse you, we consider v1beta1 the first production ready API release, and we will maintain backward compatibility for your applications going forward.
@@ -1780,7 +1865,7 @@ $ helm repo add flink-kubernetes-operator-1.0.0 https://archive.apache.org/dist/
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # The Apache Flink community would like to thank each and every one of the contributors that have made this release possible:
 Aitozi, Biao Geng, ConradJam, Fuyao Li, Gyula Fora, Jaganathan Asokan, James Busche, liuzhuo, Márton Balassi, Matyas Orhidi, Nicholas Jiang, Ted Chang, Thomas Weise, Xin Hao, Yang Wang, Zili Chen
-`}),e.add({id:114,href:"/2022/05/30/improving-speed-and-stability-of-checkpointing-with-generic-log-based-incremental-checkpoints/",title:"Improving speed and stability of checkpointing with generic log-based incremental checkpoints",section:"Flink Blog",content:` Introduction # One of the most important characteristics of stream processing systems is end-to-end latency, i.e. the time it takes for the results of processing an input record to reach the outputs. In the case of Flink, end-t [...]
+`}),e.add({id:116,href:"/2022/05/30/improving-speed-and-stability-of-checkpointing-with-generic-log-based-incremental-checkpoints/",title:"Improving speed and stability of checkpointing with generic log-based incremental checkpoints",section:"Flink Blog",content:` Introduction # One of the most important characteristics of stream processing systems is end-to-end latency, i.e. the time it takes for the results of processing an input record to reach the outputs. In the case of Flink, end-t [...]
 Furthermore, сheckpoint duration also defines the reasonable interval with which checkpoints are made. A shorter interval provides the following advantages:
 Lower latency for transactional sinks: Transactional sinks commit on checkpoints, so faster checkpoints mean more frequent commits. More predictable checkpoint intervals: Currently, the duration of a checkpoint depends on the size of the artifacts that need to be persisted in the checkpoint storage. Less work on recovery. The more frequently the checkpoint, the fewer events need to be re-processed after recovery. Following are the main factors affecting checkpoint duration in Flink:
 Barrier travel time and alignment duration Time to take state snapshot and persist it onto the durable highly-available storage (such as S3) Recent improvements such as Unaligned checkpoints and Buffer debloating try to address (1), especially in the presence of back-pressure. Previously, Incremental checkpoints were introduced to reduce the size of a snapshot, thereby reducing the time required to store it (2).
@@ -1824,7 +1909,7 @@ Besides that, we are investigating other applications of Changelog, such as WAL
 We encourage you to try out this feature and assess the pros and cons of using it in your setup. The simplest way to do this it is to add the following to your flink-conf.yaml:
 state.backend.changelog.enabled: true state.backend.changelog.storage: filesystem dstl.dfs.base-path: &lt;location similar to state.checkpoints.dir&gt; Please see the full documentation here.
 Acknowledgments # We thank Stephan Ewen for the initial idea of the project, and many other engineers including Piotr Nowojski, Yu Li and Yun Tang for design discussions and code reviews.
-References # FLIP-158 generic log-based incremental checkpoints documentation Unaligned checkpoints Buffer debloating Incremental checkpoints `}),e.add({id:115,href:"/2022/05/23/getting-into-low-latency-gears-with-apache-flink-part-two/",title:"Getting into Low-Latency Gears with Apache Flink - Part Two",section:"Flink Blog",content:`This series of blog posts present a collection of low-latency techniques in Flink. In part one, we discussed the types of latency in Flink and the way we me [...]
+References # FLIP-158 generic log-based incremental checkpoints documentation Unaligned checkpoints Buffer debloating Incremental checkpoints `}),e.add({id:117,href:"/2022/05/23/getting-into-low-latency-gears-with-apache-flink-part-two/",title:"Getting into Low-Latency Gears with Apache Flink - Part Two",section:"Flink Blog",content:`This series of blog posts present a collection of low-latency techniques in Flink. In part one, we discussed the types of latency in Flink and the way we me [...]
 Direct latency optimization # Spread work across time # When you use timers or do windowing in a job, timer or window firing may create load spikes due to heavy computation or state access. If the allocated resources cannot cope with these load spikes, timer or window firing will take a long time to finish. This often results in high latency.
 To avoid this situation, you should change your code to spread out the workload as much as possible such that you do not accumulate too much work to be done at a single point in time. In the case of windowing, you should consider using incremental window aggregation with AggregateFunction or ReduceFunction. In the case of timers in a ProcessFunction, the operations executed in the onTimer() method should be optimized such that the time spent there is reduced to a minimum. If you see late [...]
 You can apply this optimization if you are using timer-based processing (e.g., timers, windowing) and an efficient aggregation can be applied whenever an event arrives instead of waiting for timers to fire.
@@ -1845,7 +1930,7 @@ Process events on arrival # In a stream processing pipeline, there often exists
 You can apply this optimization if your job has a sub-second level latency requirement (e.g., hundreds of milliseconds) and the reduced watermarking interval still contributes a significant part of the latency.
 Keep in mind that this may change your job logic considerably since you have to deal with out-of-order events by yourself.
 Summary # Following part one, this blog post presented a few more latency optimization techniques with a focus on direct latency optimization. In the next part, we will focus on techniques that optimize latency by increasing throughput. Stay tuned!
-`}),e.add({id:116,href:"/2022/05/18/getting-into-low-latency-gears-with-apache-flink-part-one/",title:"Getting into Low-Latency Gears with Apache Flink - Part One",section:"Flink Blog",content:`Apache Flink is a stream processing framework well known for its low latency processing capabilities. It is generic and suitable for a wide range of use cases. As a Flink application developer or a cluster administrator, you need to find the right gear that is best for your application. In other w [...]
+`}),e.add({id:118,href:"/2022/05/18/getting-into-low-latency-gears-with-apache-flink-part-one/",title:"Getting into Low-Latency Gears with Apache Flink - Part One",section:"Flink Blog",content:`Apache Flink is a stream processing framework well known for its low latency processing capabilities. It is generic and suitable for a wide range of use cases. As a Flink application developer or a cluster administrator, you need to find the right gear that is best for your application. In other w [...]
 In this multi-part series, we will present a collection of low-latency techniques in Flink. Part one starts with types of latency in Flink and the way we measure the end-to-end latency, followed by a few techniques that optimize latency directly. Part two continues with a few more direct latency optimization techniques. Further parts of this series will cover techniques that improve latencies by optimizing throughput. For each optimization technique, we will clarify what it is, when to u [...]
 This series of blog posts is a write-up of our talk in Flink Forward Global 2021 and includes additional latency optimization techniques and details.
 Latency # Types of latency # Latency can refer to different things. LatencyMarkers in Flink measure the time it takes for the markers to travel from each source operator to each downstream operator. As LatencyMarkers bypass user functions in operators, the measured latencies do not reflect the entire end-to-end latency but only a part of it. Flink also supports tracking the state access latency, which measures the response latency when state is read/written. One can also manually measure [...]
@@ -1870,7 +1955,7 @@ You can apply this optimization if you are aiming for sub-second latencies.
 Keep in mind that network buffer timeout that is too low may reduce throughput.
 As seen in the following experiment results, by using execution.buffer-timeout: 10 ms in WindowingJob, we again reduced the latency (now to 370ms).
 Summary # In part one of this multi-part series, we discussed types of latency in Flink and the way we measure end-to-end latency. Then we presented a few latency optimization techniques with a focus on direct latency optimization. For each technique, we explained what it is, when to use it, and what to keep in mind when using it. Part two will continue with a few more direct latency optimization techniques. Stay tuned!
-`}),e.add({id:117,href:"/2022/05/11/apache-flink-table-store-0.1.0-release-announcement/",title:"Apache Flink Table Store 0.1.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is pleased to announce the preview release of the Apache Flink Table Store (0.1.0).
+`}),e.add({id:119,href:"/2022/05/11/apache-flink-table-store-0.1.0-release-announcement/",title:"Apache Flink Table Store 0.1.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is pleased to announce the preview release of the Apache Flink Table Store (0.1.0).
 Please check out the full documentation for detailed information and user guides.
 Note: Flink Table Store is still in beta status and undergoing rapid development. We do not recommend that you use it directly in a production environment.
 What is Flink Table Store # In the past years, thanks to our numerous contributors and users, Apache Flink has established itself as one of the best distributed computing engines, especially for stateful stream processing at large scale. However, there are still a few challenges people are facing when they try to obtain insights from their data in real-time. Among these challenges, one prominent problem is lack of storage that caters to all the computing patterns.
@@ -1888,7 +1973,7 @@ Release Resources # The source artifacts and binaries are now available on the u
 We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # The Apache Flink community would like to thank every one of the contributors that have made this release possible:
 Jane Chan, Jiangjie (Becket) Qin, Jingsong Lee, Leonard Xu, Nicholas Jiang, Shen Zhu, tsreaper, Yubin Li
-`}),e.add({id:118,href:"/2022/05/06/exploring-the-thread-mode-in-pyflink/",title:"Exploring the thread mode in PyFlink",section:"Flink Blog",content:`PyFlink was introduced in Flink 1.9 which purpose is to bring the power of Flink to Python users and allow Python users to develop Flink jobs in Python language. The functionality becomes more and more mature through the development in the past releases.
+`}),e.add({id:120,href:"/2022/05/06/exploring-the-thread-mode-in-pyflink/",title:"Exploring the thread mode in PyFlink",section:"Flink Blog",content:`PyFlink was introduced in Flink 1.9 which purpose is to bring the power of Flink to Python users and allow Python users to develop Flink jobs in Python language. The functionality becomes more and more mature through the development in the past releases.
 Before Flink 1.15, Python user-defined functions will be executed in separate Python processes (based on the Apache Beam Portability Framework). It will bring additional serialization/deserialization overhead and also communication overhead. In scenarios where the data size is big, e.g. image processing, etc, this overhead becomes non-negligible. Besides, since it involves inter-process communication, the processing latency is also non-negligible, which is unacceptable in scenarios where [...]
 In Flink 1.15, we have introduced a new execution mode named &rsquo;thread&rsquo; mode (based on PEMJA) where the Python user-defined functions will be executed in the JVM as a thread instead of a separate Python process. In this article, we will dig into the details about this execution mode and also share some benchmark data to give users a basic understanding of how it works and which scenarios it’s applicable for.
 Process Mode # Fig. 1 - PyFlink Architecture Overview From Fig. 1, we can see the architecture of PyFlink. As shown on the left side of Fig.1, users could use PyFlink API(Python Table API &amp; SQL or Python DataStream API) to declare the logic of jobs, which will be finally translated into JobGraph (DAG of the job) which could be recognized by Flink’s execution framework. It should be noted that Python operators (Flink operators whose purpose is to execute Python user-defined functions) [...]
@@ -1930,7 +2015,7 @@ Thread mode can bring better performance than process mode when data serializati
 When the performance of Python UDF is close to that of Java UDF, the end-to-end performance of thread mode will be close to that of Java UDF.
 Summary &amp; Future work # In this article, we have introduced the &rsquo;thread&rsquo; execution mode in PyFlink which is a new feature introduced in Flink 1.15. Compared with the &lsquo;process&rsquo; execution mode, users will get better performance, lower latency, less checkpoint time in &rsquo;thread&rsquo; mode. However, there are also some limitations about &rsquo;thread&rsquo; mode, e.g. poor support for session deployment mode, etc.
 It should be noted that since this is still the first release of &rsquo;thread&rsquo; mode, currently there are still many limitations about it, e.g. it only supports Python ScalarFunction of Python Table API &amp; SQL. We&rsquo;re planning to extend it to other places where Python user-defined functions could be used in next releases.
-`}),e.add({id:119,href:"/2022/05/06/improvements-to-flink-operations-snapshots-ownership-and-savepoint-formats/",title:"Improvements to Flink operations: Snapshots Ownership and Savepoint Formats",section:"Flink Blog",content:`Flink has become a well established data streaming engine and a mature project requires some shifting of priorities from thinking purely about new features towards improving stability and operational simplicity. In the last couple of releases, the Flink community h [...]
+`}),e.add({id:121,href:"/2022/05/06/improvements-to-flink-operations-snapshots-ownership-and-savepoint-formats/",title:"Improvements to Flink operations: Snapshots Ownership and Savepoint Formats",section:"Flink Blog",content:`Flink has become a well established data streaming engine and a mature project requires some shifting of priorities from thinking purely about new features towards improving stability and operational simplicity. In the last couple of releases, the Flink community h [...]
 This post will outline the journey of improving snapshotting in past releases and the upcoming improvements in Flink 1.15, which includes making it possible to take savepoints in the native state backend specific format as well as clarifying snapshots ownership.
 Past improvements to the snapshotting process # Flink 1.13 was the first release where we announced unaligned checkpoints to be production-ready. We encouraged people to use them if their jobs are backpressured to a point where it causes issues for checkpoints. We also unified the binary format of savepoints across all different state backends, which enables stateful switching of savepoints.
 Flink 1.14 also brought additional improvements. As an alternative and as a complement to unaligned checkpoints, we introduced a feature called &ldquo;buffer debloating&rdquo;. This is built around the concept of automatically adjusting the amount of in-flight data that needs to be aligned while snapshotting. We also fixed another long-standing problem and made it possible to continue checkpointing even if there are finished tasks in a JobGraph.
@@ -1955,7 +2040,7 @@ You can choose the savepoint format when triggering the savepoint like this:
 Having additional dimensions of properties in each of the two main snapshots category does not make it easier, therefore we try to list what you can achieve with every type of snapshot.
 The following table gives an overview of capabilities and limitations for the various types of savepoints and checkpoints.
 ✓ - Flink fully supports this type of snapshot x - Flink doesn&rsquo;t support this type of snapshot Operation Canonical Savepoint Native Savepoint Aligned Checkpoint Unaligned Checkpoint State backend change ✓ x x x State Processor API(writing) ✓ x x x State Processor API(reading) ✓ ✓ ✓ x Self-contained and relocatable ✓ ✓ x x Schema evolution ✓ ✓ ✓ ✓ Arbitrary job upgrade ✓ ✓ ✓ x Non-arbitrary job upgrade ✓ ✓ ✓ x Flink minor version upgrade ✓ ✓ ✓ x Flink bug/patch version upgrade ✓ ✓ ✓ [...]
-`}),e.add({id:120,href:"/2022/05/05/announcing-the-release-of-apache-flink-1.15/",title:"Announcing the Release of Apache Flink 1.15",section:"Flink Blog",content:`Thanks to our well-organized and open community, Apache Flink continues to grow as a technology and remain one of the most active projects in the Apache community. With the release of Flink 1.15, we are proud to announce a number of exciting changes.
+`}),e.add({id:122,href:"/2022/05/05/announcing-the-release-of-apache-flink-1.15/",title:"Announcing the Release of Apache Flink 1.15",section:"Flink Blog",content:`Thanks to our well-organized and open community, Apache Flink continues to grow as a technology and remain one of the most active projects in the Apache community. With the release of Flink 1.15, we are proud to announce a number of exciting changes.
 One of the main concepts that makes Apache Flink stand out is the unification of batch (aka bounded) and stream (aka unbounded) data processing, which helps reduce the complexity of development. A lot of effort went into this unification in the previous releases, and you can expect more efforts in this direction.
 Apache Flink is not only growing when it comes to contributions and users, but also out of the original use cases. We are seeing a trend towards more business/analytics use cases implemented in low-/no-code. Flink SQL is the feature in the Flink ecosystem that enables such uses cases and this is why its popularity continues to grow.
 Apache Flink is an essential building block in data pipelines/architectures and is used with many other technologies in order to drive all sorts of use cases. While new ideas/products may appear in this domain, existing technologies continue to establish themselves as standards for solving mission-critical problems. Knowing that we have such a wide reach and play a role in the success of many projects, it is important that the experience of integrating Apache Flink with the cloud infrast [...]
@@ -2010,7 +2095,7 @@ Moving forward, the community will continue to focus on making Apache Flink a tr
 Upgrade Notes # While we aim to make upgrades as smooth as possible, some of the changes require users to adjust some parts of the program when upgrading to Apache Flink 1.15. Please take a look at the release notes for a list of applicable adjustments and issues during upgrades. The one big thing worth mentioning when upgrading is the updated dependencies without the Scala version. Get the details here.
 List of Contributors # The Apache Flink community would like to thank each and every one of the contributors that have made this release possible:
 Ada Wong, Ahmed Hamdy, Aitozi, Alexander Fedulov, Alexander Preuß, Alexander Trushev, Ali Bahadir Zeybek, Anton Kalashnikov, Arvid Heise, Bernard Joseph Jean Bruno, Bo Cui, Brian Zhou, Camile, ChangLi, Chengkai Yang, Chesnay Schepler, Daisy T, Danny Cranmer, David Anderson, David Moravek, David N Perkins, Dawid Wysakowicz, Denis-Cosmin Nutiu, Dian Fu, Dong Lin, Eelis Kostiainen, Etienne Chauchot, Fabian Paul, Francesco Guardiani, Gabor Somogyi, Galen Warren, Gao Yun, Gen Luo, GitHub, Gyu [...]
-`}),e.add({id:121,href:"/2022/04/03/apache-flink-kubernetes-operator-0.1.0-release-announcement/",title:"Apache Flink Kubernetes Operator 0.1.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the preview release of the Apache Flink Kubernetes Operator (0.1.0)
+`}),e.add({id:123,href:"/2022/04/03/apache-flink-kubernetes-operator-0.1.0-release-announcement/",title:"Apache Flink Kubernetes Operator 0.1.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce the preview release of the Apache Flink Kubernetes Operator (0.1.0)
 The Flink Kubernetes Operator allows users to easily manage their Flink deployment lifecycle using native Kubernetes tooling.
 The operator takes care of submitting, savepointing, upgrading and generally managing Flink jobs using the built-in Flink Kubernetes integration. This way users do not have to use the Flink Clients (e.g. CLI) or interact with the Flink jobs manually, they only have to declare the desired deployment specification and the operator will take care of the rest. It also make it easier to integrate Flink job management with CI/CD tooling.
 Core Features
@@ -2030,7 +2115,7 @@ $ helm repo add flink-kubernetes-operator-0.1.0 https://archive.apache.org/dist/
 For more details, check the updated documentation and the release notes. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 List of Contributors # The Apache Flink community would like to thank each and every one of the contributors that have made this release possible:
 Aitozi, Biao Geng, Gyula Fora, Hao Xin, Jaegu Kim, Jaganathan Asokan, Junfan Zhang, Marton Balassi, Matyas Orhidi, Nicholas Jiang, Sandor Kelemen, Thomas Weise, Yang Wang, 愚鲤
-`}),e.add({id:122,href:"/2022/03/16/the-generic-asynchronous-base-sink/",title:"The Generic Asynchronous Base Sink",section:"Flink Blog",content:`Flink sinks share a lot of similar behavior. Most sinks batch records according to user-defined buffering hints, sign requests, write them to the destination, retry unsuccessful or throttled requests, and participate in checkpointing.
+`}),e.add({id:124,href:"/2022/03/16/the-generic-asynchronous-base-sink/",title:"The Generic Asynchronous Base Sink",section:"Flink Blog",content:`Flink sinks share a lot of similar behavior. Most sinks batch records according to user-defined buffering hints, sign requests, write them to the destination, retry unsuccessful or throttled requests, and participate in checkpointing.
 This is why for Flink 1.15 we have decided to create the AsyncSinkBase (FLIP-171), an abstract sink with a number of common functionalities extracted.
 This is a base implementation for asynchronous sinks, which you should use whenever you need to implement a sink that doesn&rsquo;t offer transactional capabilities. Adding support for a new destination now only requires a lightweight shim that implements the specific interfaces of the destination using a client that supports async requests.
 This common abstraction will reduce the effort required to maintain individual sinks that extend from this abstract sink, with bug fixes and improvements to the sink core benefiting all implementations that extend it. The design of AsyncSinkBase focuses on extensibility and a broad support of destinations. The core of the sink is kept generic and free of any connector-specific dependencies.
@@ -2055,11 +2140,11 @@ Metrics # There are three metrics that automatically exist when you implement si
 CurrentSendTime Gauge - returns the amount of time in milliseconds it took for the most recent request to write records to complete, whether successful or not. NumBytesOut Counter - counts the total number of bytes the sink has tried to write to the destination, using the method getSizeInBytes to determine the size of each record. This will double count failures that may need to be retried. NumRecordsOut Counter - similar to above, this counts the total number of records the sink has tri [...]
 int maxBatchSize - maximum number of elements that may be passed in the list to submitRequestEntries to be written downstream. int maxInFlightRequests - maximum number of uncompleted calls to submitRequestEntries that the SinkWriter will allow at any given point. Once this point has reached, writes and callbacks to add elements to the buffer may block until one or more requests to submitRequestEntries completes. int maxBufferedRequests - maximum buffer length. Callbacks to add elements t [...]
 Summary # The AsyncSinkBase is a new abstraction that makes creating and maintaining async sinks easier. This will be available in Flink 1.15 and we hope that you will try it out and give us feedback on it.
-`}),e.add({id:123,href:"/2022/03/11/apache-flink-1.14.4-release-announcement/",title:"Apache Flink 1.14.4 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce another bug fix release for Flink 1.14.
+`}),e.add({id:125,href:"/2022/03/11/apache-flink-1.14.4-release-announcement/",title:"Apache Flink 1.14.4 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce another bug fix release for Flink 1.14.
 This release includes 51 bug and vulnerability fixes and minor improvements for Flink 1.14. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users to upgrade to Flink 1.14.4.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.14.4&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.14.4&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.14.4 Release Notes # Sub-task [FLINK-21788] - Throw PartitionNotFoundException if the partition file has been lost for blocking shuffle [FLINK-24954] - Reset read buffer request timeout on buffer recycling for sort-shuffle [FLINK-25653] - Move buffer recycle in SortMergeSubpartitionReader out of lock to avoid deadlock [FLINK-25654] - Remove the redundant lock in SortMergeResultPartition [ [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.14.4 Release Notes # Sub-task [FLINK-21788] - Throw PartitionNotFoundException if the partition file has been lost for blocking shuffle [FLINK-24954] - Reset read buffer request timeout on buffer recycling for sort-shuffle [FLINK-25653] - Move buffer recycle in SortMergeSubpartitionReader out of lock to avoid deadlock [FLINK-25654] - Remove the redundant lock in SortMergeResultPartition [ [...]
 Fig.1 Flink 1.15 Scala 3 Example This blog will discuss what has historically made supporting multiple Scala versions so complex, how we achieved this milestone, and the future of Scala in Apache Flink.
 TLDR: All Scala dependencies are now isolated to the flink-scala jar. To remove Scala from the user-code classpath, remove this jar from the lib directory of the Flink distribution. $ rm flink-dist/lib/flink-scala* The Classpath and Scala # If you have worked with a JVM-based application, you have probably heard the term classpath. The classpath defines where the JVM will search for a given classfile when it needs to be loaded. There may only be one instance of a classfile on each classp [...]
 The Apache Flink runtime is primarily written in Java but contains critical components that forced Scala on the default classpath. And because Scala does not maintain binary compatibility across minor releases, this historically required cross-building components for all versions of Scala. But due to many reasons - breaking changes in the compiler, a new standard library, and a reworked macro system - this was easier said than done.
@@ -2078,11 +2163,11 @@ https://nightlies.apache.org/flink/flink-docs-master/docs/dev/configuration/adva
 https://github.com/ariskk/flink4s&#160;&#x21a9;&#xfe0e;
 https://github.com/flink-extended/flink-scala-api&#160;&#x21a9;&#xfe0e;
 https://github.com/sjwiesman/flink-scala-3&#160;&#x21a9;&#xfe0e;
-`}),e.add({id:125,href:"/2022/02/18/apache-flink-1.13.6-release-announcement/",title:"Apache Flink 1.13.6 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce another bug fix release for Flink 1.13.
+`}),e.add({id:127,href:"/2022/02/18/apache-flink-1.13.6-release-announcement/",title:"Apache Flink 1.13.6 Release Announcement",section:"Flink Blog",content:`The Apache Flink Community is pleased to announce another bug fix release for Flink 1.13.
 This release includes 99 bug and vulnerability fixes and minor improvements for Flink 1.13 including another upgrade of Apache Log4j (to 2.17.1). Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.
 We highly recommend all users to upgrade to Flink 1.13.6.
 Release Artifacts # Maven Dependencies # &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.13.6&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.13.6&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink [...]
-Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.13.6 Release Notes # Bug [FLINK-15987] - SELECT 1.0e0 / 0.0e0 throws NumberFormatException [FLINK-17914] - HistoryServer deletes cached archives if archive listing fails [FLINK-20195] - Jobs endpoint returns duplicated jobs [FLINK-20370] - Result is wrong when sink primary key is not the same with query [FLINK-21289] - Application mode ignores the pipeline.classpaths configuration [FLINK- [...]
+Docker Images # library/flink (official images) apache/flink (ASF repository) PyPi # apache-flink==1.13.6 Release Notes # Bug [FLINK-15987] - SELECT 1.0e0 / 0.0e0 throws NumberFormatException [FLINK-17914] - HistoryServer deletes cached archives if archive listing fails [FLINK-20195] - Jobs endpoint returns duplicated jobs [FLINK-20370] - Result is wrong when sink primary key is not the same with query [FLINK-21289] - Application mode ignores the pipeline.classpaths configuration [FLINK- [...]
 The binary distribution and source artifacts are now available on the updated Downloads page of the Flink website, and the most recent Java SDK, Python SDK,, GoLang SDK and JavaScript SDK distributions are available on Maven, PyPI, Github, and npm respectively. You can also find official StateFun Docker images of the new version on Dockerhub.
 For more details, check the complete release changelog and the updated documentation. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA!
 New Features # A brand new JavaScript SDK for NodeJS # Stateful Functions provides a unified model for building stateful applications across various programming languages and deployment environments. The community is thrilled to release an official JavaScript SDK as part of the 3.2.0 release.
@@ -2098,7 +2183,7 @@ Upgraded Flink dependency to 1.14.3 # Stateful Functions 3.2.0 runtime uses Flin
 Release Notes # Please review the release notes for a detailed list of changes and new features if you plan to upgrade your setup to Stateful Functions 3.2.0.
 List of Contributors # Seth Wiesman, Igal Shilman, Till Rohrmann, Stephan Ewen, Tzu-Li (Gordon) Tai, Ingo Bürk, Evans Ye, neoXfire, Galen Warren
 If you’d like to get involved, we’re always looking for new contributors.
-`}),e.add({id:127,href:"/2022/01/20/pravega-flink-connector-101/",title:"Pravega Flink Connector 101",section:"Flink Blog",content:`Pravega, which is now a CNCF sandbox project, is a cloud-native storage system based on abstractions for both batch and streaming data consumption. Pravega streams (a new storage abstraction) are durable, consistent, and elastic, while natively supporting long-term data retention. In comparison, Apache Flink is a popular real-time computing engine that provi [...]
+`}),e.add({id:129,href:"/2022/01/20/pravega-flink-connector-101/",title:"Pravega Flink Connector 101",section:"Flink Blog",content:`Pravega, which is now a CNCF sandbox project, is a cloud-native storage system based on abstractions for both batch and streaming data consumption. Pravega streams (a new storage abstraction) are durable, consistent, and elastic, while natively supporting long-term data retention. In comparison, Apache Flink is a popular real-time computing engine that provi [...]
 That&rsquo;s also the main reason why Pravega has chosen to use Flink as the first integrated execution engine among the various distributed computing engines on the market. With the help of Flink, users can use flexible APIs for windowing, complex event processing (CEP), or table abstractions to process streaming data easily and enrich the data being stored. Since its inception in 2016, Pravega has established communication with Flink PMC members and developed the connector together.
 In 2017, the Pravega Flink connector module started to move out of the Pravega main repository and has been maintained in a new separate repository since then. During years of development, many features have been implemented, including:
 exactly-once processing guarantees for both Reader and Writer, supporting end-to-end exactly-once processing pipelines seamless integration with Flink&rsquo;s checkpoints and savepoints parallel Readers and Writers supporting high throughput and low latency processing support for Batch, Streaming, and Table API to access Pravega Streams These key features make streaming pipeline applications easier to develop without worrying about performance and correctness which are the common pain po [...]
@@ -2139,12 +2224,12 @@ Summary # The Pravega Flink connector enables Pravega to connect to Flink and al
 Future plans # FlinkPravegaInputFormat and FlinkPravegaOutputFormat are now provided to support batch reads and writes in Flink, but these are under the legacy DataSet API. Since Flink is now making efforts to unify batch and streaming, it is improving its APIs and providing new interfaces for the source and sink APIs in the Flink 1.11 and 1.12 releases. We will continue to work with the Flink community and integrate with the new APIs.
 We will also put more effort into SQL / Table API support in order to provide a better user experience since it is simpler to understand and even more powerful to use in some cases.
 Note: the original blog post can be found here.
-`}),e.add({id:128,href:"/2022/01/17/apache-flink-1.14.3-release-announcement/",title:"Apache Flink 1.14.3 Release Announcement",section:"Flink Blog",content:`The Apache Flink community released the second bugfix version of the Apache Flink 1.14 series. The first bugfix release was 1.14.2, being an emergency release due to an Apache Log4j Zero Day (CVE-2021-44228). Flink 1.14.1 was abandoned. That means that this Flink release is the first bugfix release of the Flink 1.14 series which con [...]
+`}),e.add({id:130,href:"/2022/01/17/apache-flink-1.14.3-release-announcement/",title:"Apache Flink 1.14.3 Release Announcement",section:"Flink Blog",content:`The Apache Flink community released the second bugfix version of the Apache Flink 1.14 series. The first bugfix release was 1.14.2, being an emergency release due to an Apache Log4j Zero Day (CVE-2021-44228). Flink 1.14.1 was abandoned. That means that this Flink release is the first bugfix release of the Flink 1.14 series which con [...]
 This release includes 164 fixes and minor improvements for Flink 1.14.0. The list below includes bugfixes and improvements. For a complete list of all changes see: JIRA.
 We highly recommend all users to upgrade to Flink 1.14.3.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.14.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.14.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;vers [...]
-Release Notes - Flink - Version 1.14.3 Sub-task [FLINK-24355] - Expose the flag for enabling checkpoints after tasks finish in the Web UI Bug [FLINK-15987] - SELECT 1.0e0 / 0.0e0 throws NumberFormatException [FLINK-17914] - HistoryServer deletes cached archives if archive listing fails [FLINK-19142] - Local recovery can be broken if slot hijacking happened during a full restart [FLINK-20195] - Jobs endpoint returns duplicated jobs [FLINK-20370] - Result is wrong when sink primary key is  [...]
+Release Notes - Flink - Version 1.14.3 Sub-task [FLINK-24355] - Expose the flag for enabling checkpoints after tasks finish in the Web UI Bug [FLINK-15987] - SELECT 1.0e0 / 0.0e0 throws NumberFormatException [FLINK-17914] - HistoryServer deletes cached archives if archive listing fails [FLINK-19142] - Local recovery can be broken if slot hijacking happened during a full restart [FLINK-20195] - Jobs endpoint returns duplicated jobs [FLINK-20370] - Result is wrong when sink primary key is  [...]
 This release involves a major refactor of the earlier Flink ML library and introduces major features that extend the Flink ML API and the iteration runtime, such as supporting stages with multi-input multi-output, graph-based stage composition, and a new stream-batch unified iteration library. Moreover, we added five algorithm implementations in this release, which is the start of a long-term initiative to provide a large number of off-the-shelf algorithms in Flink ML with state-of-the-a [...]
 We believe this release is an important step towards extending Apache Flink to a wide range of machine learning use cases, especially the real-time machine learning scenarios.
 We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA! We hope you like the new release and we’d be eager to learn about your experience with it.
@@ -2186,14 +2271,14 @@ Release Notes and Resources # Please take a look at the release notes for a deta
 The binary distribution and source artifacts are now available on the updated Downloads page of the Flink website, and the most recent distribution of Flink ML Python package is available on PyPI.
 List of Contributors # The Apache Flink community would like to thank each one of the contributors that have made this release possible:
 Yun Gao, Dong Lin, Zhipeng Zhang, huangxingbo, Yunfeng Zhou, Jiangjie (Becket) Qin, weibo, abdelrahman-ik.
-`}),e.add({id:130,href:"/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-one/",title:"How We Improved Scheduler Performance for Large-scale Jobs - Part One",section:"Flink Blog",content:` Introduction # When scheduling large-scale jobs in Flink 1.12, a lot of time is required to initialize jobs and deploy tasks. The scheduler also requires a large amount of heap memory in order to store the execution topology and host temporary deployment descriptors. For examp [...]
+`}),e.add({id:132,href:"/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-one/",title:"How We Improved Scheduler Performance for Large-scale Jobs - Part One",section:"Flink Blog",content:` Introduction # When scheduling large-scale jobs in Flink 1.12, a lot of time is required to initialize jobs and deploy tasks. The scheduler also requires a large amount of heap memory in order to store the execution topology and host temporary deployment descriptors. For examp [...]
 Furthermore, task deployment may block the JobManager&rsquo;s main thread for a long time and the JobManager will not be able to respond to any other requests from TaskManagers. This could lead to heartbeat timeouts that trigger a failover. In the worst case, this will render the Flink cluster unusable because it cannot deploy the job.
 To improve the performance of the scheduler for large-scale jobs, we&rsquo;ve implemented several optimizations in Flink 1.13 and 1.14:
 Introduce the concept of consuming groups to optimize procedures related to the complexity of topologies, including the initialization, scheduling, failover, and partition release. This also reduces the memory required to store the topology; Introduce a cache to optimize task deployment, which makes the process faster and requires less memory; Leverage characteristics of the logical topology and the scheduling topology to speed up the building of pipelined regions. Benchmarking Results # [...]
 Table 1 - The comparison of time cost between Flink 1.12 and 1.14 Procedure 1.12 1.14 Reduction(%) Job Initialization 11,431ms 627ms 94.51% Task Deployment 63,118ms 17,183ms 72.78% Computing tasks to restart when failover 37,195ms 170ms 99.55% In addition to quicker speeds, the memory usage is significantly reduced. It requires 30 GiB heap memory for a JobManager to deploy the test job and keep it running stably with Flink 1.12, while the minimum heap memory required by the JobManager wi [...]
 In our experiment, it took more than 4 minutes for the large-scale job with Flink 1.12 to transition to running (excluding the time spent on allocating resources). With Flink 1.14, it took no more than 30 seconds (excluding the time spent on allocating resources). The time cost is reduced by 87%. Thus, for users who are running large-scale jobs for production and want better scheduling performance, please consider upgrading Flink to 1.14.
 In part two of this blog post, we are going to talk about these improvements in detail.
-`}),e.add({id:131,href:"/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-two/",title:"How We Improved Scheduler Performance for Large-scale Jobs - Part Two",section:"Flink Blog",content:`Part one of this blog post briefly introduced the optimizations we’ve made to improve the performance of the scheduler; compared to Flink 1.12, the time cost and memory usage of scheduling large-scale jobs in Flink 1.14 is significantly reduced. In part two, we will elaborate o [...]
+`}),e.add({id:133,href:"/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-two/",title:"How We Improved Scheduler Performance for Large-scale Jobs - Part Two",section:"Flink Blog",content:`Part one of this blog post briefly introduced the optimizations we’ve made to improve the performance of the scheduler; compared to Flink 1.12, the time cost and memory usage of scheduling large-scale jobs in Flink 1.14 is significantly reduced. In part two, we will elaborate o [...]
 Reducing complexity with groups # A distribution pattern describes how consumer tasks are connected to producer tasks. Currently, there are two distribution patterns in Flink: pointwise and all-to-all. When the distribution pattern is pointwise between two vertices, the computational complexity of traversing all edges is O(n). When the distribution pattern is all-to-all, the complexity of traversing all edges is O(n2), which means that complexity increases rapidly when the scale goes up.
 Fig. 1 - Two distribution patterns in Flink In Flink 1.12, the ExecutionEdge class is used to store the information of connections between tasks. This means that for the all-to-all distribution pattern, there would be O(n2) ExecutionEdges, which would take up a lot of memory for large-scale jobs. For two JobVertices connected with an all-to-all edge and a parallelism of 10K, it would take more than 4 GiB memory to store 100M ExecutionEdges. Since there can be multiple all-to-all connecti [...]
 As we can see in Fig. 1, for two JobVertices connected with the all-to-all distribution pattern, all IntermediateResultPartitions produced by upstream ExecutionVertices are isomorphic, which means that the downstream ExecutionVertices they connect to are exactly the same. The downstream ExecutionVertices belonging to the same JobVertex are also isomorphic, as the upstream IntermediateResultPartitions they connect to are the same too. Since every JobEdge has exactly one distribution type, [...]
@@ -2223,22 +2308,22 @@ If there are any all-to-all distribution patterns inside the region, the entire
 If there are only pointwise distribution patterns inside a region, Tarjan&rsquo;s strongly connected components algorithm is still used to ensure no cyclic dependencies. Since there are only pointwise distribution patterns, the number of edges in the topology is O(n), and the computational complexity of the algorithm will be O(n).
 Fig. 6 - How to convert a LogicalPipelinedRegion to ScheduledPipelinedRegions After the optimization, the overall computational complexity of building pipelined regions decreases from O(n2) to O(n). In our experiments, for the job which contains two vertices connected with a blocking all-to-all edge, when their parallelisms are both 10K, the time of building pipelined regions decreases by 99%, from 8,257 ms to 120 ms.
 Summary # All in all, we&rsquo;ve done several optimizations to improve the scheduler’s performance for large-scale jobs in Flink 1.13 and 1.14. The optimizations involve procedures including job initialization, scheduling, task deployment, and failover. If you have any questions about them, please feel free to start a discussion in the dev mail list.
-`}),e.add({id:132,href:"/2021/12/22/apache-flink-statefun-log4j-emergency-release/",title:"Apache Flink StateFun Log4j emergency release",section:"Flink Blog",content:`The Apache Flink community has released an emergency bugfix version of Apache Flink Stateful Function 3.1.1.
+`}),e.add({id:134,href:"/2021/12/22/apache-flink-statefun-log4j-emergency-release/",title:"Apache Flink StateFun Log4j emergency release",section:"Flink Blog",content:`The Apache Flink community has released an emergency bugfix version of Apache Flink Stateful Function 3.1.1.
 This release include a version upgrade of Apache Flink to 1.13.5, for log4j to address CVE-2021-44228 and CVE-2021-45046.
 We highly recommend all users to upgrade to the latest patch release.
 You can find the source and binaries on the updated Downloads page, and Docker images in the apache/flink-statefun dockerhub repository.
-`}),e.add({id:133,href:"/2021/12/16/apache-flink-log4j-emergency-releases/",title:"Apache Flink Log4j emergency releases",section:"Flink Blog",content:`The Apache Flink community has released emergency bugfix versions of Apache Flink for the 1.11, 1.12, 1.13 and 1.14 series.
+`}),e.add({id:135,href:"/2021/12/16/apache-flink-log4j-emergency-releases/",title:"Apache Flink Log4j emergency releases",section:"Flink Blog",content:`The Apache Flink community has released emergency bugfix versions of Apache Flink for the 1.11, 1.12, 1.13 and 1.14 series.
 These releases only include a version upgrade for Log4j to address CVE-2021-44228 and CVE-2021-45046.
 We highly recommend all users to upgrade to the respective patch release.
 You can find the source and binaries on the updated Downloads page, and Docker images in the apache/flink dockerhub repository.
 We are publishing this announcement earlier than usual to give users access to the updated source/binary releases as soon as possible. As a result of that certain artifacts are not yet available:
 Maven artifacts are currently being synced to Maven central and will become available over the next 24 hours. The 1.11.6/1.12.7 Python binaries will be published at a later date. This post will be continously updated to reflect the latest state.
 The newly released versions are: 1.14.2 1.13.5 1.12.7 1.11.6 To clarify and avoid confusion: The 1.14.1 / 1.13.4 / 1.12.6 / 1.11.5 releases, which were supposed to only contain a Log4j upgrade to 2.15.0, were skipped because CVE-2021-45046 was discovered during the release publication. Some artifacts were published to Maven Central, but no source/binary releases nor Docker images are available for those versions.
-`}),e.add({id:134,href:"/2021/12/10/advise-on-apache-log4j-zero-day-cve-2021-44228/",title:"Advise on Apache Log4j Zero Day (CVE-2021-44228)",section:"Flink Blog",content:` Please see [this](/news/2021/12/16/log4j-patch-releases) for our updated recommendation regarding this CVE. Yesterday, a new Zero Day for Apache Log4j was reported. It is by now tracked under CVE-2021-44228.
+`}),e.add({id:136,href:"/2021/12/10/advise-on-apache-log4j-zero-day-cve-2021-44228/",title:"Advise on Apache Log4j Zero Day (CVE-2021-44228)",section:"Flink Blog",content:` Please see [this](/news/2021/12/16/log4j-patch-releases) for our updated recommendation regarding this CVE. Yesterday, a new Zero Day for Apache Log4j was reported. It is by now tracked under CVE-2021-44228.
 Apache Flink is bundling a version of Log4j that is affected by this vulnerability. We recommend users to follow the advisory of the Apache Log4j Community. For Apache Flink this currently translates to setting the following property in your flink-conf.yaml:
 env.java.opts: -Dlog4j2.formatMsgNoLookups=true If you are already setting env.java.opts.jobmanager, env.java.opts.taskmanager, env.java.opts.client, or env.java.opts.historyserver you should instead add the system change to those existing parameter lists.
 As soon as Log4j has been upgraded to 2.15.0 in Apache Flink, this is not necessary anymore. This effort is tracked in FLINK-25240. It will be included in Flink 1.15.0, Flink 1.14.1 and Flink 1.13.3. We expect Flink 1.14.1 to be released in the next 1-2 weeks. The other releases will follow in their regular cadence.
-`}),e.add({id:135,href:"/2021/11/03/flink-backward-the-apache-flink-retrospective/",title:"Flink Backward - The Apache Flink Retrospective",section:"Flink Blog",content:`It has now been a month since the community released Apache Flink 1.14 into the wild. We had a comprehensive look at the enhancements, additions, and fixups in the release announcement blog post, and now we will look at the development cycle from a different angle. Based on feedback collected from contributors involved i [...]
+`}),e.add({id:137,href:"/2021/11/03/flink-backward-the-apache-flink-retrospective/",title:"Flink Backward - The Apache Flink Retrospective",section:"Flink Blog",content:`It has now been a month since the community released Apache Flink 1.14 into the wild. We had a comprehensive look at the enhancements, additions, and fixups in the release announcement blog post, and now we will look at the development cycle from a different angle. Based on feedback collected from contributors involved i [...]
 A retrospective on the release cycle # From the team, we collected emotions that have been attributed to points in time of the 1.14 release cycle:
 The overall sentiment seems to be quite good. A ship crushed a robot two times, someone felt sick towards the end, an octopus causing negative emotions appeared in June&hellip;
 We looked at the origin of these emotions and analyzed what went well and what could be improved. We also incorporated some feedback gathered from the community.
@@ -2263,7 +2348,7 @@ With FLINK-2491, we closed the third most watched issue in the Apache Flink Jira
 :heart:
 An open source community is more than just working on software. Apache Flink is the perfect example of software that is collaborated on in all parts of the world. The active mailing list, the discussions on FLIPs, and the interactions on Jira tickets all document how people work together to build something great. We should never forget that.
 In the meantime, the community is already working towards Apache Flink 1.15. If you would like to become a contributor, please reach out via the dev mailing list. We are happy to help you find a ticket to get started on.
-`}),e.add({id:136,href:"/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-one/",title:"Sort-Based Blocking Shuffle Implementation in Flink - Part One",section:"Flink Blog",content:`Part one of this blog post will explain the motivation behind introducing sort-based blocking shuffle, present benchmark results, and provide guidelines on how to use this new feature.
+`}),e.add({id:138,href:"/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-one/",title:"Sort-Based Blocking Shuffle Implementation in Flink - Part One",section:"Flink Blog",content:`Part one of this blog post will explain the motivation behind introducing sort-based blocking shuffle, present benchmark results, and provide guidelines on how to use this new feature.
 How data gets passed around between operators # Data shuffling is an important stage in batch processing applications and describes how data is sent from one operator to the next. In this phase, output data of the upstream operator will spill over to persistent storages like disk, then the downstream operator will read the corresponding data and process it. Blocking shuffle means that intermediate results from operator A are not sent immediately to operator B until operator A has complet [...]
 The hash-based and sort-based blocking shuffle are two main blocking shuffle implementations widely adopted by existing distributed data processing frameworks:
 Hash-Based Approach: The core idea behind the hash-based approach is to write data consumed by different consumer tasks to different files and each file can then serve as a natural boundary for the partitioned data. Sort-Based Approach: The core idea behind the sort-based approach is to write all the produced data together first and then leverage sorting to cluster data belonging to different data partitions or even keys. The sort-based blocking shuffle was introduced in Flink 1.12 and f [...]
@@ -2282,7 +2367,7 @@ taskmanager.memory.framework.off-heap.batch-shuffle.size: This configuration def
 For more information about blocking shuffle in Flink, please refer to the official documentation.
 Note: From the optimization mechanism in part two, we can see that the IO scheduling relies on the concurrent data read requests of the downstream consumer tasks for more sequential reads. As a result, if the downstream consumer task is running one by one (for example, because of limited resources), the advantage brought by IO scheduling disappears, which can influence performance. We may further optimize this scenario in future versions.
 What&rsquo;s next? # For details on the design and implementation of this feature, please refer to the second part of this blog!
-`}),e.add({id:137,href:"/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-two/",title:"Sort-Based Blocking Shuffle Implementation in Flink - Part Two",section:"Flink Blog",content:`Part one of this blog post explained the motivation behind introducing sort-based blocking shuffle, presented benchmark results, and provided guidelines on how to use this new feature.
+`}),e.add({id:139,href:"/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-two/",title:"Sort-Based Blocking Shuffle Implementation in Flink - Part Two",section:"Flink Blog",content:`Part one of this blog post explained the motivation behind introducing sort-based blocking shuffle, presented benchmark results, and provided guidelines on how to use this new feature.
 Like sort-merge shuffle implemented by other distributed data processing frameworks, the whole sort-based shuffle process in Flink consists of several important stages, including collecting data in memory, sorting the collected data in memory, spilling the sorted data to files, and reading the shuffle data from these spilled files. However, Flink’s implementation has some core differences, including the multiple data region file structure, the removal of file merge, and IO scheduling.
 In part two of this blog post, we will give you insight into some core design considerations and implementation details of the sort-based blocking shuffle in Flink and list several ideas for future improvement.
 Design considerations # There are several core objectives we want to achieve for the new sort-based blocking shuffle to be implemented Flink:
@@ -2310,7 +2395,7 @@ Future improvements # TCP Connection Reuse: This improvement is also useful for
 Multi-Disks Load Balance: Multi-Disks Load Balance: In production environments, there are usually multiple disks per node, better load balance can lead to better performance, the relevant issues are FLINK-21790 and FLINK-21789.
 External/Remote Shuffle Service: Implementing an external/remote shuffle service can further improve the shuffle io performance because as a centralized service, it can collect more information leading to more optimized decisions. For example, further merging of data to the same downstream task, better node-level load balance, handling of stragglers, shared resources and so on. There are several relevant issues: FLINK-13247, FLINK-22672, FLINK-19551 and FLINK-10653.
 Enable the Choice of SSD/HDD: In production environments, there are usually both SSD and HDD storage. Some jobs may prefer SSD for the faster speed, some jobs may prefer HDD for larger space and cheaper price. Enabling the choice of SSD/HDD can improve the usability of Flink’s blocking shuffle.
-`}),e.add({id:138,href:"/2021/10/19/apache-flink-1.13.3-released/",title:"Apache Flink 1.13.3 Released",section:"Flink Blog",content:`The Apache Flink community released the third bugfix version of the Apache Flink 1.13 series.
+`}),e.add({id:140,href:"/2021/10/19/apache-flink-1.13.3-released/",title:"Apache Flink 1.13.3 Released",section:"Flink Blog",content:`The Apache Flink community released the third bugfix version of the Apache Flink 1.13 series.
 This release includes 136 fixes and minor improvements for Flink 1.13.2. The list below includes bugfixes and improvements. For a complete list of all changes see: JIRA.
 We highly recommend all users to upgrade to Flink 1.13.3.
 Updated Maven dependencies:
@@ -2321,7 +2406,7 @@ Table API &lsquo;Primary Key&rsquo; feature was not working correctly (FLINK-238
 Clarify SourceFunction#cancel() contract about interrupting (FLINK-23527) # The contract of the SourceFunction#cancel() method with respect to interruptions has been clarified:
 The source itself shouldn&rsquo;t interrupt the source thread. The source can expect to not be interrupted during a clean cancellation procedure. taskmanager.slot.timeout falls back to akka.ask.timeout (FLINK-22002) # The config option taskmanager.slot.timeout falls now back to akka.ask.timeout if no value has been configured.
 Increase akka.ask.timeout for tests using the MiniCluster (FLINK-23906) # The default akka.ask.timeout used by the MiniCluster has been increased to 5 minutes. If you want to use a smaller value, then you have to set it explicitly in the passed configuration. The change is due to the fact that messages cannot get lost in a single-process minicluster, so this timeout (which otherwise helps to detect message loss in distributed setups) has no benefit here. The increased timeout reduces the [...]
-`}),e.add({id:139,href:"/2021/09/29/apache-flink-1.14.0-release-announcement/",title:"Apache Flink 1.14.0 Release Announcement",section:"Flink Blog",content:`The Apache Software Foundation recently released its annual report and Apache Flink once again made it on the list of the top 5 most active projects! This remarkable activity also shows in the new 1.14.0 release. Once again, more than 200 contributors worked on over 1,000 issues. We are proud of how this community is consistently mo [...]
+`}),e.add({id:141,href:"/2021/09/29/apache-flink-1.14.0-release-announcement/",title:"Apache Flink 1.14.0 Release Announcement",section:"Flink Blog",content:`The Apache Software Foundation recently released its annual report and Apache Flink once again made it on the list of the top 5 most active projects! This remarkable activity also shows in the new 1.14.0 release. Once again, more than 200 contributors worked on over 1,000 issues. We are proud of how this community is consistently mo [...]
 This release brings many new features and improvements in areas such as the SQL API, more connector support, checkpointing, and PyFlink. A major area of changes in this release is the integrated streaming &amp; batch experience. We believe that, in practice, unbounded stream processing goes hand-in-hand with bounded- and batch processing tasks, because many use cases require processing historic data from various sources alongside streaming data. Examples are data exploration when develop [...]
 In Flink 1.14, we finally made it possible to mix bounded and unbounded streams in an application: Flink now supports taking checkpoints of applications that are partially running and partially finished (some operators reached the end of the bounded inputs). Additionally, bounded streams now take a final checkpoint when reaching their end to ensure smooth committing of results in sinks.
 The batch execution mode now supports programs that use a mixture of the DataStream API and the SQL/Table API (previously only pure Table/SQL or DataStream programs).
@@ -2375,7 +2460,7 @@ The active integration with Apache Mesos was also removed, because we saw little
 Upgrade Notes # While we aim to make upgrades as smooth as possible, some of the changes require users to adjust some parts of the program when upgrading to Apache Flink 1.14. Please take a look at the release notes for a list of adjustments to make and issues to check during upgrades.
 List of Contributors # The Apache Flink community would like to thank each one of the contributors that have made this release possible:
 adavis9592, Ada Wong, aidenma, Aitozi, Ankush Khanna, anton, Anton Kalashnikov, Arvid Heise, Ashwin Kolhatkar, Authuir, bgeng777, Brian Zhou, camile.sing, caoyingjie, Cemre Mengu, chennuo, Chesnay Schepler, chuixue, CodeCooker17, comsir, Daisy T, Danny Cranmer, David Anderson, David Moravek, Dawid Wysakowicz, dbgp2021, Dian Fu, Dong Lin, Edmondsky, Elphas Toringepi, Emre Kartoglu, ericliuk, Eron Wright, est08zw, Etienne Chauchot, Fabian Paul, fangliang, fangyue1, fengli, Francesco Guardi [...]
-`}),e.add({id:140,href:"/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-one/",title:"Implementing a Custom Source Connector for Table API and SQL - Part One ",section:"Flink Blog",content:`Part one of this tutorial will teach you how to build and run a custom source connector to be used with Table API and SQL, two high-level abstractions in Flink. The tutorial comes with a bundled docker-compose setup that lets you easily run the connector. You can then try  [...]
+`}),e.add({id:142,href:"/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-one/",title:"Implementing a Custom Source Connector for Table API and SQL - Part One ",section:"Flink Blog",content:`Part one of this tutorial will teach you how to build and run a custom source connector to be used with Table API and SQL, two high-level abstractions in Flink. The tutorial comes with a bundled docker-compose setup that lets you easily run the connector. You can then try  [...]
 Introduction # Apache Flink is a data processing engine that aims to keep state locally in order to do computations efficiently. However, Flink does not &ldquo;own&rdquo; the data but relies on external systems to ingest and persist data. Connecting to external data input (sources) and external data storage (sinks) is usually summarized under the term connectors in Flink.
 Since connectors are such important components, Flink ships with connectors for some popular systems. But sometimes you may need to read in an uncommon data format and what Flink provides is not enough. This is why Flink also provides extension points for building custom connectors if you want to connect to a system that is not supported by an existing connector.
 Once you have a source and a sink defined for Flink, you can use its declarative APIs (in the form of the Table API and SQL) to execute queries for data analysis.
@@ -2417,7 +2502,7 @@ You should be able to see the static data you provided in your source connector
 Now that you have a working connector, the next step is to make it do something more useful than returning static data.
 Summary # In this tutorial, you looked into the infrastructure required for a connector and configured its runtime implementation to define how it should be executed in a cluster. You also defined a dynamic table source that reads the entire stream-converted table from the external source, made the connector discoverable by Flink through creating a factory class for it, and then tested it.
 Next Steps # In part two, you will integrate this connector with an email inbox through the IMAP protocol.
-`}),e.add({id:141,href:"/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-two/",title:"Implementing a custom source connector for Table API and SQL - Part Two ",section:"Flink Blog",content:`In part one of this tutorial, you learned how to build a custom source connector for Flink. In part two, you will learn how to integrate the connector with a test email inbox through the IMAP protocol and filter out emails using Flink SQL.
+`}),e.add({id:143,href:"/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-two/",title:"Implementing a custom source connector for Table API and SQL - Part Two ",section:"Flink Blog",content:`In part one of this tutorial, you learned how to build a custom source connector for Flink. In part two, you will learn how to integrate the connector with a test email inbox through the IMAP protocol and filter out emails using Flink SQL.
 Goals # Part two of the tutorial will teach you how to:
 integrate a source connector which connects to a mailbox using the IMAP protocol use Jakarta Mail, a Java library that can send and receive email via the IMAP protocol write Flink SQL and execute the queries in the Ververica Platform for a nicer visualization You are encouraged to follow along with the code in this repository. It provides a boilerplate project that also comes with a bundled docker-compose setup that lets you easily run the connector. You can then try it out with Flink’s  [...]
 Prerequisites # This tutorial assumes that you have:
@@ -2456,7 +2541,7 @@ First, head to SQL → Connectors. There you can create a new connector by uploa
 Ververica Platform - SQL Editor
 Summary # Apache Flink is designed for easy extensibility and allows users to access many different external systems as data sources or sinks through a versatile set of connectors. It can read and write data from databases, local and distributed file systems.
 Flink also exposes APIs on top of which custom connectors can be built. In this two-part blog series, you explored some of these APIs and concepts and learned how to implement your own custom source connector that can read in data from an email inbox. You then used Flink to process incoming emails through the IMAP protocol and wrote some Flink SQL.
-`}),e.add({id:142,href:"/2021/08/31/stateful-functions-3.1.0-release-announcement/",title:"Stateful Functions 3.1.0 Release Announcement",section:"Flink Blog",content:`Stateful Functions is a cross-platform stack for building Stateful Serverless applications, making it radically simpler to develop scalable, consistent, and elastic distributed applications. This new release brings various improvements to the StateFun runtime, a leaner way to specify StateFun module components, and a brand [...]
+`}),e.add({id:144,href:"/2021/08/31/stateful-functions-3.1.0-release-announcement/",title:"Stateful Functions 3.1.0 Release Announcement",section:"Flink Blog",content:`Stateful Functions is a cross-platform stack for building Stateful Serverless applications, making it radically simpler to develop scalable, consistent, and elastic distributed applications. This new release brings various improvements to the StateFun runtime, a leaner way to specify StateFun module components, and a brand [...]
 The binary distribution and source artifacts are now available on the updated Downloads page of the Flink website, and the most recent Java SDK, Python SDK, and GoLang SDK distributions are available on Maven, PyPI, and Github repecitvely. You can also find official StateFun Docker images of the new version on Dockerhub.
 For more details, check the complete release changelog and the updated documentation. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA!
 New Features # Delayed Message Cancellation # Stateful Functions communicate by sending messages, but sometimes it is helpful that a function will send a message for itself. For example, you may want to set a time limit on a customer onboarding flow to complete. This can easily be implmented by sending a message with a delay. But up until now, there was no way to indicate to the StateFun runtime that a particular delayed message is not necessary anymore (a customer had completed their on [...]
@@ -2478,30 +2563,30 @@ For a detailed SDK tutorial, we would like to encourage you to visit:
 GoLang SDK Showcase GoLang Greeter GoLang SDK Documentation Release Notes # Release Notes # Please review the release notes for a detailed list of changes and new features if you plan to upgrade your setup to Stateful Functions 3.1.0.
 List of Contributors # Evans Ye, George Birbilis, Igal Shilman, Konstantin Knauf, Seth Wiesman, Siddique Ahmad, Tzu-Li (Gordon) Tai, ariskk, austin ce
 If you’d like to get involved, we’re always looking for new contributors.
-`}),e.add({id:143,href:"/2021/08/31/help-us-stabilize-apache-flink-1.14.0-rc0/",title:"Help us stabilize Apache Flink 1.14.0 RC0",section:"Flink Blog",content:` Hint Update 29th of September: Today Apache Flink 1.14 has been released. For sure we'd still like to hear your feedback. Dear Flink Community,
+`}),e.add({id:145,href:"/2021/08/31/help-us-stabilize-apache-flink-1.14.0-rc0/",title:"Help us stabilize Apache Flink 1.14.0 RC0",section:"Flink Blog",content:` Hint Update 29th of September: Today Apache Flink 1.14 has been released. For sure we'd still like to hear your feedback. Dear Flink Community,
 we are excited to announce the first release candidate of Apache Flink 1.14. 🎉
 A lot of features and fixes went into this release, including improvements to the unified batch and streaming experience, an increase in fault tolerance by reducing in-flight data, and more developments on connectors and components. It wouldn&rsquo;t have been possible without your help. Around 211 people have made contributions!
 Two weeks ago (August 16th) we created a feature freeze. This means that only a few small, almost-ready features will go into the release from this moment on. We are now in the process of stabilizing the release and need your help! As you can see on the 1.14 release coordination page, a lot of focus is on documentation and testing.
 If you would like to contribute to the squirrel community, a great way would be to download the release candidate and test it. You can run some existing Flink jobs or pick one of the test issues. We would greatly appreciate any feedback you can provide on the JIRA tickets or on the mailing list.
 We continue to be grateful and inspired by the community who believe in the project and want to help create a great user experience and product for all Flink users.
 Many thanks!
-`}),e.add({id:144,href:"/2021/08/09/apache-flink-1.11.4-released/",title:"Apache Flink 1.11.4 Released",section:"Flink Blog",content:`The Apache Flink community released the next bugfix version of the Apache Flink 1.11 series.
+`}),e.add({id:146,href:"/2021/08/09/apache-flink-1.11.4-released/",title:"Apache Flink 1.11.4 Released",section:"Flink Blog",content:`The Apache Flink community released the next bugfix version of the Apache Flink 1.11 series.
 This release includes 78 fixes and minor improvements for Flink 1.11.4. The list below includes a detailed list of all fixes and improvements.
 We highly recommend all users to upgrade to Flink 1.11.4.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.11.4&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.11.4&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;vers [...]
-Release Notes - Flink - Version 1.11.4 Sub-task [FLINK-21070] - Overloaded aggregate functions cause converter errors [FLINK-21486] - Add sanity check when switching from Rocks to Heap timers Bug [FLINK-15262] - kafka connector doesn&#39;t read from beginning immediately when &#39;connector.startup-mode&#39; = &#39;earliest-offset&#39; [FLINK-16443] - Fix wrong fix for user-code CheckpointExceptions [FLINK-18438] - TaskManager start failed [FLINK-19369] - BlobClientTest.testGetFailsDurin [...]
+Release Notes - Flink - Version 1.11.4 Sub-task [FLINK-21070] - Overloaded aggregate functions cause converter errors [FLINK-21486] - Add sanity check when switching from Rocks to Heap timers Bug [FLINK-15262] - kafka connector doesn&#39;t read from beginning immediately when &#39;connector.startup-mode&#39; = &#39;earliest-offset&#39; [FLINK-16443] - Fix wrong fix for user-code CheckpointExceptions [FLINK-18438] - TaskManager start failed [FLINK-19369] - BlobClientTest.testGetFailsDurin [...]
 This release includes 76 fixes and minor improvements for Flink 1.12.4. The list below includes a detailed list of all fixes and improvements.
 We highly recommend all users to upgrade to Flink 1.12.5.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.12.5&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.12.5&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;vers [...]
 Release Notes - Flink - Version 1.12.5
-Bug [FLINK-19925] - Errors$NativeIoException: readAddress(..) failed: Connection reset by peer [FLINK-20321] - Get NPE when using AvroDeserializationSchema to deserialize null input [FLINK-20888] - ContinuousFileReaderOperator should not close the output on close() [FLINK-21329] - &quot;Local recovery and sticky scheduling end-to-end test&quot; does not finish within 600 seconds [FLINK-21445] - Application mode does not set the configuration when building PackagedProgram [FLINK-21469] -  [...]
+Bug [FLINK-19925] - Errors$NativeIoException: readAddress(..) failed: Connection reset by peer [FLINK-20321] - Get NPE when using AvroDeserializationSchema to deserialize null input [FLINK-20888] - ContinuousFileReaderOperator should not close the output on close() [FLINK-21329] - &quot;Local recovery and sticky scheduling end-to-end test&quot; does not finish within 600 seconds [FLINK-21445] - Application mode does not set the configuration when building PackagedProgram [FLINK-21469] -  [...]
 This release includes 127 fixes and minor improvements for Flink 1.13.2. The list below includes bugfixes and improvements. For a complete list of all changes see: JIRA.
 We highly recommend all users to upgrade to Flink 1.13.2.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.13.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.13.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;vers [...]
-Release Notes - Flink - Version 1.13.2 Sub-task [FLINK-22726] - Hive GROUPING__ID returns different value in older versions Bug [FLINK-20888] - ContinuousFileReaderOperator should not close the output on close() [FLINK-20975] - HiveTableSourceITCase.testPartitionFilter fails on AZP [FLINK-21389] - ParquetInputFormat should not need parquet schema as user input [FLINK-21445] - Application mode does not set the configuration when building PackagedProgram [FLINK-21952] - Make all the &quot; [...]
+Release Notes - Flink - Version 1.13.2 Sub-task [FLINK-22726] - Hive GROUPING__ID returns different value in older versions Bug [FLINK-20888] - ContinuousFileReaderOperator should not close the output on close() [FLINK-20975] - HiveTableSourceITCase.testPartitionFilter fails on AZP [FLINK-21389] - ParquetInputFormat should not need parquet schema as user input [FLINK-21445] - Application mode does not set the configuration when building PackagedProgram [FLINK-21952] - Make all the &quot; [...]
 The backpressure topic was tackled from different angles over the last couple of years. However, when it comes to identifying and analyzing sources of backpressure, things have changed quite a bit in the recent Flink releases (especially with new additions to metrics and the web UI in Flink 1.13). This post will try to clarify some of these changes and go into more detail about how to track down the source of backpressure, but first&hellip;
 What is backpressure? # This has been explained very well in an old, but still accurate, post by Ufuk Celebi. I highly recommend reading it if you are not familiar with this concept. For a much deeper and low-level understanding of the topic and how Flink’s network stack works, there is a more advanced explanation available here.
 At a high level, backpressure happens if some operator(s) in the Job Graph cannot process records at the same rate as they are received. This fills up the input buffers of the subtask that is running this slow operator. Once the input buffers are full, backpressure propagates to the output buffers of the upstream subtasks. Once those are filled up, the upstream subtasks are also forced to slow down their records’ processing rate to match the processing rate of the operator causing this b [...]
@@ -2529,18 +2614,18 @@ What can I do with backpressure? # In general this is a complex topic that is wo
 Identifying the presence of backpressure. Locating which subtask(s) or machines are causing it. Digging deeper into what part of the code is causing it and which resource is scarce. Backpressure monitoring improvements and metrics can help you with the first two points. To tackle the last one, profiling the code can be the way to go. To help with profiling, also starting from Flink 1.13, Flame Graphs are integrated into Flink&rsquo;s web UI. Flame Graphs is a well known profiling tool an [...]
 But keep in mind that after locating where the bottleneck is, you can analyze it the same way you would any other non-distributed application (by checking resource utilization, attaching a profiler, etc). Usually there is no silver bullet for problems like this. You can try to scale up but sometimes it might not be easy or practical to do.
 Anyway&hellip; The aforementioned improvements to backpressure monitoring allow us to easily detect the source of backpressure, and Flame Graphs can help us to analyze why a particular subtask is causing problems. Together those two features should make the previously quite tedious process of debugging and performance analysis of Flink jobs that much easier! Please upgrade to Flink 1.13.x and try them out!
-[1] There is a third possibility. In a rare case when network exchange is actually the bottleneck in your job, the downstream task will have empty input buffers, while upstream output buffers will be full. `}),e.add({id:148,href:"/2021/05/28/apache-flink-1.13.1-released/",title:"Apache Flink 1.13.1 Released",section:"Flink Blog",content:`The Apache Flink community released the first bugfix version of the Apache Flink 1.13 series.
+[1] There is a third possibility. In a rare case when network exchange is actually the bottleneck in your job, the downstream task will have empty input buffers, while upstream output buffers will be full. `}),e.add({id:150,href:"/2021/05/28/apache-flink-1.13.1-released/",title:"Apache Flink 1.13.1 Released",section:"Flink Blog",content:`The Apache Flink community released the first bugfix version of the Apache Flink 1.13 series.
 This release includes 82 fixes and minor improvements for Flink 1.13.1. The list below includes bugfixes and improvements. For a complete list of all changes see: JIRA.
 We highly recommend all users to upgrade to Flink 1.13.1.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.13.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.13.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;vers [...]
-Release Notes - Flink - Version 1.13.1 Sub-task [FLINK-22378] - Type mismatch when declaring SOURCE_WATERMARK on TIMESTAMP_LTZ column [FLINK-22666] - Make structured type&#39;s fields more lenient during casting Bug [FLINK-12351] - AsyncWaitOperator should deep copy StreamElement when object reuse is enabled [FLINK-17170] - Cannot stop streaming job with savepoint which uses kinesis consumer [FLINK-19449] - LEAD/LAG cannot work correctly in streaming mode [FLINK-21181] - Buffer pool is d [...]
+Release Notes - Flink - Version 1.13.1 Sub-task [FLINK-22378] - Type mismatch when declaring SOURCE_WATERMARK on TIMESTAMP_LTZ column [FLINK-22666] - Make structured type&#39;s fields more lenient during casting Bug [FLINK-12351] - AsyncWaitOperator should deep copy StreamElement when object reuse is enabled [FLINK-17170] - Cannot stop streaming job with savepoint which uses kinesis consumer [FLINK-19449] - LEAD/LAG cannot work correctly in streaming mode [FLINK-21181] - Buffer pool is d [...]
 This release includes 21 fixes and minor improvements for Flink 1.12.3. The list below includes a detailed list of all fixes and improvements.
 We highly recommend all users to upgrade to Flink 1.12.4.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.12.4&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.12.4&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;vers [...]
 Release Notes - Flink - Version 1.12.4
-Bug [FLINK-17170] - Cannot stop streaming job with savepoint which uses kinesis consumer [FLINK-20114] - Fix a few KafkaSource-related bugs [FLINK-21181] - Buffer pool is destroyed error when outputting data over a timer after cancellation. [FLINK-22109] - Misleading exception message if the number of arguments of a nested function is incorrect [FLINK-22368] - UnalignedCheckpointITCase hangs on azure [FLINK-22424] - Writing to already released buffers potentially causing data corruption  [...]
+Bug [FLINK-17170] - Cannot stop streaming job with savepoint which uses kinesis consumer [FLINK-20114] - Fix a few KafkaSource-related bugs [FLINK-21181] - Buffer pool is destroyed error when outputting data over a timer after cancellation. [FLINK-22109] - Misleading exception message if the number of arguments of a nested function is incorrect [FLINK-22368] - UnalignedCheckpointITCase hangs on azure [FLINK-22424] - Writing to already released buffers potentially causing data corruption  [...]
 A simple way of quantifying the mismatch between the required resources and the available resources is to measure the space between the actual load and the number of available workers. As pictured below, in the case of static resource allocation, you can see that there&rsquo;s a big gap between the actual load and the available workers — hence, we are wasting resources. For elastic resource allocation, the gap between the red and black line is consistently small.
 Manually rescaling a Flink job has been possible since Flink 1.2 introduced rescalable state, which allows you to stop-and-restore a job with a different parallelism. For example, if your job is running with a parallelism of p=100 and your load increases, you can restart it with p=200 to cope with the additional data.
 The problem with this approach is that you have to orchestrate a rescale operation with custom tools by yourself, including error handling and similar tasks.
@@ -2578,7 +2663,7 @@ To mitigate this issue, we have reduced the heartbeat.timeout in our experiment
 Conclusion # In this blog post, we&rsquo;ve introduced Reactive Mode, a big step forward in Flink&rsquo;s ability to dynamically adjust to changing workloads, reducing resource utilization and overall costs. The blog post demonstrated Reactive Mode on Kubernetes, including some lessons learned.
 Reactive Mode is new feature in Flink 1.13 and is currently in the MVP (Minimal Viable Product) phase of product development. Before experimenting with it, or using it in production, please check the documentation, in particular the current limitations section. In this phase, the biggest limitation is that only standalone application mode deployments are supported (i.e. no active resource managers or session clusters).
 The community is actively looking for feedback on this feature, to continue improving Flink&rsquo;s resource elasticity. If you have any feedback, please reach out to the dev@ mailing list or to me personally on Twitter.
-`}),e.add({id:151,href:"/2021/05/03/apache-flink-1.13.0-release-announcement/",title:"Apache Flink 1.13.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to announce the release of Flink 1.13.0! More than 200 contributors worked on over 1,000 issues for this new version.
+`}),e.add({id:153,href:"/2021/05/03/apache-flink-1.13.0-release-announcement/",title:"Apache Flink 1.13.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to announce the release of Flink 1.13.0! More than 200 contributors worked on over 1,000 issues for this new version.
 The release brings us a big step forward in one of our major efforts: Making Stream Processing Applications as natural and as simple to manage as any other application. The new reactive scaling mode means that scaling streaming applications in and out now works like in any other application by just changing the number of parallel processes.
 The release also prominently features a series of improvements that help users better understand the performance of applications. When the streams don&rsquo;t flow as fast as you&rsquo;d hope, these can help you to understand why: Load and backpressure visualization to identify bottlenecks, CPU flame graphs to identify hot code paths in your application, and State Access Latencies to see how the State Backends are keeping up.
 Beyond those features, the Flink community has added a ton of improvements all over the system, some of which we discuss in this article. We hope you enjoy the new release and features. Towards the end of the article, we describe changes to be aware of when upgrading from earlier versions of Apache Flink.
@@ -2683,13 +2768,13 @@ Please review the release notes carefully if you plan to upgrade your setup to F
 You can also check the complete release changelog and updated documentation for a detailed list of changes and new features.
 List of Contributors # The Apache Flink community would like to thank each one of the contributors that have made this release possible:
 acqua.csq, AkisAya, Alexander Fedulov, Aljoscha Krettek, Ammar Al-Batool, Andrey Zagrebin, anlen321, Anton Kalashnikov, appleyuchi, Arvid Heise, Austin Cawley-Edwards, austin ce, azagrebin, blublinsky, Brian Zhou, bytesmithing, caozhen1937, chen qin, Chesnay Schepler, Congxian Qiu, Cristian, cxiiiiiii, Danny Chan, Danny Cranmer, David Anderson, Dawid Wysakowicz, dbgp2021, Dian Fu, DinoZhang, dixingxing, Dong Lin, Dylan Forciea, est08zw, Etienne Chauchot, fanrui03, Flora Tao, FLRNKS, forn [...]
-`}),e.add({id:152,href:"/2021/04/29/apache-flink-1.12.3-released/",title:"Apache Flink 1.12.3 Released",section:"Flink Blog",content:`The Apache Flink community released the next bugfix version of the Apache Flink 1.12 series.
+`}),e.add({id:154,href:"/2021/04/29/apache-flink-1.12.3-released/",title:"Apache Flink 1.12.3 Released",section:"Flink Blog",content:`The Apache Flink community released the next bugfix version of the Apache Flink 1.12 series.
 This release includes 73 fixes and minor improvements for Flink 1.12.2. The list below includes a detailed list of all fixes and improvements.
 We highly recommend all users to upgrade to Flink 1.12.3.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.12.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.12.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;vers [...]
 List of resolved issues:
-Bug [FLINK-18071] - CoordinatorEventsExactlyOnceITCase.checkListContainsSequence fails on CI [FLINK-20547] - Batch job fails due to the exception in network stack [FLINK-20654] - Unaligned checkpoint recovery may lead to corrupted data stream [FLINK-20722] - HiveTableSink should copy the record when converting RowData to Row [FLINK-20752] - FailureRateRestartBackoffTimeStrategy allows one less restart than configured [FLINK-20761] - Cannot read hive table/partition whose location path co [...]
+Bug [FLINK-18071] - CoordinatorEventsExactlyOnceITCase.checkListContainsSequence fails on CI [FLINK-20547] - Batch job fails due to the exception in network stack [FLINK-20654] - Unaligned checkpoint recovery may lead to corrupted data stream [FLINK-20722] - HiveTableSink should copy the record when converting RowData to Row [FLINK-20752] - FailureRateRestartBackoffTimeStrategy allows one less restart than configured [FLINK-20761] - Cannot read hive table/partition whose location path co [...]
 This new release brings remote functions to the front and center of StateFun, making the disaggregated setup that separates the application logic from the StateFun cluster the default. It is now easier, more efficient, and more ergonomic to write applications that live in their own processes or containers. With the new Java SDK this is now also possible for all JVM languages, in addition to Python.
 Background # Starting with the first StateFun release, before the project was donated to the Apache Software Foundation, our focus was: making scalable stateful applications easy to build and run.
 The first StateFun version introduced an SDK that allowed writing stateful functions that build up a StateFun application packaged and deployed as a particular Flink job submitted to a Flink cluster. Having functions executing within the same JVM as Flink has some advantages, such as the deployment&rsquo;s performance and immutability. However, it had a few limitations:
@@ -2714,7 +2799,7 @@ Release Resources # The binary distribution and source artifacts are now availab
 For more details, check the updated documentation and the release notes for a detailed list of changes and new features if you plan to upgrade your setup to Stateful Functions 3.0.0. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA
 List of Contributors # The Apache Flink community would like to thank all contributors that have made this release possible:
 Authuir, Chesnay Schepler, David Anderson, Dian Fu, Frans King, Galen Warren, Guillaume Vauvert, Igal Shilman, Ismaël Mejía, Kartik Khare, Konstantin Knauf, Marta Paes Moreira, Patrick Lucas, Patrick Wiener, Rafi Aroch, Robert Metzger, RocMarshal, Seth Wiesman, Siddique Ahmad, SteNicholas, Stephan Ewen, Timothy Bess, Tymur Yarosh, Tzu-Li (Gordon) Tai, Ufuk Celebi, abc863377, billyrrr, congxianqiu, danp11, hequn8128, kaibo, klion26, morsapaes, slinkydeveloper, wangchao, wangzzu, winder If [...]
-`}),e.add({id:154,href:"/2021/03/11/a-rundown-of-batch-execution-mode-in-the-datastream-api/",title:"A Rundown of Batch Execution Mode in the DataStream API",section:"Flink Blog",content:`Flink has been following the mantra that Batch is a Special Case of Streaming since the very early days. As the project evolved to address specific uses cases, different core APIs ended up being implemented for batch (DataSet API) and streaming execution (DataStream API), but the higher-level Table API/ [...]
+`}),e.add({id:156,href:"/2021/03/11/a-rundown-of-batch-execution-mode-in-the-datastream-api/",title:"A Rundown of Batch Execution Mode in the DataStream API",section:"Flink Blog",content:`Flink has been following the mantra that Batch is a Special Case of Streaming since the very early days. As the project evolved to address specific uses cases, different core APIs ended up being implemented for batch (DataSet API) and streaming execution (DataStream API), but the higher-level Table API/ [...]
 The idea behind making the DataStream API a unified abstraction for batch and streaming execution instead of maintaining separate APIs is two-fold:
 Reusability: efficient batch and stream processing under the same API would allow you to easily switch between both execution modes without rewriting any code. So, a job could be easily reused to process real-time and historical data.
 Operational simplicity: providing a unified API would mean using a single set of connectors, maintaining a single codebase and being able to easily implement mixed execution pipelines e.g. for use cases like backfilling.
@@ -2748,13 +2833,13 @@ Having a mixed graph, where one of the branches would have only bounded sources
 Another approach is to run the exact same program first on the bounded data. However, this time we wouldn&rsquo;t assume completeness of the job; instead, we would produce the state of all operators up to a certain point in time and store it as a savepoint. Later on, we could use the savepoint to start the application on the unbounded data.
 Lastly, to achieve feature parity with the DataSet API (Flink&rsquo;s legacy API for batch-style execution), we are looking into the topic of iterations and how to meet the different usage patterns depending on the mode. In STREAMING mode, iterations serve as a loopback edge, but we don&rsquo;t necessarily need to keep track of the iteration step. On the other hand, the iteration generation is vital for Machine Learning (ML) algorithms, which are the primary use case for iterations in BA [...]
 Have you tried the new BATCH execution mode in the DataStream API? How was your experience? We are happy to hear your feedback and stories!
-`}),e.add({id:155,href:"/2021/03/03/apache-flink-1.12.2-released/",title:"Apache Flink 1.12.2 Released",section:"Flink Blog",content:`The Apache Flink community released the next bugfix version of the Apache Flink 1.12 series.
+`}),e.add({id:157,href:"/2021/03/03/apache-flink-1.12.2-released/",title:"Apache Flink 1.12.2 Released",section:"Flink Blog",content:`The Apache Flink community released the next bugfix version of the Apache Flink 1.12 series.
 This release includes 83 fixes and minor improvements for Flink 1.12.1. The list below includes a detailed list of all fixes and improvements.
 We highly recommend all users to upgrade to Flink 1.12.2.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.12.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.12.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;vers [...]
 List of resolved issues:
-Sub-task [FLINK-21070] - Overloaded aggregate functions cause converter errors [FLINK-21486] - Add sanity check when switching from Rocks to Heap timers Bug [FLINK-12461] - Document binary compatibility situation with Scala beyond 2.12.8 [FLINK-16443] - Fix wrong fix for user-code CheckpointExceptions [FLINK-19771] - NullPointerException when accessing null array from postgres in JDBC Connector [FLINK-20309] - UnalignedCheckpointTestBase.execute is failed [FLINK-20462] - MailboxOperatorT [...]
+Sub-task [FLINK-21070] - Overloaded aggregate functions cause converter errors [FLINK-21486] - Add sanity check when switching from Rocks to Heap timers Bug [FLINK-12461] - Document binary compatibility situation with Scala beyond 2.12.8 [FLINK-16443] - Fix wrong fix for user-code CheckpointExceptions [FLINK-19771] - NullPointerException when accessing null array from postgres in JDBC Connector [FLINK-20309] - UnalignedCheckpointTestBase.execute is failed [FLINK-20462] - MailboxOperatorT [...]
 From release to release, the Flink community has made significant progress in integrating natively with Kubernetes, from active resource management to “Zookeeperless” High Availability (HA). In this blogpost, we&rsquo;ll recap the technical details of deploying Flink applications natively on Kubernetes, diving deeper into Flink’s Kubernetes HA architecture. We&rsquo;ll then walk you through a hands-on example of running a Flink application cluster on Kubernetes with HA enabled. We’ll end [...]
 Native Flink on Kubernetes Integration # Before we dive into the technical details of how the Kubernetes-based HA service works, let us briefly explain what native means in the context of Flink deployments on Kubernetes:
 Flink is self-contained. There will be an embedded Kubernetes client in the Flink client, and so you will not need other external tools (e.g. kubectl, Kubernetes dashboard) to create a Flink cluster on Kubernetes.
@@ -2775,13 +2860,13 @@ $ docker build -t &lt;user-image&gt; . $ docker push &lt;user-image&gt; **2. Sta
 $ ./bin/flink cancel --target kubernetes-application -Dkubernetes.cluster-id=&lt;ClusterID&gt; &lt;JobID&gt; When the job is cancelled, all the Kubernetes resources created by Flink (e.g. JobManager deployment, TaskManager pods, service, Flink configuration ConfigMap, leader-related ConfigMaps) will be deleted automatically.
 Conclusion # The native Kubernetes integration was first introduced in Flink 1.10, abstracting a lot of the complexities of hosting, configuring, managing and operating Flink clusters in cloud-native environments. After three major releases, the community has made great progress in supporting multiple deployment modes (i.e. session and application) and an alternative HA setup that doesn’t depend on Zookeeper.
 Compared with standalone Kubernetes deployments, the native integration is more user-friendly and requires less upfront knowledge about Kubernetes. Given that Flink is now aware of the underlying Kubernetes cluster, it also can benefit from dynamic resource allocation and make more efficient use of Kubernetes cluster resources. The next building block to deepen Flink’s native integration with Kubernetes is the pod template (FLINK-15656), which will greatly enhance the flexibility of usin [...]
-`}),e.add({id:157,href:"/2021/01/29/apache-flink-1.10.3-released/",title:"Apache Flink 1.10.3 Released",section:"Flink Blog",content:`The Apache Flink community released the third bugfix version of the Apache Flink 1.10 series.
+`}),e.add({id:159,href:"/2021/01/29/apache-flink-1.10.3-released/",title:"Apache Flink 1.10.3 Released",section:"Flink Blog",content:`The Apache Flink community released the third bugfix version of the Apache Flink 1.10 series.
 This release includes 36 fixes and minor improvements for Flink 1.10.2. The list below includes a detailed list of all fixes and improvements.
 We highly recommend all users to upgrade to Flink 1.10.3.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.10.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.10.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;vers [...]
 List of resolved issues:
-Bug [FLINK-14087] - throws java.lang.ArrayIndexOutOfBoundsException when emiting the data using RebalancePartitioner. [FLINK-15170] - WebFrontendITCase.testCancelYarn fails on travis [FLINK-15467] - Should wait for the end of the source thread during the Task cancellation [FLINK-16246] - Exclude &quot;SdkMBeanRegistrySupport&quot; from dynamically loaded AWS connectors [FLINK-17341] - freeSlot in TaskExecutor.closeJobManagerConnection cause ConcurrentModificationException [FLINK-17458] - [...]
+Bug [FLINK-14087] - throws java.lang.ArrayIndexOutOfBoundsException when emiting the data using RebalancePartitioner. [FLINK-15170] - WebFrontendITCase.testCancelYarn fails on travis [FLINK-15467] - Should wait for the end of the source thread during the Task cancellation [FLINK-16246] - Exclude &quot;SdkMBeanRegistrySupport&quot; from dynamically loaded AWS connectors [FLINK-17341] - freeSlot in TaskExecutor.closeJobManagerConnection cause ConcurrentModificationException [FLINK-17458] - [...]
 This release includes 79 fixes and minor improvements for Flink 1.12.0. The list below includes a detailed list of all fixes and improvements.
 We highly recommend all users to upgrade to Flink 1.12.1.
 Attention: Using unaligned checkpoints in Flink 1.12.0 combined with two/multiple inputs tasks or with union inputs for single input tasks can result in corrupted state. This can happen if a new checkpoint is triggered before recovery is fully completed. For state to be corrupted a task with two or more input gates must receive a checkpoint barrier exactly at the same time this tasks finishes recovering spilled in-flight data. In such case this new checkpoint can succeed, with corrupted/ [...]
@@ -2790,7 +2875,7 @@ A late barrier of a canceled checkpoint may lead to buffers being not written in
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.12.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.12.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;vers [...]
 List of resolved issues:
-Sub-task [FLINK-18897] - Add documentation for the maxwell-json format [FLINK-20352] - Rework command line interface documentation page [FLINK-20353] - Rework logging documentation page [FLINK-20354] - Rework standalone deployment documentation page [FLINK-20355] - Rework K8s deployment documentation page [FLINK-20356] - Rework Mesos deployment documentation page [FLINK-20422] - Remove from .html files in flink documentation [FLINK-20485] - Map views are deserialized multiple times [FLIN [...]
+Sub-task [FLINK-18897] - Add documentation for the maxwell-json format [FLINK-20352] - Rework command line interface documentation page [FLINK-20353] - Rework logging documentation page [FLINK-20354] - Rework standalone deployment documentation page [FLINK-20355] - Rework K8s deployment documentation page [FLINK-20356] - Rework Mesos deployment documentation page [FLINK-20422] - Remove from .html files in flink documentation [FLINK-20485] - Map views are deserialized multiple times [FLIN [...]
 State in Flink # To best understand state and state backends in Flink, it’s important to distinguish between in-flight state and state snapshots. In-flight state, also known as working state, is the state a Flink job is working on. It is always stored locally in memory (with the possibility to spill to disk) and can be lost when jobs fail without impacting job recoverability. State snapshots, i.e., checkpoints and savepoints, are stored in a remote durable storage, and are used to restor [...]
 What is RocksDB? # Thinking of RocksDB as a distributed database that needs to run on a cluster and to be managed by specialized administrators is a common misconception. RocksDB is an embeddable persistent key-value store for fast storage. It interacts with Flink via the Java Native Interface (JNI). The picture below shows where RocksDB fits in a Flink cluster node. Details are explained in the following sections.
 RocksDB in Flink # Everything you need to use RocksDB as a state backend is bundled in the Apache Flink distribution, including the native shared library:
@@ -2811,7 +2896,7 @@ Note From Flink 1.10, RocksDB logging was effectively disabled by [setting the l
 While data is being written or overwritten in RocksDB, flushing from memory to local disks and data compaction are managed in the background by RocksDB threads. On a machine with many CPU cores, you should increase the parallelism of background flushing and compaction by setting the Flink configuration state.backend.rocksdb.thread.num (corresponding to max_background_jobs in RocksDB). The default configuration is usually too small for a production setup. If your job reads frequently from [...]
 For other RocksDBStateBackend configurations, check the Flink documentation on Advanced RocksDB State Backends Options. For further tuning, check RocksDB Tuning Guide in RocksDB Wiki.
 Conclusion # The RocksDB state backend (i.e., RocksDBStateBackend) is one of the three state backends bundled in Flink, and can be a powerful choice when configuring your streaming applications. It enables scalable applications maintaining up to many terabytes of state with exactly-once processing guarantees. If the state of your Flink job is too large to fit on the JVM heap, you are interested in incremental checkpointing, or you expect to have predictable latency, you should use RocksD [...]
-`}),e.add({id:160,href:"/2021/01/11/exploring-fine-grained-recovery-of-bounded-data-sets-on-flink/",title:"Exploring fine-grained recovery of bounded data sets on Flink",section:"Flink Blog",content:`Apache Flink is a very versatile tool for all kinds of data processing workloads. It can process incoming data within a few milliseconds or crunch through petabytes of bounded datasets (also known as batch processing).
+`}),e.add({id:162,href:"/2021/01/11/exploring-fine-grained-recovery-of-bounded-data-sets-on-flink/",title:"Exploring fine-grained recovery of bounded data sets on Flink",section:"Flink Blog",content:`Apache Flink is a very versatile tool for all kinds of data processing workloads. It can process incoming data within a few milliseconds or crunch through petabytes of bounded datasets (also known as batch processing).
 Processing efficiency is not the only parameter users of data processing systems care about. In the real world, system outages due to hardware or software failure are expected to happen all the time. For unbounded (or streaming) workloads, Flink is using periodic checkpoints to allow for reliable and correct recovery. In case of bounded data sets, having a reliable recovery mechanism is mission critical — as users do not want to potentially lose many hours of intermediate processing results.
 Apache Flink 1.9 introduced fine-grained recovery into its internal workload scheduler. The Flink APIs that are made for bounded workloads benefit from this change by individually recovering failed operators, re-using results from the previous processing step.
 In this blog post, we are going to give an overview over these changes, and we will experimentally validate their effectiveness.
@@ -2843,7 +2928,7 @@ Execution time with rare failures: Looking at the first few results on the left,
 In general, we recommend conducting your own performance experiments on your own hardware and with your own workloads, as results might vary from what we’ve presented here. Despite the findings here, the pipelined mode probably has some performance advantages in environments with rare failures and slower I/O (for example when using spinning disks, or network attached disks). On the other hand, CPU intensive workloads might benefit from the batch mode even in slow I/O environments.
 We should also note that the caching (and subsequent reprocessing on failure) only works if the cached results are still present &ndash; this is currently only the case, if the TaskManager survives a failure. However, this is an unrealistic assumption as many failures would cause the TaskManager process to die. To mitigate this limitation, data processing frameworks employ external shuffle services that persist the cached results independent of the data processing framework. Since Flink  [...]
 Despite these considerations, we believe that fine-grained recovery is a great improvement for Flink’s batch capabilities, as it makes the framework much more efficient, even in unstable environments.
-`}),e.add({id:161,href:"/2021/01/07/whats-new-in-the-pulsar-flink-connector-2.7.0/",title:"What's New in the Pulsar Flink Connector 2.7.0",section:"Flink Blog",content:` About the Pulsar Flink Connector # In order for companies to access real-time data insights, they need unified batch and streaming capabilities. Apache Flink unifies batch and stream processing into one single computing engine with “streams” as the unified data representation. Although developers have done extensive work [...]
+`}),e.add({id:163,href:"/2021/01/07/whats-new-in-the-pulsar-flink-connector-2.7.0/",title:"What's New in the Pulsar Flink Connector 2.7.0",section:"Flink Blog",content:` About the Pulsar Flink Connector # In order for companies to access real-time data insights, they need unified batch and streaming capabilities. Apache Flink unifies batch and stream processing into one single computing engine with “streams” as the unified data representation. Although developers have done extensive work [...]
 The Pulsar Flink connector provides elastic data processing with Apache Pulsar and Apache Flink, allowing Apache Flink to read/write data from/to Apache Pulsar. The Pulsar Flink Connector enables you to concentrate on your business logic without worrying about the storage details.
 Challenges # When we first developed the Pulsar Flink Connector, it received wide adoption from both the Flink and Pulsar communities. Leveraging the Pulsar Flink connector, Hewlett Packard Enterprise (HPE) built a real-time computing platform, BIGO built a real-time message processing system, and Zhihu is in the process of assessing the Connector’s fit for a real-time computing system.
 With more users adopting the Pulsar Flink Connector, it became clear that one of the common issues was evolving around data formats and specifically performing serialization and deserialization. While the Pulsar Flink connector leverages the Pulsar serialization, the previous connector versions did not support the Flink data format. As a result, users had to manually configure their setup in order to use the connector for real-time computing scenarios.
@@ -2877,12 +2962,12 @@ Pulsar offers a hierarchical architecture where data is divided into streaming,
 The batch and stream solution based on the new Flink Source API is divided into two simple parts: SplitEnumerator and Reader. SplitEnumerator discovers and assigns partitions, and Reader reads data from the partition.
 Apache Pulsar stores messages in the ledger block for users to locate the ledgers through Pulsar admin, and then provide broker partition, BookKeeper partition, Offloader partition, and other information through different partitioning policies. For more details, you can refer here.
 Conclusion # The latest version of the Pulsar Flink Connector is now available and we encourage everyone to use/upgrade to the Pulsar Flink Connector 2.7.0. The new version provides significant user enhancements, enabled by various features in Pulsar 2.7 and Flink 1.12. We will be contributing the Pulsar Flink Connector 2.7.0 to the Apache Flink repository soon. If you have any questions or concerns about the Pulsar Flink Connector, feel free to open issues in this repository.
-`}),e.add({id:162,href:"/2021/01/02/stateful-functions-2.2.2-release-announcement/",title:"Stateful Functions 2.2.2 Release Announcement",section:"Flink Blog",content:`The Apache Flink community released the second bugfix release of the Stateful Functions (StateFun) 2.2 series, version 2.2.2.
+`}),e.add({id:164,href:"/2021/01/02/stateful-functions-2.2.2-release-announcement/",title:"Stateful Functions 2.2.2 Release Announcement",section:"Flink Blog",content:`The Apache Flink community released the second bugfix release of the Stateful Functions (StateFun) 2.2 series, version 2.2.2.
 The most important change of this bugfix release is upgrading Apache Flink to version 1.11.3. In addition to many stability fixes to the Flink runtime itself, this also allows StateFun applications to safely use savepoints to upgrade from older versions earlier than StateFun 2.2.1. Previously, restoring from savepoints could have failed under certain conditions.
 We strongly recommend all users to upgrade to 2.2.2.
 You can find the binaries on the updated Downloads page.
 This release includes 5 fixes and minor improvements since StateFun 2.2.1. Below is a detailed list of all fixes and improvements:
-Improvement [FLINK-20699] - Feedback invocation_id must not be constant. Task [FLINK-20161] - Consider switching from Travis CI to Github Actions for flink-statefun&#39;s CI workflows [FLINK-20189] - Restored feedback events may be silently dropped if per key-group header bytes were not fully read [FLINK-20636] - Require unaligned checkpoints to be disabled in StateFun applications [FLINK-20689] - Upgrade StateFun to Flink 1.11.3 `}),e.add({id:163,href:"/2020/12/18/apache-flink-1.11.3-re [...]
+Improvement [FLINK-20699] - Feedback invocation_id must not be constant. Task [FLINK-20161] - Consider switching from Travis CI to Github Actions for flink-statefun&#39;s CI workflows [FLINK-20189] - Restored feedback events may be silently dropped if per key-group header bytes were not fully read [FLINK-20636] - Require unaligned checkpoints to be disabled in StateFun applications [FLINK-20689] - Upgrade StateFun to Flink 1.11.3 `}),e.add({id:165,href:"/2020/12/18/apache-flink-1.11.3-re [...]
 Release Highlights
 The community has added support for efficient batch execution in the DataStream API. This is the next major milestone towards achieving a truly unified runtime for both batch and stream processing.
 Kubernetes-based High Availability (HA) was implemented as an alternative to ZooKeeper for highly available production setups.
@@ -2950,7 +3035,7 @@ Note: General UDAFs are only supported for group aggregations and in _streaming_
 Release Notes # Please review the release notes carefully for a detailed list of changes and new features if you plan to upgrade your setup to Flink 1.12. This version is API-compatible with previous 1.x releases for APIs annotated with the @Public annotation.
 List of Contributors # The Apache Flink community would like to thank each and every one of the 300 contributors that have made this release possible:
 Abhijit Shandilya, Aditya Agarwal, Alan Su, Alexander Alexandrov, Alexander Fedulov, Alexey Trenikhin, Aljoscha Krettek, Allen Madsen, Andrei Bulgakov, Andrey Zagrebin, Arvid Heise, Authuir, Bairos, Bartosz Krasinski, Benchao Li, Brandon, Brian Zhou, C08061, Canbin Zheng, Cedric Chen, Chesnay Schepler, Chris Nix, Congxian Qiu, DG-Wangtao, Da(Dash)Shen, Dan Hill, Daniel Magyar, Danish Amjad, Danny Chan, Danny Cranmer, David Anderson, Dawid Wysakowicz, Devin Thomson, Dian Fu, Dongxu Wang,  [...]
-`}),e.add({id:165,href:"/2020/12/02/improvements-in-task-scheduling-for-batch-workloads-in-apache-flink-1.12/",title:"Improvements in task scheduling for batch workloads in Apache Flink 1.12",section:"Flink Blog",content:`The Flink community has been working for some time on making Flink a truly unified batch and stream processing system. Achieving this involves touching a lot of different components of the Flink stack, from the user-facing APIs all the way to low-level operator processe [...]
+`}),e.add({id:167,href:"/2020/12/02/improvements-in-task-scheduling-for-batch-workloads-in-apache-flink-1.12/",title:"Improvements in task scheduling for batch workloads in Apache Flink 1.12",section:"Flink Blog",content:`The Flink community has been working for some time on making Flink a truly unified batch and stream processing system. Achieving this involves touching a lot of different components of the Flink stack, from the user-facing APIs all the way to low-level operator processe [...]
 Towards unified scheduling # Flink has an internal scheduler to distribute work to all available cluster nodes, taking resource utilization, state locality and recovery into account. How do you write a scheduler for a unified batch and streaming system? To answer this question, let&rsquo;s first have a look into the high-level differences between batch and streaming scheduling requirements.
 Streaming # Streaming jobs usually require that all operator subtasks are running in parallel at the same time, for an indefinite time. Therefore, all the required resources to run these jobs have to be provided upfront, and all operator subtasks must be deployed at once.
 Flink: Streaming job example Because there are no finite intermediate results, a streaming job always has to be restarted fully from a checkpoint or a savepoint in case of failure.
@@ -2990,7 +3075,7 @@ A blocking result can be consumed only when its production is done. Hence, the b
 Slots and resources # A TaskManager instance has a certain number of virtual slots. Each slot represents a certain part of the TaskManager’s physical resources to run the operator subtasks, and each subtask is deployed into a slot of the TaskManager. A slot can run multiple subtasks from different operators at the same time, usually chained together.
 Scheduling strategy # Scheduling in Flink is a process of searching for and allocating appropriate resources (slots) from the TaskManagers to run the subtasks and produce results. The scheduling strategy reacts on scheduling events (like start job, subtask failed or finished etc) to decide which subtask to deploy next.
 For instance, it does not make sense to schedule subtasks whose inputs are not ready to consume yet to avoid wasting resources. Another example is to schedule subtasks which are connected with pipelined edges together, to avoid deadlocks caused by backpressure.
-`}),e.add({id:166,href:"/2020/11/11/stateful-functions-2.2.1-release-announcement/",title:"Stateful Functions 2.2.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink community released the first bugfix release of the Stateful Functions (StateFun) 2.2 series, version 2.2.1.
+`}),e.add({id:168,href:"/2020/11/11/stateful-functions-2.2.1-release-announcement/",title:"Stateful Functions 2.2.1 Release Announcement",section:"Flink Blog",content:`The Apache Flink community released the first bugfix release of the Stateful Functions (StateFun) 2.2 series, version 2.2.1.
 This release fixes a critical bug that causes restoring the Stateful Functions cluster from snapshots (checkpoints or savepoints) to fail under certain conditions. Starting from this release, StateFun now creates snapshots with a more robust format that allows it to be restored safely going forward.
 We strongly recommend all users to upgrade to 2.2.1. Please see the following sections on instructions and things to keep in mind for this upgrade.
 For new users just starting out with Stateful Functions # We strongly recommend to skip all previous versions and start using StateFun from version 2.2.1. This guarantees that failure recovery from checkpoints, or application upgrades using savepoints will work as expected for you.
@@ -2998,7 +3083,7 @@ For existing users on versions &lt;= 2.2.0 # Users that are currently using olde
 The follow-up hotfix release 2.2.2 is expected to be ready within another 2~3 weeks, as it requires a new hotfix release from Flink core, and ultimately an upgrade of the Flink dependency in StateFun. We’ll update the community via the Flink mailing lists as soon as this is ready, so please subscribe to the mailing lists for important updates for this!
 You can find the binaries on the updated Downloads page.
 This release includes 6 fixes and minor improvements since StateFun 2.2.0. Below is a detailed list of all fixes and improvements:
-Bug [FLINK-19515] - Async RequestReply handler concurrency bug [FLINK-19692] - Can&#39;t restore feedback channel from savepoint [FLINK-19866] - FunctionsStateBootstrapOperator.createStateAccessor fails due to uninitialized runtimeContext Improvement [FLINK-19826] - StateFun Dockerfile copies plugins with a specific version instead of a wildcard [FLINK-19827] - Allow the harness to start with a user provided Flink configuration [FLINK-19840] - Add a rocksdb and heap timers configuration  [...]
+Bug [FLINK-19515] - Async RequestReply handler concurrency bug [FLINK-19692] - Can&#39;t restore feedback channel from savepoint [FLINK-19866] - FunctionsStateBootstrapOperator.createStateAccessor fails due to uninitialized runtimeContext Improvement [FLINK-19826] - StateFun Dockerfile copies plugins with a specific version instead of a wildcard [FLINK-19827] - Allow the harness to start with a user provided Flink configuration [FLINK-19840] - Add a rocksdb and heap timers configuration  [...]
 Despite all these great properties, Flink&rsquo;s checkpointing method has an Achilles Heel: the speed of a completed checkpoint is determined by the speed at which data flows through the application. When the application backpressures, the processing of checkpoints is backpressured as well (Appendix 1 recaps what is backpressure and why it can be a good thing). In such cases, checkpoints may take longer to complete or even time out completely.
 In Flink 1.11, the community introduced a first version of a new feature called &ldquo;unaligned checkpoints&rdquo; that aims at solving this issue, while Flink 1.12 plans to further expand its functionality. In this two-series blog post, we discuss how Flink’s checkpointing mechanism has been modified to support unaligned checkpoints, how unaligned checkpoints work, and how this new mode impacts Flink users. In the first of the two posts, we start with a recap of the original checkpoint [...]
 State in Streaming Applications # Simply put, state is the information that you need to remember across events. Even the most trivial streaming applications are typically stateful because of their need to “remember” the exact position they are processing data from, for example in the form of a Kafka Partition Offset or a File Offset. In addition, many applications hold state internally as a way to support their internal operations, such as windows, aggregations, joins, or state machines.
@@ -3027,7 +3112,7 @@ Consider the example below:
 We have a source (let’s say reading data from Apache Kafka), parsing data, grouping and aggregating data by a key, and writing it to a sink system (some database). The application needs to re-group data by key between the parsing and the grouping/aggregation step. Let’s assume we use a non-backpressure approach, like writing the data to a log/MQ for the data re-grouping over the network (the approach used by Kafka Streams). If the sink is now slower than the remaining parts of the stream [...]
 With backpressure, the source/parse stage slows down to match the speed of the sink, keeping both parts of the application closer together in their progress through the data, and avoiding the need to provision a lot of intermediate storage capacity.
 We&rsquo;d like to thank Marta Paes Moreira and Markos Sfikas for the wonderful review process.
-`}),e.add({id:168,href:"/2020/10/13/stateful-functions-internals-behind-the-scenes-of-stateful-serverless/",title:"Stateful Functions Internals: Behind the scenes of Stateful Serverless",section:"Flink Blog",content:`Stateful Functions (StateFun) simplifies the building of distributed stateful applications by combining the best of two worlds: the strong messaging and state consistency guarantees of stateful stream processing, and the elasticity and serverless experience of today&rsquo;s  [...]
+`}),e.add({id:170,href:"/2020/10/13/stateful-functions-internals-behind-the-scenes-of-stateful-serverless/",title:"Stateful Functions Internals: Behind the scenes of Stateful Serverless",section:"Flink Blog",content:`Stateful Functions (StateFun) simplifies the building of distributed stateful applications by combining the best of two worlds: the strong messaging and state consistency guarantees of stateful stream processing, and the elasticity and serverless experience of today&rsquo;s  [...]
 But how exactly does StateFun achieve that? How does the StateFun cluster communicate with the functions?
 This blog dives deep into the internals of the StateFun runtime. The entire walkthrough is complemented by a demo application which can be completely deployed on AWS services. Most significantly, in the demo, the stateful functions are deployed and serviced using AWS Lambda, a popular FaaS platform among many others. The goal here is to allow readers to have a good grasp of the interaction between the StateFun runtime and the functions, how that works cohesively to provide a Stateful Ser [...]
 Introducing the example: Shopping Cart # Note You can find the full code [here](https://github.com/tzulitai/statefun-aws-demo/blob/master/app/shopping_cart.py), which uses StateFun's [Python SDK](//nightlies.apache.org/flink/flink-statefun-docs-master/sdk/python.html). Alternatively, if you are unfamiliar with StateFun's API, you can check out this [earlier blog](https://flink.apache.org/2020/08/19/statefun.html) on modeling applications and stateful entities using [StateFun's programmin [...]
@@ -3056,7 +3141,7 @@ Fig.5: Complete deployment example on AWS. A natural consequence of this charact
 In our complementary demo code, you can find here the exact code on how to expose and service StateFun functions through AWS Lambda. Likewise, this is possible for any other FaaS platform that supports triggering the functions using HTTP endpoints (and other transports as well in the future).
 Fig. 5 on the right illustrates what a complete AWS deployment of a StateFun application would look like, with functions serviced via AWS Lambda, AWS Kinesis streams as ingresses and egresses, AWS EKS managed Kubernetes cluster to run the StateFun cluster, and an AWS S3 bucket to store the periodic checkpoints. You can also follow the instructions in the demo code to try it out and deploy this yourself right away!
 If you’d like to learn more about Stateful Functions, head over to the official documentation, where you can also find more hands-on tutorials to try out yourself!
-`}),e.add({id:169,href:"/2020/09/28/stateful-functions-2.2.0-release-announcement/",title:"Stateful Functions 2.2.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is happy to announce the release of Stateful Functions (StateFun) 2.2.0! This release introduces major features that extend the SDKs, such as support for asynchronous functions in the Python SDK, new persisted state constructs, and a new SDK that allows embedding StateFun functions within a Flink [...]
+`}),e.add({id:171,href:"/2020/09/28/stateful-functions-2.2.0-release-announcement/",title:"Stateful Functions 2.2.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is happy to announce the release of Stateful Functions (StateFun) 2.2.0! This release introduces major features that extend the SDKs, such as support for asynchronous functions in the Python SDK, new persisted state constructs, and a new SDK that allows embedding StateFun functions within a Flink [...]
 We&rsquo;ve also seen new 3rd party SDKs for StateFun being developed since the last release. While they are not part of the release artifacts, it&rsquo;s great seeing these community-driven additions! We&rsquo;ve highlighted these efforts below in this announcement.
 The binary distribution and source artifacts are now available on the updated Downloads page of the Flink website, and the most recent Python SDK distribution is available on PyPI. For more details, check the complete release changelog and the updated documentation. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA!
 New Features # Asynchronous functions in Python SDK # This release enables registering asynchronous Python functions as stateful functions by introducing a new handler in the Python SDK: AsyncRequestReplyHandler. This allows serving StateFun functions with Python web frameworks that support asynchronous IO natively (for example, aiohttp):
@@ -3076,13 +3161,13 @@ Important Patch Notes # Below is a list of user-facing interface and configurati
 List of Contributors # The Apache Flink community would like to thank all contributors that have made this release possible:
 abc863377, Authuir, Chesnay Schepler, Congxian Qiu, David Anderson, Dian Fu, Francesco Guardiani, Igal Shilman, Marta Paes Moreira, Patrick Wiener, Rafi Aroch, Seth Wiesman, Stephan Ewen, Tzu-Li (Gordon) Tai, Ufuk Celebi
 If you’d like to get involved, we’re always looking for new contributors.
-`}),e.add({id:170,href:"/2020/09/17/apache-flink-1.11.2-released/",title:"Apache Flink 1.11.2 Released",section:"Flink Blog",content:`The Apache Flink community released the second bugfix version of the Apache Flink 1.11 series.
+`}),e.add({id:172,href:"/2020/09/17/apache-flink-1.11.2-released/",title:"Apache Flink 1.11.2 Released",section:"Flink Blog",content:`The Apache Flink community released the second bugfix version of the Apache Flink 1.11 series.
 This release includes 96 fixes and minor improvements for Flink 1.11.1. The list below includes a detailed list of all fixes and improvements.
 We highly recommend all users to upgrade to Flink 1.11.2.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.11.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.11.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;vers [...]
 List of resolved issues:
-Sub-task [FLINK-16087] - Translate &quot;Detecting Patterns&quot; page of &quot;Streaming Concepts&quot; into Chinese [FLINK-18264] - Translate the &quot;External Resource Framework&quot; page into Chinese [FLINK-18628] - Invalid error message for overloaded methods with same parameter name [FLINK-18801] - Add a &quot;10 minutes to Table API&quot; document under the &quot;Python API&quot; -&gt; &quot;User Guide&quot; -&gt; &quot;Table API&quot; section [FLINK-18910] - Create the new docu [...]
+Sub-task [FLINK-16087] - Translate &quot;Detecting Patterns&quot; page of &quot;Streaming Concepts&quot; into Chinese [FLINK-18264] - Translate the &quot;External Resource Framework&quot; page into Chinese [FLINK-18628] - Invalid error message for overloaded methods with same parameter name [FLINK-18801] - Add a &quot;10 minutes to Table API&quot; document under the &quot;Python API&quot; -&gt; &quot;User Guide&quot; -&gt; &quot;Table API&quot; section [FLINK-18910] - Create the new docu [...]
 The Past Month in Flink # Flink Releases # Getting Ready for Flink Stateful Functions 2.2 # The details of the next release of Stateful Functions are under discussion in this @dev mailing list thread, and the feature freeze is set for September 10th — so, you can expect Stateful Functions 2.2 to be released soon after! Some of the most relevant features in the upcoming release are:
 DataStream API interoperability, allowing users to embed Stateful Functions pipelines in regular DataStream API programs with DataStream ingress/egress.
 Fine-grained control over state for remote functions, including the ability to configure different state expiration modes for each individual function.
@@ -3121,7 +3206,7 @@ Change Data Capture with Flink SQL and Debezium
 Real-Time Stock Processing With Apache NiFi, Apache Flink and Apache Kafka
 Using the Mm FLaNK Stack for Edge AI (Apache MXNet, Apache Flink, Apache NiFi, Apache Kafka, Apache Kudu)
 Blogposts Flink 1.11 Series The State of Flink on Docker Accelerating your workload with GPU and other external resources PyFlink: The integration of Pandas into PyFlink Other Monitoring and Controlling Networks of IoT Devices with Flink Stateful Functions Advanced Flink Application Patterns Vol.3: Custom Window Processing Flink Packages Flink Packages is a website where you can explore (and contribute to) the Flink ecosystem of connectors, extensions, APIs, tools and integrations. New i [...]
-`}),e.add({id:172,href:"/2020/09/01/memory-management-improvements-for-flinks-jobmanager-in-apache-flink-1.11/",title:"Memory Management improvements for Flink’s JobManager in Apache Flink 1.11",section:"Flink Blog",content:`Apache Flink 1.11 comes with significant changes to the memory model of Flink’s JobManager and configuration options for your Flink clusters. These recently-introduced changes make Flink adaptable to all kinds of deployment environments (e.g. Kubernetes, Yarn, Mesos) [...]
+`}),e.add({id:174,href:"/2020/09/01/memory-management-improvements-for-flinks-jobmanager-in-apache-flink-1.11/",title:"Memory Management improvements for Flink’s JobManager in Apache Flink 1.11",section:"Flink Blog",content:`Apache Flink 1.11 comes with significant changes to the memory model of Flink’s JobManager and configuration options for your Flink clusters. These recently-introduced changes make Flink adaptable to all kinds of deployment environments (e.g. Kubernetes, Yarn, Mesos) [...]
 The previous blog post focused on the memory model of the TaskManagers and how it was improved in Flink 1.10. This post addresses the same topic but for the JobManager instead. Flink 1.11 unifies the memory model of Flink’s processes. The newly-introduced memory model of the JobManager follows a similar approach to that of the TaskManagers; it is simpler and has fewer components and tuning knobs. This post might consequently seem very similar to our previous story on Flink’s memory but a [...]
 Introduction to Flink’s process memory model # Having a clear understanding of Apache Flink’s process memory model allows you to manage resources for the various workloads more efficiently. The following diagram illustrates the main memory components of a Flink process:
 Flink: Total Process Memory The JobManager process is a JVM process. On a high level, its memory consists of the JVM Heap and Off-Heap memory. These types of memory are consumed by Flink directly or by the JVM for its specific purposes (i.e. metaspace). There are two major memory consumers within the JobManager process: the framework itself consuming memory for internal data structures, network communication, etc. and the user code which runs within the JobManager process, e.g. in certai [...]
@@ -3137,7 +3222,7 @@ User code or its dependencies consume significant off-heap memory. Tuning the Of
 JVM metaspace requires additional memory. If you encounter OutOfMemoryError: Metaspace, Flink provides an option to increase its default limit and the JVM will ensure that it is not exceeded. The metaspace size of a Flink JVM process is always explicitly set in contrast to the default JVM settings where it is not limited.
 JVM requires more internal memory. There is no direct control over certain types of JVM process allocations but Flink provides JVM Overhead options. The JVM Overhead options allow declaring an additional amount of memory, anticipated for those allocations and not covered by other options.
 Conclusion # The latest Flink release (Flink 1.11) introduces some notable changes to the memory configuration of Flink’s JobManager, making its memory management significantly easier than before. Stay tuned for more additions and features in upcoming releases. If you have any suggestions or questions for the Flink community, we encourage you to sign up to the Apache Flink mailing lists and become part of the discussion.
-`}),e.add({id:173,href:"/2020/08/25/apache-flink-1.10.2-released/",title:"Apache Flink 1.10.2 Released",section:"Flink Blog",content:"The Apache Flink community released the second bugfix version of the Apache Flink 1.10 series.\nThis release includes 73 fixes and minor improvements for Flink 1.10.1. The list below includes a detailed list of all fixes and improvements.\nWe highly recommend all users to upgrade to Flink 1.10.2.\nNote After FLINK-18242, the deprecated `OptionsFactory` and [...]
+`}),e.add({id:175,href:"/2020/08/25/apache-flink-1.10.2-released/",title:"Apache Flink 1.10.2 Released",section:"Flink Blog",content:"The Apache Flink community released the second bugfix version of the Apache Flink 1.10 series.\nThis release includes 73 fixes and minor improvements for Flink 1.10.1. The list below includes a detailed list of all fixes and improvements.\nWe highly recommend all users to upgrade to Flink 1.10.2.\nNote After FLINK-18242, the deprecated `OptionsFactory` and [...]
 The Flink community recently put some effort into improving the Docker experience for our users with the goal to reduce confusion and improve usability.
 Let&rsquo;s quickly break down the recent improvements:
 Reduce confusion: Flink used to have 2 Dockerfiles and a 3rd file maintained outside of the official repository — all with different features and varying stability. Now, we have one central place for all images: apache/flink-docker.
@@ -3155,7 +3240,7 @@ Let&rsquo;s now submit one of Flink&rsquo;s example jobs:
 # 1: (optional) Download the Flink distribution, and unpack it wget https://archive.apache.org/dist/flink/flink-1.11.1/flink-1.11.1-bin-scala_2.12.tgz tar xf flink-1.11.1-bin-scala_2.12.tgz cd flink-1.11.1 # 2: Start the Flink job ./bin/flink run ./examples/streaming/TopSpeedWindowing.jar The main steps of the tutorial are also recorded in this short screencast:
 Next steps: Now that you&rsquo;ve successfully completed this tutorial, we recommend you checking out the full Flink on Docker documentation for implementing more advanced deployment scenarios, such as Job Clusters, Docker Compose or our native Kubernetes integration.
 Conclusion # We encourage all readers to try out Flink on Docker to provide the community with feedback to further improve the experience. Please refer to the user@flink.apache.org (remember to subscribe first) for general questions and our issue tracker for specific bugs or improvements, or ideas for contributions!
-`}),e.add({id:175,href:"/2020/08/18/monitoring-and-controlling-networks-of-iot-devices-with-flink-stateful-functions/",title:"Monitoring and Controlling Networks of IoT Devices with Flink Stateful Functions",section:"Flink Blog",content:`In this blog post, we&rsquo;ll take a look at a class of use cases that is a natural fit for Flink Stateful Functions: monitoring and controlling networks of connected devices (often called the “Internet of Things” (IoT)).
+`}),e.add({id:177,href:"/2020/08/18/monitoring-and-controlling-networks-of-iot-devices-with-flink-stateful-functions/",title:"Monitoring and Controlling Networks of IoT Devices with Flink Stateful Functions",section:"Flink Blog",content:`In this blog post, we&rsquo;ll take a look at a class of use cases that is a natural fit for Flink Stateful Functions: monitoring and controlling networks of connected devices (often called the “Internet of Things” (IoT)).
 IoT networks are composed of many individual, but interconnected components, which makes getting some kind of high-level insight into the status, problems, or optimization opportunities in these networks not trivial. Each individual device “sees” only its own state, which means that the status of groups of devices, or even the network as a whole, is often a complex aggregation of the individual devices’ state. Diagnosing, controlling, or optimizing these groups of devices thus requires d [...]
 A powerful approach to implement this is using digital twins: each device has a corresponding virtual entity (i.e. the digital twin), which also captures their relationships and interactions. The digital twins track the status of their corresponding devices and send updates to other twins, representing groups (such as geographical regions) of devices. Those, in turn, handle the logic to obtain the network&rsquo;s aggregated view, or this &ldquo;bigger picture&rdquo; we mentioned before.
 Our Scenario: Datacenter Monitoring and Alerting # Fig.1 An oversimplified view of a data center. There are many examples of the digital twins approach in the real world, such as smart grids of batteries, smart cities, or monitoring infrastructure software clusters. In this blogpost, we&rsquo;ll use the example of data center monitoring and alert correlation implemented with Stateful Functions.
@@ -3190,7 +3275,7 @@ A root function correlates the high-level events across the intermediate functio
 How does it really look? # ServerFun # This section associates a behaviour for every message that the function expects to be invoked with. The metricsHistory buffer is our sliding window of the last 15 minutes worth of ServerMetricReports. Note that this buffer is configured to expire entries 15 minutes after they were written. serverHealthState represents the current physical server state, open incidents and so on. Let&rsquo;s take a look at what happens when a ServerMetricReport messag [...]
 Retrieve the previously computed serverHealthState that is kept in state. Evaluate a model on the sliding window of the previous metric reports + the current metric reported + the previously computed server state to obtain an assessment of the current server health. If the server is not believed to be healthy, emit an alert via an alerts topic, and also send a message to our containing rack with all the open incidents that this server currently has. We'll omit the other handlers for brev [...]
 Stateful Functions provides the building blocks necessary for building complex distributed applications (here the digital twins that support analysis and interactions of the physical entities), while removing common complexities of distributed systems like service discovery, retires, circuit breakers, state management, scalability and similar challenges. If you&rsquo;d like to learn more about Stateful Functions, head over to the official documentation, where you can also find more hands [...]
-`}),e.add({id:176,href:"/2020/08/06/accelerating-your-workload-with-gpu-and-other-external-resources/",title:"Accelerating your workload with GPU and other external resources",section:"Flink Blog",content:`Apache Flink 1.11 introduces a new External Resource Framework, which allows you to request external resources from the underlying resource management systems (e.g., Kubernetes) and accelerate your workload with those resources. As Flink provides a first-party GPU plugin at the moment, [...]
+`}),e.add({id:178,href:"/2020/08/06/accelerating-your-workload-with-gpu-and-other-external-resources/",title:"Accelerating your workload with GPU and other external resources",section:"Flink Blog",content:`Apache Flink 1.11 introduces a new External Resource Framework, which allows you to request external resources from the underlying resource management systems (e.g., Kubernetes) and accelerate your workload with those resources. As Flink provides a first-party GPU plugin at the moment, [...]
 End-to-end real-time AI with GPU # Recently, AI and Machine Learning have gained additional popularity and have been widely used in various scenarios, such as personalized recommendation and image recognition. Flink, with the ability to support GPU allocation, can be used to build an end-to-end real-time AI workflow.
 Why Flink # Typical AI workloads fall into two categories: training and inference.
 Typical AI Workflow The training workload is usually a batch task, in which we train a model from a bounded dataset. On the other hand, the inference workload tends to be a streaming job. It consumes an unbounded data stream, which contains image data, for example, and uses a model to produce the output of predictions. Both workloads need to do data preprocessing first. Flink, as a unified batch and stream processing engine, can be used to build an end-to-end AI workflow naturally.
@@ -3207,7 +3292,7 @@ Other external resources # In addition to GPU support, there are many other exte
 With the external resource framework, you only need to implement a plugin that enables the operator to get the information for these external resources; see Custom Plugin for more details. If you just want to ensure that an external resource exists in the TaskManager, then you only need to find the configuration key of that resource in the underlying resource management system and configure the external resource framework accordingly.
 Conclusion # In the latest Flink release (Flink 1.11), an external resource framework has been introduced to support requesting various types of resources from the underlying resource management systems, and supply all the necessary information for using these resources to the operators. The first-party GPU plugin expands the application prospects of Flink in the AI domain. Different resource types can be supported in a pluggable way. You can also implement your own plugins for custom re [...]
 Future developments in this area include implementing operator level resource isolation and fine-grained external resource scheduling. The community may kick this work off once FLIP-56 is finished. If you have any suggestions or questions for the community, we encourage you to sign up to the Apache Flink mailing lists and join the discussion there.
-`}),e.add({id:177,href:"/2020/08/04/pyflink-the-integration-of-pandas-into-pyflink/",title:"PyFlink: The integration of Pandas into PyFlink",section:"Flink Blog",content:`Python has evolved into one of the most important programming languages for many fields of data processing. So big has been Python’s popularity, that it has pretty much become the default data processing language for data scientists. On top of that, there is a plethora of Python-based data processing tools such as NumPy [...]
+`}),e.add({id:179,href:"/2020/08/04/pyflink-the-integration-of-pandas-into-pyflink/",title:"PyFlink: The integration of Pandas into PyFlink",section:"Flink Blog",content:`Python has evolved into one of the most important programming languages for many fields of data processing. So big has been Python’s popularity, that it has pretty much become the default data processing language for data scientists. On top of that, there is a plethora of Python-based data processing tools such as NumPy [...]
 Pic source: VanderPlas 2017, slide 52. In an effort to meet the user needs and demands, the Flink community hopes to leverage and make better use of these tools. Along this direction, the Flink community put some great effort in integrating Pandas into PyFlink with the latest Flink version 1.11. Some of the added features include support for Pandas UDF and the conversion between Pandas DataFrame and Table. Pandas UDF not only greatly improve the execution performance of Python UDF, but a [...]
 Note Currently, only Scalar Pandas UDFs are supported in PyFlink. Pandas UDF in Flink 1.11 # Using scalar Python UDF was already possible in Flink 1.10 as described in a previous article on the Flink blog. Scalar Python UDFs work based on three primary steps:
 the Java operator serializes one input row to bytes and sends them to the Python worker;
@@ -3227,7 +3312,7 @@ Firstly, you need to prepare the input data in the &ldquo;/tmp/input&rdquo; file
 Finally, you can see the execution result on the command line. As you can see, all the temperature data with an empty value has been interpolated: $ cat /tmp/output 1,98.0 1,99.0 1,100.0 2,99.0 Conversion between PyFlink Table and Pandas DataFrame # You can use the from_pandas() method to create a PyFlink Table from a Pandas DataFrame or use the to_pandas() method to convert a PyFlink Table to a Pandas DataFrame.
 from pyflink.datastream import StreamExecutionEnvironment from pyflink.table import StreamTableEnvironment import pandas as pd import numpy as np env = StreamExecutionEnvironment.get_execution_environment() t_env = StreamTableEnvironment.create(env) # Create a PyFlink Table pdf = pd.DataFrame(np.random.rand(1000, 2)) table = t_env.from_pandas(pdf, [&#34;a&#34;, &#34;b&#34;]).filter(&#34;a &gt; 0.5&#34;) # Convert the PyFlink Table to a Pandas DataFrame pdf = table.to_pandas() print(pdf)  [...]
 Future work by the community will focus on adding more features and bringing additional optimizations with follow up releases. Such optimizations and additions include a Python DataStream API and more integration with the Python ecosystem, such as support for distributed Pandas in Flink. Stay tuned for more information and updates with the upcoming releases!
-`}),e.add({id:178,href:"/2020/07/30/advanced-flink-application-patterns-vol.3-custom-window-processing/",title:"Advanced Flink Application Patterns Vol.3: Custom Window Processing",section:"Flink Blog",content:` Introduction # In the previous articles of the series, we described how you can achieve flexible stream partitioning based on dynamically-updated configurations (a set of fraud-detection rules) and how you can utilize Flink's Broadcast mechanism to distribute processing configura [...]
+`}),e.add({id:180,href:"/2020/07/30/advanced-flink-application-patterns-vol.3-custom-window-processing/",title:"Advanced Flink Application Patterns Vol.3: Custom Window Processing",section:"Flink Blog",content:` Introduction # In the previous articles of the series, we described how you can achieve flexible stream partitioning based on dynamically-updated configurations (a set of fraud-detection rules) and how you can utilize Flink's Broadcast mechanism to distribute processing configura [...]
 This article will describe some high-level concepts that can be applied independently, but it is recommended that you review the material in part one and part two of the series as well as checkout the code base in order to make it easier to follow along.
 ProcessFunction as a &ldquo;Window&rdquo; # Low Latency # Let&rsquo;s start with a reminder of the type of fraud detection rule that we would like to support:
 &ldquo;Whenever the sum of payments from the same payer to the same beneficiary within a 24 hour period is greater than 200 000 $ - trigger an alert.&rdquo;
@@ -3283,7 +3368,7 @@ Fault-tolerant state with quick, local access
 Convenient abstraction for working with this state, which is as simple as using a local variable
 Multi-threaded, parallel execution engine. ProcessFunction code runs in a single thread, without the need for synchronization. Flink handles all the parallel execution aspects and correct access to the shared state, without you, as a developer, having to think about it (concurrency is hard).
 All these aspects make it possible to build applications with Flink that go well beyond trivial streaming ETL use cases and enable implementation of arbitrarily-sophisticated, distributed event-driven applications. With Flink, you can rethink approaches to a wide range of use cases which normally would rely on using stateless parallel execution nodes and &ldquo;pushing&rdquo; the concerns of state fault tolerance to a database, an approach that is often destined to run into scalability i [...]
-`}),e.add({id:179,href:"/2020/07/29/flink-community-update-july20/",title:"Flink Community Update - July'20",section:"Flink Blog",content:`As July draws to an end, we look back at a monthful of activity in the Flink community, including two releases (!) and some work around improving the first-time contribution experience in the project.
+`}),e.add({id:181,href:"/2020/07/29/flink-community-update-july20/",title:"Flink Community Update - July'20",section:"Flink Blog",content:`As July draws to an end, we look back at a monthful of activity in the Flink community, including two releases (!) and some work around improving the first-time contribution experience in the project.
 Also, events are starting to pick up again, so we&rsquo;ve put together a list of some great ones you can (virtually) attend in August!
 The Past Month in Flink # Flink Releases # Flink 1.11 # A couple of weeks ago, Flink 1.11 was announced in what was (again) the biggest Flink release to date (see &ldquo;A Look Into the Evolution of Flink Releases&rdquo;)! The new release brought significant improvements to usability as well as new features to Flink users across the API stack. Some highlights of Flink 1.11 are:
 Unaligned checkpoints to cope with high backpressure scenarios;
@@ -3314,7 +3399,7 @@ Sweet Streams are Made of These: Data Driven Development with Stream Processing
 Beam Summit (Aug. 24-29) Streaming, Fast and Slow
 Building Stateful Streaming Pipelines With Beam
 Blogposts Flink 1.11 Series Application Deployment in Flink: Current State and the new Application Mode Sharing is caring - Catalogs in Flink SQL (Tutorial) Flink SQL Demo: Building an End-to-End Streaming Application (Tutorial) Other Streaming analytics with Java and Apache Flink (Tutorial) Flink for online Machine Learning and real-time processing at Weibo Data-driven Matchmaking at Azar with Apache Flink Flink Packages Flink Packages is a website where you can explore (and contribute  [...]
-`}),e.add({id:180,href:"/2020/07/28/flink-sql-demo-building-an-end-to-end-streaming-application/",title:"Flink SQL Demo: Building an End-to-End Streaming Application",section:"Flink Blog",content:`Apache Flink 1.11 has released many exciting new features, including many developments in Flink SQL which is evolving at a fast pace. This article takes a closer look at how to quickly build streaming applications with Flink SQL from a practical point of view.
+`}),e.add({id:182,href:"/2020/07/28/flink-sql-demo-building-an-end-to-end-streaming-application/",title:"Flink SQL Demo: Building an End-to-End Streaming Application",section:"Flink Blog",content:`Apache Flink 1.11 has released many exciting new features, including many developments in Flink SQL which is evolving at a fast pace. This article takes a closer look at how to quickly build streaming applications with Flink SQL from a practical point of view.
 In the following sections, we describe how to integrate Kafka, MySQL, Elasticsearch, and Kibana with Flink SQL to analyze e-commerce user behavior in real-time. All exercises in this blogpost are performed in the Flink SQL CLI, and the entire process uses standard SQL syntax, without a single line of Java/Scala code or IDE installation. The final result of this demo is shown in the following figure:
 Preparation # Prepare a Linux or MacOS computer with Docker installed.
 Starting the Demo Environment # The components required in this demo are all managed in containers, so we will use docker-compose to start them. First, download the docker-compose.yml file that defines the demo environment, for example by running the following commands:
@@ -3355,13 +3440,13 @@ INSERT INTO top_category SELECT category_name, COUNT(*) buy_cnt FROM rich_user_b
 As illustrated in the diagram, the categories of clothing and shoes exceed by far other categories on the e-commerce website.
 We have now implemented three practical applications and created charts for them. We can now return to the dashboard page and drag-and-drop each view to give our dashboard a more formal and intuitive style, as illustrated in the beginning of the blogpost. Of course, Kibana also provides a rich set of graphics and visualization features, and the user_behavior logs contain a lot more interesting information to explore. Using Flink SQL, you can analyze data in more dimensions, while using K [...]
 Summary # In the previous sections, we described how to use Flink SQL to integrate Kafka, MySQL, Elasticsearch, and Kibana to quickly build a real-time analytics application. The entire process can be completed using standard SQL syntax, without a line of Java or Scala code. We hope that this article provides some clear and practical examples of the convenience and power of Flink SQL, featuring an easy connection to various external systems, native support for event time and out-of-order [...]
-`}),e.add({id:181,href:"/2020/07/23/sharing-is-caring-catalogs-in-flink-sql/",title:"Sharing is caring - Catalogs in Flink SQL",section:"Flink Blog",content:"With an ever-growing number of people working with data, it&rsquo;s a common practice for companies to build self-service platforms with the goal of democratizing their access across different teams and — especially — to enable users from any background to be independent in their data needs. In such environments, metadata management [...]
+`}),e.add({id:183,href:"/2020/07/23/sharing-is-caring-catalogs-in-flink-sql/",title:"Sharing is caring - Catalogs in Flink SQL",section:"Flink Blog",content:"With an ever-growing number of people working with data, it&rsquo;s a common practice for companies to build self-service platforms with the goal of democratizing their access across different teams and — especially — to enable users from any background to be independent in their data needs. In such environments, metadata management [...]
 This release includes 44 fixes and minor improvements for Flink 1.11.0. The list below includes a detailed list of all fixes and improvements.
 We highly recommend all users to upgrade to Flink 1.11.1.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.11.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.11.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;vers [...]
 List of resolved issues:
-Sub-task [FLINK-15794] - Rethink default value of kubernetes.container.image [FLINK-18324] - Translate updated data type and function page into Chinese [FLINK-18387] - Translate &quot;BlackHole SQL Connector&quot; page into Chinese [FLINK-18388] - Translate &quot;CSV Format&quot; page into Chinese [FLINK-18391] - Translate &quot;Avro Format&quot; page into Chinese [FLINK-18395] - Translate &quot;ORC Format&quot; page into Chinese [FLINK-18469] - Add Application Mode to release notes. [FL [...]
+Sub-task [FLINK-15794] - Rethink default value of kubernetes.container.image [FLINK-18324] - Translate updated data type and function page into Chinese [FLINK-18387] - Translate &quot;BlackHole SQL Connector&quot; page into Chinese [FLINK-18388] - Translate &quot;CSV Format&quot; page into Chinese [FLINK-18391] - Translate &quot;Avro Format&quot; page into Chinese [FLINK-18395] - Translate &quot;ORC Format&quot; page into Chinese [FLINK-18469] - Add Application Mode to release notes. [FL [...]
 These platforms aim at simplifying application submission internally by lifting all the operational burden from the end user. To submit Flink applications, these platforms usually expose only a centralized or low-parallelism endpoint (e.g. a Web frontend) for application submission that we will call the Deployer.
 One of the roadblocks that platform developers and maintainers often mention is that the Deployer can be a heavy resource consumer that is difficult to provision for. Provisioning for average load can lead to the Deployer service being overwhelmed with deployment requests (in the worst case, for all production applications in a short period of time), while planning based on top load leads to unnecessary costs. Building on this observation, Flink 1.11 introduces the Application Mode as a  [...]
 In order to understand the problem and how the Application Mode solves it, we start by describing briefly the current status of application execution in Flink, before describing the architectural changes introduced by the new deployment mode and how to leverage them.
@@ -3400,7 +3485,7 @@ To further save the bandwidth of shipping the Flink distribution to the cluster,
 Conclusion # We hope that this discussion helped you understand the differences between the various deployment modes offered by Flink and will help you to make informed decisions about which one is suitable in your own setup. Feel free to play around with them and report any issues you may find. If you have any questions or requests, do not hesitate to post them in the mailing lists and, hopefully, see you (virtually) at one of our conferences or meetups soon!
 The only exceptions are the Web Submission and the Standalone per-job implementation.&#160;&#x21a9;&#xfe0e;
 Support for Kubernetes will come soon.&#160;&#x21a9;&#xfe0e;
-`}),e.add({id:184,href:"/2020/07/06/apache-flink-1.11.0-release-announcement/",title:"Apache Flink 1.11.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is proud to announce the release of Flink 1.11.0! More than 200 contributors worked on over 1.3k issues to bring significant improvements to usability as well as new features to Flink users across the whole API stack. Some highlights that we&rsquo;re particularly excited about are:
+`}),e.add({id:186,href:"/2020/07/06/apache-flink-1.11.0-release-announcement/",title:"Apache Flink 1.11.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is proud to announce the release of Flink 1.11.0! More than 200 contributors worked on over 1.3k issues to bring significant improvements to usability as well as new features to Flink users across the whole API stack. Some highlights that we&rsquo;re particularly excited about are:
 The core engine is introducing unaligned checkpoints, a major change to Flink&rsquo;s fault tolerance mechanism that improves checkpointing performance under heavy backpressure.
 A new Source API that simplifies the implementation of (custom) sources by unifying batch and streaming execution, as well as offloading internals such as event-time handling, watermark generation or idleness detection to Flink.
 Flink SQL is introducing Support for Change Data Capture (CDC) to easily consume and interpret database changelogs from tools like Debezium. The renewed FileSystem Connector also expands the set of use cases and formats supported in the Table API/SQL, enabling scenarios like streaming data directly from Kafka to Hive.
@@ -3487,7 +3572,7 @@ Important Changes # [FLINK-17339] The Blink planner is the default in the Table
 Release Notes # Please review the release notes carefully for a detailed list of changes and new features if you plan to upgrade your setup to Flink 1.11. This version is API-compatible with previous 1.x releases for APIs annotated with the @Public annotation.
 List of Contributors # The Apache Flink community would like to thank all the 200+ contributors that have made this release possible:
 Aitozi, Alexander Fedulov, Alexey Trenikhin, Aljoscha Krettek, Andrey Zagrebin, Arvid Heise, Ayush Saxena, Bairos, Bartosz Krasinski, Benchao Li, Benoit Hanotte, Benoît Paris, Bhagavan Das, Canbin Zheng, Cedric Chen, Chesnay Schepler, Colm O hEigeartaigh, Congxian Qiu, CrazyTomatoOo, Danish Amjad, Danny Chan, David Anderson, Dawid Wysakowicz, Dian Fu, Dominik Wosiński, Echo Lee, Ethan Marsh, Etienne Chauchot, Fabian Hueske, Fabian Paul, Flavio Pompermaier, Gao Yun, Gary Yao, Ghildiyal, G [...]
-`}),e.add({id:185,href:"/2020/06/23/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-2/",title:"Flink on Zeppelin Notebooks for Interactive Data Analysis - Part 2",section:"Flink Blog",content:`In a previous post, we introduced the basics of Flink on Zeppelin and how to do Streaming ETL. In this second part of the &ldquo;Flink on Zeppelin&rdquo; series of posts, I will share how to perform streaming data visualization via Flink on Zeppelin and how to use Apache Flink UDFs i [...]
+`}),e.add({id:187,href:"/2020/06/23/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-2/",title:"Flink on Zeppelin Notebooks for Interactive Data Analysis - Part 2",section:"Flink Blog",content:`In a previous post, we introduced the basics of Flink on Zeppelin and how to do Streaming ETL. In this second part of the &ldquo;Flink on Zeppelin&rdquo; series of posts, I will share how to perform streaming data visualization via Flink on Zeppelin and how to use Apache Flink UDFs i [...]
 Streaming Data Visualization # With Zeppelin, you can build a real time streaming dashboard without writing any line of javascript/html/css code.
 Overall, Zeppelin supports 3 kinds of streaming data analytics:
 Single Mode Update Mode Append Mode Single Mode # Single mode is used for cases when the result of a SQL statement is always one row, such as the following example. The output format is translated in HTML, and you can specify a paragraph local property template for the final output content template. And you can use {i} as placeholder for the {i}th column of the result.
@@ -3496,14 +3581,14 @@ Append Mode # Append mode is suitable for the cases when the output data is alwa
 UDF # SQL is a very powerful language, especially in expressing data flow. But most of the time, you need to handle complicated business logic that cannot be expressed by SQL. In these cases UDFs (user-defined functions) come particularly handy. In Zeppelin, you can write Scala or Python UDFs, while you can also import Scala, Python and Java UDFs. Here are 2 examples of Scala and Python UDFs:
 Scala UDF %flink class ScalaUpper extends ScalarFunction { def eval(str: String) = str.toUpperCase } btenv.registerFunction(&#34;scala_upper&#34;, new ScalaUpper()) Python UDF %flink.pyflink class PythonUpper(ScalarFunction): def eval(self, s): return s.upper() bt_env.register_function(&#34;python_upper&#34;, udf(PythonUpper(), DataTypes.STRING(), DataTypes.STRING())) After you define the UDFs, you can use them directly in SQL:
 Use Scala UDF in SQL Use Python UDF in SQL Summary # In this post, we explained how to perform streaming data visualization via Flink on Zeppelin and how to use UDFs. Besides that, you can do more in Zeppelin with Flink, such as batch processing, Hive integration and more. You can check the following articles for more details and here&rsquo;s a list of Flink on Zeppelin tutorial videos for your reference.
-References # Apache Zeppelin official website Flink on Zeppelin tutorials - Part 1 Flink on Zeppelin tutorials - Part 2 Flink on Zeppelin tutorials - Part 3 Flink on Zeppelin tutorials - Part 4 Flink on Zeppelin tutorial videos `}),e.add({id:186,href:"/2020/06/15/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-1/",title:"Flink on Zeppelin Notebooks for Interactive Data Analysis - Part 1",section:"Flink Blog",content:`The latest release of Apache Zeppelin comes with a redes [...]
+References # Apache Zeppelin official website Flink on Zeppelin tutorials - Part 1 Flink on Zeppelin tutorials - Part 2 Flink on Zeppelin tutorials - Part 3 Flink on Zeppelin tutorials - Part 4 Flink on Zeppelin tutorial videos `}),e.add({id:188,href:"/2020/06/15/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-1/",title:"Flink on Zeppelin Notebooks for Interactive Data Analysis - Part 1",section:"Flink Blog",content:`The latest release of Apache Zeppelin comes with a redes [...]
 The Flink Interpreter in Zeppelin 0.9 # The Flink interpreter can be accessed and configured from Zeppelin’s interpreter settings page. The interpreter has been refactored so that Flink users can now take advantage of Zeppelin to write Flink applications in three languages, namely Scala, Python (PyFlink) and SQL (for both batch &amp; streaming executions). Zeppelin 0.9 now comes with the Flink interpreter group, consisting of the below five interpreters:
 %flink - Provides a Scala environment %flink.pyflink - Provides a python environment %flink.ipyflink - Provides an ipython environment %flink.ssql - Provides a stream sql environment %flink.bsql - Provides a batch sql environment Not only has the interpreter been extended to support writing Flink applications in three languages, but it has also extended the available execution modes for Flink that now include:
 Running Flink in Local Mode Running Flink in Remote Mode Running Flink in Yarn Mode You can find more information about how to get started with Zeppelin and all the execution modes for Flink applications in Zeppelin notebooks in this post.
 Flink on Zeppelin for Stream processing # Performing stream processing jobs with Apache Flink on Zeppelin allows you to run most major streaming cases, such as streaming ETL and real time data analytics, with the use of Flink SQL and specific UDFs. Below we showcase how you can execute streaming ETL using Flink on Zeppelin:
 You can use Flink SQL to perform streaming ETL by following the steps below (for the full tutorial, please refer to the Flink Tutorial/Streaming ETL tutorial of the Zeppelin distribution):
 Step 1. Create source table to represent the source data. Step 2. Create a sink table to represent the processed data. Step 3. After creating the source and sink table, we can insert them to our statement to trigger the stream processing job as the following: Step 4. After initiating the streaming job, you can use another SQL statement to query the sink table to verify the results of your job. Here you can see the top 10 records which will be refreshed every 3 seconds. Summary # In this  [...]
-References # Apache Zeppelin official website Flink on Zeppelin tutorials - Part 1 Flink on Zeppelin tutorials - Part 2 Flink on Zeppelin tutorials - Part 3 Flink on Zeppelin tutorials - Part 4 Flink on Zeppelin tutorial videos `}),e.add({id:187,href:"/2020/06/10/flink-community-update-june20/",title:"Flink Community Update - June'20",section:"Flink Blog",content:`And suddenly it’s June. The previous month has been calm on the surface, but quite hectic underneath — the final testing phas [...]
+References # Apache Zeppelin official website Flink on Zeppelin tutorials - Part 1 Flink on Zeppelin tutorials - Part 2 Flink on Zeppelin tutorials - Part 3 Flink on Zeppelin tutorials - Part 4 Flink on Zeppelin tutorial videos `}),e.add({id:189,href:"/2020/06/10/flink-community-update-june20/",title:"Flink Community Update - June'20",section:"Flink Blog",content:`And suddenly it’s June. The previous month has been calm on the surface, but quite hectic underneath — the final testing phas [...]
 To top it off, a piece of good news: Flink Forward is back on October 19-22 as a free virtual event!
 The Past Month in Flink # Flink Stateful Functions 2.1 Release # It might seem like Stateful Functions 2.0 was announced only a handful of weeks ago (and it was!), but the Flink community has just released Stateful Functions 2.1! This release introduces two new features: state expiration for any kind of persisted state and support for UNIX Domain Sockets (UDS) to improve the performance of inter-container communication in co-located deployments; as well as other important changes that im [...]
 As the community around StateFun grows, the release cycle will follow this pattern of smaller and more frequent releases to incorporate user feedback and allow for faster iteration. If you’d like to get involved, we’re always looking for new contributors — especially around SDKs for other languages (e.g. Go, Rust, Javascript).
@@ -3522,7 +3607,7 @@ Got a Flink story to share? Maybe your recent adventures with Stateful Functions
 Google Season of Docs 2020 # In the last update, we announced that Flink was applying to Google Season of Docs (GSoD) again this year. The good news: we’ve made it into the shortlist of accepted projects! This represents an invaluable opportunity for the Flink community to collaborate with technical writers to improve the Table API &amp; SQL documentation. We’re honored to have seen a great number of people reach out over the last couple of weeks, and look forward to receiving applicatio [...]
 If you’re interested in learning more about our project idea or want to get involved in GSoD as a technical writer, check out the announcement blogpost and submit your application. The deadline for GSoD applications is July 9th, 18:00 UTC.
 If you’d like to keep a closer eye on what’s happening in the community, subscribe to the Flink @community mailing list to get fine-grained weekly updates, upcoming event announcements and more.
-`}),e.add({id:188,href:"/2020/06/09/stateful-functions-2.1.0-release-announcement/",title:"Stateful Functions 2.1.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is happy to announce the release of Stateful Functions (StateFun) 2.1.0! This release introduces new features around state expiration and performance improvements for co-located deployments, as well as other important changes that improve the stability and testability of the project. As the commu [...]
+`}),e.add({id:190,href:"/2020/06/09/stateful-functions-2.1.0-release-announcement/",title:"Stateful Functions 2.1.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is happy to announce the release of Stateful Functions (StateFun) 2.1.0! This release introduces new features around state expiration and performance improvements for co-located deployments, as well as other important changes that improve the stability and testability of the project. As the commu [...]
 The binary distribution and source artifacts are now available on the updated Downloads page of the Flink website, and the most recent Python SDK distribution is available on PyPI. For more details, check the complete release changelog and the updated documentation. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA!
 New Features and Improvements # Support for State Time-To-Live (TTL) # Being able to define state expiration and a state cleanup strategy is a useful feature for stateful applications — for example, to keep state size from growing indefinitely or to work with sensitive data. In previous StateFun versions, users could implement this behavior manually using delayed messages as state expiration callbacks. For StateFun 2.1, the community has worked on enabling users to configure any persiste [...]
 Persisted state can be configured to expire after the last write operation (AFTER_WRITE) or after the last read or write operation (AFTER_READ_AND_WRITE). For the Java SDK, users can configure State TTL in the definition of their persisted fields:
@@ -3537,13 +3622,13 @@ Release Notes # Please review the release notes for a detailed list of changes a
 List of Contributors # The Apache Flink community would like to thank all contributors that have made this release possible:
 abc863377, Authuir, Chesnay Schepler, Congxian Qiu, David Anderson, Dian Fu, Francesco Guardiani, Igal Shilman, Marta Paes Moreira, Patrick Wiener, Rafi Aroch, Seth Wiesman, Stephan Ewen, Tzu-Li (Gordon) Tai
 If you’d like to get involved, we’re always looking for new contributors — especially around SDKs for other languages like Go, Rust or Javascript.
-`}),e.add({id:189,href:"/2020/05/12/apache-flink-1.10.1-released/",title:"Apache Flink 1.10.1 Released",section:"Flink Blog",content:`The Apache Flink community released the first bugfix version of the Apache Flink 1.10 series.
+`}),e.add({id:191,href:"/2020/05/12/apache-flink-1.10.1-released/",title:"Apache Flink 1.10.1 Released",section:"Flink Blog",content:`The Apache Flink community released the first bugfix version of the Apache Flink 1.10 series.
 This release includes 158 fixes and minor improvements for Flink 1.10.0. The list below includes a detailed list of all fixes and improvements.
 We highly recommend all users to upgrade to Flink 1.10.1.
 Note FLINK-16684 changed the builders of the StreamingFileSink to make them compilable in Scala. This change is source compatible but binary incompatible. If using the StreamingFileSink, please recompile your user code against 1.10.1 before upgrading. Note FLINK-16683 Flink no longer supports starting clusters with .bat scripts. Users should instead use environments like WSL or Cygwin and work with the .sh scripts. Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.10.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.10.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;vers [...]
 List of resolved issues:
-Sub-task [FLINK-14126] - Elasticsearch Xpack Machine Learning doesn&#39;t support ARM [FLINK-15143] - Create document for FLIP-49 TM memory model and configuration guide [FLINK-15561] - Unify Kerberos credentials checking [FLINK-15790] - Make FlinkKubeClient and its implementations asynchronous [FLINK-15817] - Kubernetes Resource leak while deployment exception happens [FLINK-16049] - Remove outdated &quot;Best Practices&quot; section from Application Development Section [FLINK-16131] -  [...]
+Sub-task [FLINK-14126] - Elasticsearch Xpack Machine Learning doesn&#39;t support ARM [FLINK-15143] - Create document for FLIP-49 TM memory model and configuration guide [FLINK-15561] - Unify Kerberos credentials checking [FLINK-15790] - Make FlinkKubeClient and its implementations asynchronous [FLINK-15817] - Kubernetes Resource leak while deployment exception happens [FLINK-16049] - Remove outdated &quot;Best Practices&quot; section from Application Development Section [FLINK-16131] -  [...]
 Last month also marked the debut of Flink Forward Virtual Conference 2020: what did you think? If you missed it altogether or just want to recap some of the sessions, the videos and slides are now available!
 The Past Month in Flink # Flink Stateful Functions 2.0 is out! # In the beginning of April, the Flink community announced the release of Stateful Functions 2.0 — the first as part of the Apache Flink project. From this release, you can use Flink as the base of a (stateful) serverless platform with out-of-the-box consistent and scalable state, and efficient messaging between functions. You can even run your stateful functions on platforms like AWS Lambda, as Gordon (@tzulitai) demonstrate [...]
 It’s been encouraging to see so many questions about Stateful Functions popping up in the mailing list and Stack Overflow! If you’d like to get involved, we’re always looking for new contributors — especially around SDKs for other languages like Go, Javascript and Rust.
@@ -3573,7 +3658,7 @@ Some areas of the documentation have insufficient detail or are not accessible f
 If you’re interested in learning more about this project idea or want to get involved in GSoD as a technical writer, check out the announcement blogpost.
 &hellip;and something to read! # Events across the globe have pretty much come to a halt, so we’ll leave you with some interesting resources to read and explore instead. In addition to this written content, you can also recap the sessions from the Flink Forward Virtual Conference!
 Type Links Blogposts Event-Driven Supply Chain for Crisis with FlinkSQL and Zeppelin Memory Management Improvements with Apache Flink 1.10 Flink Serialization Tuning Vol. 1: Choosing your Serializer — if you can Tutorials PyFlink: Introducing Python Support for UDFs in Flink's Table API Flink Stateful Functions: where to start? Flink Packages Flink Packages is a website where you can explore (and contribute to) the Flink ecosystem of connectors, extensions, APIs, tools and integrations.  [...]
-`}),e.add({id:191,href:"/2020/05/04/applying-to-google-season-of-docs-2020/",title:"Applying to Google Season of Docs 2020",section:"Flink Blog",content:`The Flink community is thrilled to share that the project is applying again to Google Season of Docs (GSoD) this year! If you’re unfamiliar with the program, GSoD is a great initiative organized by Google Open Source to pair technical writers with mentors to work on documentation for open source projects. The first edition supported ove [...]
+`}),e.add({id:193,href:"/2020/05/04/applying-to-google-season-of-docs-2020/",title:"Applying to Google Season of Docs 2020",section:"Flink Blog",content:`The Flink community is thrilled to share that the project is applying again to Google Season of Docs (GSoD) this year! If you’re unfamiliar with the program, GSoD is a great initiative organized by Google Open Source to pair technical writers with mentors to work on documentation for open source projects. The first edition supported ove [...]
 Why Apply? # As one of the most active projects in the ASF, Flink is experiencing a boom in contributions and some major changes to its codebase. And, while the project has also seen a significant increase in activity when it comes to writing, reviewing and translating documentation, it’s hard to keep up with the pace.
 Since last year, the community has been working on FLIP-42 to improve the documentation experience and bring a more accessible information architecture to Flink. After some discussion, we agreed that GSoD would be a valuable opportunity to double down on this effort and collaborate with someone who is passionate about technical writing&hellip;and Flink!
 How can you contribute? # If working shoulder to shoulder with the Flink community on documentation sounds exciting, we’d love to hear from you! You can read more about our idea for this year’s project below and, depending on whether it is accepted, apply as a technical writer. If you have any questions or just want to know more about the project idea, ping us at dev@flink.apache.org!
@@ -3590,13 +3675,13 @@ Table API &amp; SQL Documentation: //nightlies.apache.org/flink/flink-docs-relea
 How to Contribute Documentation: https://flink.apache.org/contributing/contribute-documentation.html
 Documentation Style Guide: https://flink.apache.org/contributing/docs-style.html
 We look forward to receiving feedback on this GSoD application and also to continue improving the documentation experience for Flink users. Join us!
-`}),e.add({id:192,href:"/2020/04/24/apache-flink-1.9.3-released/",title:"Apache Flink 1.9.3 Released",section:"Flink Blog",content:`The Apache Flink community released the third bugfix version of the Apache Flink 1.9 series.
+`}),e.add({id:194,href:"/2020/04/24/apache-flink-1.9.3-released/",title:"Apache Flink 1.9.3 Released",section:"Flink Blog",content:`The Apache Flink community released the third bugfix version of the Apache Flink 1.9 series.
 This release includes 38 fixes and minor improvements for Flink 1.9.2. The list below includes a detailed list of all fixes and improvements.
 We highly recommend all users to upgrade to Flink 1.9.3.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.9.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.9.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-15143] - Create document for FLIP-49 TM memory model and configuration guide [FLINK-16389] - Bump Kafka 0.10 to 0.10.2.2 Bug [FLINK-11193] - Rocksdb timer service factory configuration option is not settable per job [FLINK-14316] - Stuck in &quot;Job leader ... lost leadership&quot; error [FLINK-14560] - The value of taskmanager.memory.size in flink-conf.yaml is set to zero will cause taskmanager not to work [FLINK-15010] - Temp directories flink-netty-shuffle-* are not c [...]
+Sub-task [FLINK-15143] - Create document for FLIP-49 TM memory model and configuration guide [FLINK-16389] - Bump Kafka 0.10 to 0.10.2.2 Bug [FLINK-11193] - Rocksdb timer service factory configuration option is not settable per job [FLINK-14316] - Stuck in &quot;Job leader ... lost leadership&quot; error [FLINK-14560] - The value of taskmanager.memory.size in flink-conf.yaml is set to zero will cause taskmanager not to work [FLINK-15010] - Temp directories flink-netty-shuffle-* are not c [...]
 Introduction to Flink’s memory model # Having a clear understanding of Apache Flink’s memory model allows you to manage resources for the various workloads more efficiently. The following diagram illustrates the main memory components in Flink:
 Flink: Total Process Memory The Task Manager process is a JVM process. On a high level, its memory consists of the JVM Heap and Off-Heap memory. These types of memory are consumed by Flink directly or by JVM for its specific purposes (i.e. metaspace etc.). There are two major memory consumers within Flink: the user code of job operator tasks and the framework itself consuming memory for internal data structures, network buffers, etc.
 Please note that the user code has direct access to all memory types: JVM Heap, Direct and Native memory. Therefore, Flink cannot really control its allocation and usage. There are however two types of Off-Heap memory which are consumed by tasks and controlled explicitly by Flink:
@@ -3617,7 +3702,7 @@ User code or its dependencies consume significant off-heap memory. Tuning the Ta
 JVM metaspace requires additional memory. If you encounter OutOfMemoryError: Metaspace, Flink provides an option to increase its limit and the JVM will ensure that it is not exceeded.
 JVM requires more internal memory. There is no direct control over certain types of JVM process allocations but Flink provides JVM Overhead options. The options allow declaring an additional amount of memory, anticipated for those allocations and not covered by other options.
 Conclusion # The latest Flink release (Flink 1.10) introduces some significant changes to Flink’s memory configuration, making it possible to manage your application memory and debug Flink significantly better than before. Future developments in this area also include adopting a similar memory model for the job manager process in FLIP-116, so stay tuned for more additions and features in upcoming releases. If you have any suggestions or questions for the community, we encourage you to si [...]
-`}),e.add({id:194,href:"/2020/04/15/flink-serialization-tuning-vol.-1-choosing-your-serializer-if-you-can/",title:"Flink Serialization Tuning Vol. 1: Choosing your Serializer — if you can",section:"Flink Blog",content:`Almost every Flink job has to exchange data between its operators and since these records may not only be sent to another instance in the same JVM but instead to a separate process, records need to be serialized to bytes first. Similarly, Flink’s off-heap state-backend is  [...]
+`}),e.add({id:196,href:"/2020/04/15/flink-serialization-tuning-vol.-1-choosing-your-serializer-if-you-can/",title:"Flink Serialization Tuning Vol. 1: Choosing your Serializer — if you can",section:"Flink Blog",content:`Almost every Flink job has to exchange data between its operators and since these records may not only be sent to another instance in the same JVM but instead to a separate process, records need to be serialized to bytes first. Similarly, Flink’s off-heap state-backend is  [...]
 Since serialization is so crucial to your Flink job, we would like to highlight Flink’s serialization stack in a series of blog posts starting with looking at the different ways Flink can serialize your data types.
 Recap: Flink Serialization # Flink handles data types and serialization with its own type descriptors, generic type extraction, and type serialization framework. We recommend reading through the documentation first in order to be able to follow the arguments we present below. In essence, Flink tries to infer information about your job’s data types for wire and state serialization, and to be able to use grouping, joining, and aggregation operations by referring to individual field names,  [...]
 Choice of Serializer # Apache Flink&rsquo;s out-of-the-box serialization can be roughly divided into the following groups:
@@ -3663,7 +3748,7 @@ If you cannot use POJOs, try to define your data type with one of the serializat
 Note As with all benchmarks, please bear in mind that these numbers only give a hint on Flink’s serializer performance in a specific scenario. They may be different with your data types but the rough classification is probably the same. If you want to be sure, please verify the results with your data types. You should be able to copy from \`SerializationFrameworkAllBenchmarks.java\` to set up your own micro-benchmarks or integrate different serialization benchmarks into your own tooling. [...]
 The fastest de/serialization is achieved with Flink’s internal tuple and row serializers which can access these types&rsquo; fields directly without going via reflection. With roughly 30% decreased throughput as compared to tuples, Protobuf and POJO types do not perform too badly on their own and are more flexible and maintainable. Avro (specific and generic) records as well as Thrift data types further reduce performance by 20% and 30%, respectively. You definitely want to avoid Kryo as [...]
 The next article in this series will use this finding as a starting point to look into a few common pitfalls and obstacles of avoiding Kryo, how to get the most out of the PojoSerializer, and a few more tuning techniques with respect to serialization. Stay tuned for more.
-`}),e.add({id:195,href:"/2020/04/09/pyflink-introducing-python-support-for-udfs-in-flinks-table-api/",title:"PyFlink: Introducing Python Support for UDFs in Flink's Table API",section:"Flink Blog",content:`Flink 1.9 introduced the Python Table API, allowing developers and data engineers to write Python Table API jobs for Table transformations and analysis, such as Python ETL or aggregate jobs. However, Python users faced some limitations when it came to support for Python UDFs in Flink 1 [...]
+`}),e.add({id:197,href:"/2020/04/09/pyflink-introducing-python-support-for-udfs-in-flinks-table-api/",title:"PyFlink: Introducing Python Support for UDFs in Flink's Table API",section:"Flink Blog",content:`Flink 1.9 introduced the Python Table API, allowing developers and data engineers to write Python Table API jobs for Table transformations and analysis, such as Python ETL or aggregate jobs. However, Python users faced some limitations when it came to support for Python UDFs in Flink 1 [...]
 In Flink 1.10, the community further extended the support for Python by adding Python UDFs in PyFlink. Additionally, both the Python UDF environment and dependency management are now supported, allowing users to import third-party libraries in the UDFs, leveraging Python&rsquo;s rich set of third-party libraries.
 Python Support for UDFs in Flink 1.10 # Before diving into how you can define and use Python UDFs, we explain the motivation and background behind how UDFs work in PyFlink and provide some additional context about the implementation of our approach. Below we give a brief introduction on the PyFlink architecture from job submission, all the way to executing the Python UDF.
 The PyFlink architecture mainly includes two parts — local and cluster — as shown in the architecture visual below. The local phase is the compilation of the job, and the cluster is the execution of the job.
@@ -3685,7 +3770,7 @@ Suppose you want to use the mpmath to perform the sum of the example above. The
 @udf(input_types=[DataTypes.BIGINT(), DataTypes.BIGINT()], result_type=DataTypes.BIGINT()) def add(i, j): from mpmath import fadd # add third-party dependency return int(fadd(i, j)) To make it available on the worker node that does not contain the dependency, you can specify the dependencies with the following commands and API:
 $ cd /tmp $ echo mpmath==1.1.0 &gt; requirements.txt $ pip download -d cached_dir -r requirements.txt --no-binary :all: t_env.set_python_requirements(&#34;/tmp/requirements.txt&#34;, &#34;/tmp/cached_dir&#34;) A requirements.txt file that defines the third-party dependencies is used. If the dependencies cannot be accessed in the cluster, then you can specify a directory containing the installation packages of these dependencies by using the parameter &ldquo;requirements_cached_dir&rdquo; [...]
 Conclusion &amp; Upcoming work # In this blog post, we introduced the architecture of Python UDFs in PyFlink and provided some examples on how to define, register and invoke UDFs. Flink 1.10 brings Python support in the framework to new levels, allowing Python users to write even more magic with their preferred language. The community is actively working towards continuously improving the functionality and performance of PyFlink. Future work in upcoming releases will introduce support fo [...]
-`}),e.add({id:196,href:"/2020/04/07/stateful-functions-2.0-an-event-driven-database-on-apache-flink/",title:"Stateful Functions 2.0 - An Event-driven Database on Apache Flink",section:"Flink Blog",content:`Today, we are announcing the release of Stateful Functions (StateFun) 2.0 — the first release of Stateful Functions as part of the Apache Flink project. This release marks a big milestone: Stateful Functions 2.0 is not only an API update, but the first version of an event-driven databa [...]
+`}),e.add({id:198,href:"/2020/04/07/stateful-functions-2.0-an-event-driven-database-on-apache-flink/",title:"Stateful Functions 2.0 - An Event-driven Database on Apache Flink",section:"Flink Blog",content:`Today, we are announcing the release of Stateful Functions (StateFun) 2.0 — the first release of Stateful Functions as part of the Apache Flink project. This release marks a big milestone: Stateful Functions 2.0 is not only an API update, but the first version of an event-driven databa [...]
 Stateful Functions 2.0 makes it possible to combine StateFun’s powerful approach to state and composition with the elasticity, rapid scaling/scale-to-zero and rolling upgrade capabilities of FaaS implementations like AWS Lambda and modern resource orchestration frameworks like Kubernetes.
 With these features, Stateful Functions 2.0 addresses two of the most cited shortcomings of many FaaS setups today: consistent state and efficient messaging between functions.
 An Event-driven Database # When Stateful Functions joined Apache Flink at the beginning of this year, the project had started as a library on top of Flink to build general-purpose event-driven applications. Users would implement functions that receive and send messages, and maintain state in persistent variables. Flink provided the runtime with efficient exactly-once state and messaging. Stateful Functions 1.0 was a FaaS-inspired mix between stream processing and actor programming — on s [...]
@@ -3718,7 +3803,7 @@ The project is still in a comparatively early stage, so if you want to get invol
 To follow the project and learn more, please check out these resources:
 Code: https://github.com/apache/flink-statefun Docs: //nightlies.apache.org/flink/flink-statefun-docs-release-2.0/ Apache Flink project site: https://flink.apache.org/ Apache Flink on Twitter: @ApacheFlink Stateful Functions Webpage: https://statefun.io Stateful Functions on Twitter: @StateFun_IO Thank you! # The Apache Flink community would like to thank all contributors that have made this release possible:
 David Anderson, Dian Fu, Igal Shilman, Seth Wiesman, Stephan Ewen, Tzu-Li (Gordon) Tai, hequn8128
-`}),e.add({id:197,href:"/2020/03/30/flink-community-update-april20/",title:"Flink Community Update - April'20",section:"Flink Blog",content:`While things slow down around us, the Apache Flink community is privileged to remain as active as ever. This blogpost combs through the past few months to give you an update on the state of things in Flink — from core releases to Stateful Functions; from some good old community stats to a new development blog.
+`}),e.add({id:199,href:"/2020/03/30/flink-community-update-april20/",title:"Flink Community Update - April'20",section:"Flink Blog",content:`While things slow down around us, the Apache Flink community is privileged to remain as active as ever. This blogpost combs through the past few months to give you an update on the state of things in Flink — from core releases to Stateful Functions; from some good old community stats to a new development blog.
 And since now it&rsquo;s more important than ever to keep up the spirits, we’d like to invite you to join the Flink Forward Virtual Conference, on April 22-24 (see Upcoming Events). Hope to see you there!
 The Year (so far) in Flink # Flink 1.10 Release # To kick off the new year, the Flink community released Flink 1.10 with the record contribution of over 200 engineers. This release introduced significant improvements to the overall performance and stability of Flink jobs, a preview of native Kubernetes integration and advances in Python support (PyFlink). Flink 1.10 also marked the completion of the Blink integration, hardening streaming SQL and bringing mature batch processing to Flink  [...]
 The community is now discussing the release of Flink 1.10.1, covering some outstanding bugs from Flink 1.10.
@@ -3739,7 +3824,7 @@ Flink &ldquo;Engine Room&rdquo; # The community has recently launched the “Eng
 Upcoming Events # Flink Forward Virtual Conference # The organization of Flink Forward had to make the hard decision of cancelling this year’s event in San Francisco. But all is not lost! Flink Forward SF will be held online on April 22-24 and you can register (for free) here. Join the community for interactive talks and Q&amp;A sessions with core Flink contributors and companies like Splunk, Lyft, Netflix or Google.
 Others # Events across the globe have come to a halt due to the growing concerns around COVID-19, so this time we’ll leave you with some interesting content to read instead. In addition to this written content, you can also recap last year’s sessions from Flink Forward Berlin and Flink Forward China!
 Type Links Blogposts Replayable Process Functions: Time, Ordering, and Timers @Bird Application Log Intelligence & Performance Insights at Salesforce Using Flink @Salesforce State Unlocked: Interacting with State in Apache Flink Advanced Flink Application Patterns Vol.1: Case Study of a Fraud Detection System Advanced Flink Application Patterns Vol.2: Dynamic Updates of Application Logic Apache Beam: How Beam Runs on Top of Flink Flink as Unified Engine for Modern Data Warehousing: Produ [...]
-`}),e.add({id:198,href:"/2020/03/27/flink-as-unified-engine-for-modern-data-warehousing-production-ready-hive-integration/",title:"Flink as Unified Engine for Modern Data Warehousing: Production-Ready Hive Integration",section:"Flink Blog",content:`In this blog post, you will learn our motivation behind the Flink-Hive integration, and how Flink 1.10 can help modernize your data warehouse.
+`}),e.add({id:200,href:"/2020/03/27/flink-as-unified-engine-for-modern-data-warehousing-production-ready-hive-integration/",title:"Flink as Unified Engine for Modern Data Warehousing: Production-Ready Hive Integration",section:"Flink Blog",content:`In this blog post, you will learn our motivation behind the Flink-Hive integration, and how Flink 1.10 can help modernize your data warehouse.
 Introduction # What are some of the latest requirements for your data warehouse and data infrastructure in 2020?
 We’ve came up with some for you.
 Firstly, today’s business is shifting to a more real-time fashion, and thus demands abilities to process online streaming data with low latency for near-real-time or even real-time analytics. People become less and less tolerant of delays between when data is generated and when it arrives at their hands, ready to use. Hours or even days of delay is not acceptable anymore. Users are expecting minutes, or even seconds, of end-to-end latency for data in their warehouse, to get quicker-than- [...]
@@ -3770,7 +3855,7 @@ Hive streaming sink so that Flink can stream data into Hive tables, bringing a r
 Summary # Data warehousing is shifting to a more real-time fashion, and Apache Flink can make a difference for your organization in this space.
 Flink 1.10 brings production-ready Hive integration and empowers users to achieve more in both metadata management and unified/batch data processing.
 We encourage all our users to get their hands on Flink 1.10. You are very welcome to join the community in development, discussions, and all other kinds of collaborations in this topic.
-`}),e.add({id:199,href:"/2020/03/24/advanced-flink-application-patterns-vol.2-dynamic-updates-of-application-logic/",title:"Advanced Flink Application Patterns Vol.2: Dynamic Updates of Application Logic",section:"Flink Blog",content:`In the first article of the series, we gave a high-level description of the objectives and required functionality of a Fraud Detection engine. We also described how to make data partitioning in Apache Flink customizable based on modifiable rules instead of  [...]
+`}),e.add({id:201,href:"/2020/03/24/advanced-flink-application-patterns-vol.2-dynamic-updates-of-application-logic/",title:"Advanced Flink Application Patterns Vol.2: Dynamic Updates of Application Logic",section:"Flink Blog",content:`In the first article of the series, we gave a high-level description of the objectives and required functionality of a Fraud Detection engine. We also described how to make data partitioning in Apache Flink customizable based on modifiable rules instead of  [...]
 We intentionally omitted details of how the applied rules are initialized and what possibilities exist for updating them at runtime. In this post, we will address exactly these details. You will learn how the approach to data partitioning described in Part 1 can be applied in combination with a dynamic configuration. These two patterns, when used together, can eliminate the need to recompile the code and redeploy your Flink job for a wide range of modifications of the business logic.
 Rules Broadcasting # Let&rsquo;s first have a look at the previously-defined data-processing pipeline:
 DataStream&lt;Alert&gt; alerts = transactions .process(new DynamicKeyFunction()) .keyBy((keyed) -&gt; keyed.getKey()); .process(new DynamicAlertFunction()) DynamicKeyFunction provides dynamic data partitioning while DynamicAlertFunction is responsible for executing the main logic of processing transactions and sending alert messages according to defined rules.
@@ -3791,7 +3876,7 @@ public abstract class BroadcastProcessFunction&lt;IN1, IN2, OUT&gt; { public abs
 public class DynamicKeyFunction extends BroadcastProcessFunction&lt;Transaction, Rule, Keyed&lt;Transaction, String, Integer&gt;&gt; { @Override public void processBroadcastElement(Rule rule, Context ctx, Collector&lt;Keyed&lt;Transaction, String, Integer&gt;&gt; out) { BroadcastState&lt;Integer, Rule&gt; broadcastState = ctx.getBroadcastState(RULES_STATE_DESCRIPTOR); broadcastState.put(rule.getRuleId(), rule); } @Override public void processElement(Transaction event, ReadOnlyContext ctx [...]
 DynamicAlertFunction follows the same logic with respect to storing the rules in the broadcast MapState. As described in Part 1, each message in the processElement input is intended to be processed by one specific rule and comes &ldquo;pre-marked&rdquo; with a corresponding ID by DynamicKeyFunction. All we need to do is retrieve the definition of the corresponding rule from BroadcastState by using the provided ID and process it according to the logic required by that rule. At this stage, [...]
 Summary # In this blog post, we continued our investigation of the use case of a Fraud Detection System built with Apache Flink. We looked into different ways in which data can be distributed between parallel operator instances and, most importantly, examined broadcast state. We demonstrated how dynamic partitioning — a pattern described in the first part of the series — can be combined and enhanced by the functionality provided by the broadcast state pattern. The ability to send dynamic [...]
-`}),e.add({id:200,href:"/2020/02/22/apache-beam-how-beam-runs-on-top-of-flink/",title:"Apache Beam: How Beam Runs on Top of Flink",section:"Flink Blog",content:`Note: This blog post is based on the talk &ldquo;Beam on Flink: How Does It Actually Work?&rdquo;.
+`}),e.add({id:202,href:"/2020/02/22/apache-beam-how-beam-runs-on-top-of-flink/",title:"Apache Beam: How Beam Runs on Top of Flink",section:"Flink Blog",content:`Note: This blog post is based on the talk &ldquo;Beam on Flink: How Does It Actually Work?&rdquo;.
 Apache Flink and Apache Beam are open-source frameworks for parallel, distributed data processing at scale. Unlike Flink, Beam does not come with a full-blown execution engine of its own but plugs into other execution engines, such as Apache Flink, Apache Spark, or Google Cloud Dataflow. In this blog post we discuss the reasons to use Flink together with Beam for your batch and stream processing needs. We also take a closer look at how Beam works with Flink to provide an idea of the tech [...]
 What is Apache Beam # Apache Beam is an open-source, unified model for defining batch and streaming data-parallel processing pipelines. It is unified in the sense that you use a single API, in contrast to using a separate API for batch and streaming like it is the case in Flink. Beam was originally developed by Google which released it in 2014 as the Cloud Dataflow SDK. In 2016, it was donated to the Apache Software Foundation with the name of Beam. It has been developed by the open-sour [...]
 The execution model, as well as the API of Apache Beam, are similar to Flink&rsquo;s. Both frameworks are inspired by the MapReduce, MillWheel, and Dataflow papers. Like Flink, Beam is designed for parallel, distributed data processing. Both have similar transformations, support for windowing, event/processing time, watermarks, timers, triggers, and much more. However, Beam not being a full runtime focuses on providing the framework for building portable, multi-language batch and stream  [...]
@@ -3821,7 +3906,7 @@ Environments can be present for many languages. This opens up an entirely new ty
 Conclusion # Using Apache Beam with Apache Flink combines (a.) the power of Flink with (b.) the flexibility of Beam. All it takes to run Beam is a Flink cluster, which you may already have. Apache Beam&rsquo;s fully-fledged Python API is probably the most compelling argument for using Beam with Flink, but the unified API which allows to &ldquo;write-once&rdquo; and &ldquo;execute-anywhere&rdquo; is also very appealing to Beam users. On top of this, features like side inputs and a rich co [...]
 With the introduction of schemas, a new format for handling type information, Beam is heading in a similar direction as Flink with its type system which is essential for the Table API or SQL. Speaking of, the next Flink release will include a Python version of the Table API which is based on the language portability of Beam. Looking ahead, the Beam community plans to extend the support for interactive programs like notebooks. TFX, which is built with Beam, is a very powerful way to solve [...]
 For many years, Beam and Flink have inspired and learned from each other. With the Python support being based on Beam in Flink, they only seem to come closer to each other. That&rsquo;s all the better for the community, and also users have more options and functionality to choose from.
-`}),e.add({id:201,href:"/2020/02/20/no-java-required-configuring-sources-and-sinks-in-sql/",title:"No Java Required: Configuring Sources and Sinks in SQL",section:"Flink Blog",content:` Introduction # The recent Apache Flink 1.10 release includes many exciting features. In particular, it marks the end of the community&rsquo;s year-long effort to merge in the Blink SQL contribution from Alibaba. The reason the community chose to spend so much time on the contribution is that SQL works. It [...]
+`}),e.add({id:203,href:"/2020/02/20/no-java-required-configuring-sources-and-sinks-in-sql/",title:"No Java Required: Configuring Sources and Sinks in SQL",section:"Flink Blog",content:` Introduction # The recent Apache Flink 1.10 release includes many exciting features. In particular, it marks the end of the community&rsquo;s year-long effort to merge in the Blink SQL contribution from Alibaba. The reason the community chose to spend so much time on the contribution is that SQL works. It [...]
 A lot of work focused on improving runtime performance and progressively extending its coverage of the SQL standard. Flink now supports the full TPC-DS query set for batch queries, reflecting the readiness of its SQL engine to address the needs of modern data warehouse-like workloads. Its streaming SQL supports an almost equal set of features - those that are well defined on a streaming runtime - including complex joins and MATCH_RECOGNIZE.
 As important as this work is, the community also strives to make these features generally accessible to the broadest audience possible. That is why the Flink community is excited in 1.10 to offer production-ready DDL syntax (e.g., CREATE TABLE, DROP TABLE) and a refactored catalog interface.
 Accessing Your Data Where It Lives # Flink does not store data at rest; it is a compute engine and requires other systems to consume input from and write its output. Those that have used Flink&rsquo;s DataStream API in the past will be familiar with connectors that allow for interacting with external systems. Flink has a vast connector ecosystem that includes all major message queues, filesystems, and databases.
@@ -3834,7 +3919,7 @@ To solve this problem, Flink 1.10 also ships with a revamped catalog system for
 The most notable catalog that Flink integrates with today is Hive Metastore. The Hive catalog allows Flink to fully interoperate with Hive and serve as a more efficient query engine. Flink supports reading and writing Hive tables, using Hive UDFs, and even leveraging Hive&rsquo;s metastore catalog to persist Flink specific metadata.
 Looking Ahead # Flink SQL has made enormous strides to democratize stream processing, and 1.10 marks a significant milestone in that development. However, we are not ones to rest on our laurels and, the community is committed to raising the bar on standards while lowering the barriers to entry. The community is looking to add more catalogs, such as JDBC and Apache Pulsar. We encourage you to sign up for the mailing list and stay on top of the announcements and new features in upcoming releases.
 My colleague Timo, whose worked on Flink SQL from the beginning, has the entire SQL standard printed on his desk and references it before any changes are merged. It&rsquo;s enormous.&#160;&#x21a9;&#xfe0e;
-`}),e.add({id:202,href:"/2020/02/11/apache-flink-1.10.0-release-announcement/",title:"Apache Flink 1.10.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to hit the double digits and announce the release of Flink 1.10.0! As a result of the biggest community effort to date, with over 1.2k issues implemented and more than 200 contributors, this release introduces significant improvements to the overall performance and stability of Flink jobs, a pre [...]
+`}),e.add({id:204,href:"/2020/02/11/apache-flink-1.10.0-release-announcement/",title:"Apache Flink 1.10.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is excited to hit the double digits and announce the release of Flink 1.10.0! As a result of the biggest community effort to date, with over 1.2k issues implemented and more than 200 contributors, this release introduces significant improvements to the overall performance and stability of Flink jobs, a pre [...]
 Flink 1.10 also marks the completion of the Blink integration, hardening streaming SQL and bringing mature batch processing to Flink with production-ready Hive integration and TPC-DS coverage. This blog post describes all major new features and improvements, important changes to be aware of and what to expect moving forward.
 The binary distribution and source artifacts are now available on the updated Downloads page of the Flink website. For more details, check the complete release changelog and the updated documentation. We encourage you to download the release and share your feedback with the community through the Flink mailing lists or JIRA.
 New Features and Improvements # Improved Memory Management and Configuration # The current TaskExecutor memory configuration in Flink has some shortcomings that make it hard to reason about or optimize resource utilization, such as:
@@ -3886,7 +3971,7 @@ Flink 1.9 shipped with a refactored Web UI, with the legacy one being kept aroun
 Release Notes # Please review the release notes carefully for a detailed list of changes and new features if you plan to upgrade your setup to Flink 1.10. This version is API-compatible with previous 1.x releases for APIs annotated with the @Public annotation.
 List of Contributors # The Apache Flink community would like to thank all contributors that have made this release possible:
 Achyuth Samudrala, Aitozi, Alberto Romero, Alec.Ch, Aleksey Pak, Alexander Fedulov, Alice Yan, Aljoscha Krettek, Aloys, Andrey Zagrebin, Arvid Heise, Benchao Li, Benoit Hanotte, Benoît Paris, Bhagavan Das, Biao Liu, Chesnay Schepler, Congxian Qiu, Cyrille Chépélov, César Soto Valero, David Anderson, David Hrbacek, David Moravek, Dawid Wysakowicz, Dezhi Cai, Dian Fu, Dyana Rose, Eamon Taaffe, Fabian Hueske, Fawad Halim, Fokko Driesprong, Frey Gao, Gabor Gevay, Gao Yun, Gary Yao, GatsbyNew [...]
-`}),e.add({id:203,href:"/2020/02/03/a-guide-for-unit-testing-in-apache-flink/",title:"A Guide for Unit Testing in Apache Flink",section:"Flink Blog",content:`Writing unit tests is one of the essential tasks of designing a production-grade application. Without tests, a single change in code can result in cascades of failure in production. Thus unit tests should be written for all types of applications, be it a simple job cleaning data and training a model or a complex multi-tenant, real-t [...]
+`}),e.add({id:205,href:"/2020/02/03/a-guide-for-unit-testing-in-apache-flink/",title:"A Guide for Unit Testing in Apache Flink",section:"Flink Blog",content:`Writing unit tests is one of the essential tasks of designing a production-grade application. Without tests, a single change in code can result in cascades of failure in production. Thus unit tests should be written for all types of applications, be it a simple job cleaning data and training a model or a complex multi-tenant, real-t [...]
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-test-utils_\${scala.binary.version}&lt;/artifactId&gt; &lt;version&gt;\${flink.version}&lt;/version&gt; &lt;scope&gt;test&lt;/scope&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-runtime_\${scala.binary.version}&lt;/artifactId&gt; &lt;version&gt;\${flink.version}&lt;/version&gt; &lt;scope&gt;test&lt;/scope&gt; &lt;classifier&gt;tes [...]
 Stateless Operators Stateful Operators Timed Process Operators Stateless Operators # Writing unit tests for a stateless operator is a breeze. You need to follow the basic norm of writing a test case, i.e., create an instance of the function class and test the appropriate methods. Let’s take an example of a simple Map operator.
 public class MyStatelessMap implements MapFunction&lt;String, String&gt; { @Override public String map(String in) throws Exception { String out = &#34;hello &#34; + in; return out; } } The test case for the above operator should look like
@@ -3904,13 +3989,13 @@ public class MyProcessFunction extends KeyedProcessFunction&lt;String, String, S
 Let’s take a look at the test case
 @Test public void testProcessElement() throws Exception{ MyProcessFunction myProcessFunction = new MyProcessFunction(); OneInputStreamOperatorTestHarness&lt;String, String&gt; testHarness = new KeyedOneInputStreamOperatorTestHarness&lt;&gt;( new KeyedProcessOperator&lt;&gt;(myProcessFunction), x -&gt; &#34;1&#34;, Types.STRING); // Function time is initialized to 0 testHarness.open(); testHarness.processElement(&#34;world&#34;, 10); Assert.assertEquals( Lists.newArrayList(new StreamRecor [...]
 Summary # In the previous sections we showcased how unit testing in Apache Flink works for stateless, stateful and times-aware-operators. We hope you found the steps easy to follow and execute while developing your Flink applications. If you have any questions or feedback you can reach out to me here or contact the community on the Apache Flink user mailing list.
-`}),e.add({id:204,href:"/2020/01/30/apache-flink-1.9.2-released/",title:"Apache Flink 1.9.2 Released",section:"Flink Blog",content:`The Apache Flink community released the second bugfix version of the Apache Flink 1.9 series.
+`}),e.add({id:206,href:"/2020/01/30/apache-flink-1.9.2-released/",title:"Apache Flink 1.9.2 Released",section:"Flink Blog",content:`The Apache Flink community released the second bugfix version of the Apache Flink 1.9 series.
 This release includes 117 fixes and minor improvements for Flink 1.9.1. The list below includes a detailed list of all fixes and improvements.
 We highly recommend all users to upgrade to Flink 1.9.2.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.9.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.9.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-12122] - Spread out tasks evenly across all available registered TaskManagers [FLINK-13360] - Add documentation for HBase connector for Table API &amp; SQL [FLINK-13361] - Add documentation for JDBC connector for Table API &amp; SQL [FLINK-13723] - Use liquid-c for faster doc generation [FLINK-13724] - Remove unnecessary whitespace from the docs&#39; sidenav [FLINK-13725] - Use sassc for faster doc generation [FLINK-13726] - Build docs with jekyll 4.0.0.pre.beta1 [FLINK-1 [...]
+Sub-task [FLINK-12122] - Spread out tasks evenly across all available registered TaskManagers [FLINK-13360] - Add documentation for HBase connector for Table API &amp; SQL [FLINK-13361] - Add documentation for JDBC connector for Table API &amp; SQL [FLINK-13723] - Use liquid-c for faster doc generation [FLINK-13724] - Remove unnecessary whitespace from the docs&#39; sidenav [FLINK-13725] - Use sassc for faster doc generation [FLINK-13726] - Build docs with jekyll 4.0.0.pre.beta1 [FLINK-1 [...]
 In order to provide a state-of-the-art experience to Flink developers, the Apache Flink community makes significant efforts to provide the safety and future-proof guarantees organizations need while managing state in Flink. In particular, Flink developers should have sufficient means to access and modify their state, as well as making bootstrapping state with existing data from external systems a piece-of-cake. These efforts span multiple Flink major releases and consist of the following:
 Evolvable state schema in Apache Flink Flexibility in swapping state backends, and The State processor API, an offline tool to read, write and modify state in Flink This post discusses the community’s efforts related to state management in Flink, provides some practical examples of how the different features and APIs can be utilized and covers some future ideas for new and improved ways of managing state in Apache Flink.
 Stream processing: What is State? # To set the tone for the remaining of the post, let us first try to explain the very definition of state in stream processing. When it comes to stateful stream processing, state comprises of the information that an application or stream processing engine will remember across events and streams as more realtime (unbounded) and/or offline (bounded) data flow through the system. Most trivial applications are inherently stateful; even the example of a simpl [...]
@@ -3943,7 +4028,7 @@ Looking ahead: More ways to interact with State in Flink # There is a lot of dis
 Beyond widening the scope of the State Processor API, the Flink community is discussing a few additional ways to improve the way developers interact with state in Flink. One of them is the proposal for a Unified Savepoint Format (FLIP-41) for all keyed state backends. Such improvement aims at introducing a unified binary format across all savepoints in all keyed state backends, something that drastically reduces the overhead of swapping the state backend in a Flink application. Such an i [...]
 The community is also discussing the ability to have upgradability dry runs in upcoming Flink releases. Having such functionality in Flink allows developers to detect incompatible updates offline without the need of starting a new Flink job from scratch. For example, Flink users will be able to uncover topology or schema incompatibilities upon upgrading a Flink job, without having to load the state back to a running Flink job in the first place. Additionally, with upgradability dry runs  [...]
 With all the exciting new functionality added in Flink 1.9 as well as some solid ideas and discussions around bringing state in Flink to the next level, the community is committed to making state in Apache Flink a fundamental element of the framework, something that is ever-present across versions and upgrades of your application and a component that is a true first-class citizen in Apache Flink. We encourage you to sign up to the mailing list and stay on top of the announcements and new [...]
-`}),e.add({id:206,href:"/2020/01/15/advanced-flink-application-patterns-vol.1-case-study-of-a-fraud-detection-system/",title:"Advanced Flink Application Patterns Vol.1: Case Study of a Fraud Detection System",section:"Flink Blog",content:`In this series of blog posts you will learn about three powerful Flink patterns for building streaming applications:
+`}),e.add({id:208,href:"/2020/01/15/advanced-flink-application-patterns-vol.1-case-study-of-a-fraud-detection-system/",title:"Advanced Flink Application Patterns Vol.1: Case Study of a Fraud Detection System",section:"Flink Blog",content:`In this series of blog posts you will learn about three powerful Flink patterns for building streaming applications:
 Dynamic updates of application logic Dynamic data partitioning (shuffle), controlled at runtime Low latency alerting based on custom windowing logic (without using the window API) These patterns expand the possibilities of what is achievable with statically defined data flows and provide the building blocks to fulfill complex business requirements.
 Dynamic updates of application logic allow Flink jobs to change at runtime, without downtime from stopping and resubmitting the code.
 Dynamic data partitioning provides the ability to change how events are distributed and grouped by Flink at runtime. Such functionality often becomes a natural requirement when building jobs with dynamically reconfigurable application logic.
@@ -3983,13 +4068,13 @@ Summary: # In this blog post, we have discussed the motivation behind supporting
 To remain focused on describing the core mechanics of the pattern, we kept the complexity of the DSL and the underlying rules engine to a minimum. Going forward, it is easy to imagine adding extensions such as allowing more sophisticated rule definitions, including filtering of certain events, logical rules chaining, and other more advanced functionality.
 In the second part of this series, we will describe how the rules make their way into the running Fraud Detection engine. Additionally, we will go over the implementation details of the main processing function of the pipeline - DynamicAlertFunction().
 Figure 4: End-to-end pipeline In the next article, we will see how Flink&rsquo;s broadcast streams can be utilized to help steer the processing within the Fraud Detection engine at runtime (Dynamic Application Updates pattern).
-`}),e.add({id:207,href:"/2019/12/11/apache-flink-1.8.3-released/",title:"Apache Flink 1.8.3 Released",section:"Flink Blog",content:`The Apache Flink community released the third bugfix version of the Apache Flink 1.8 series.
+`}),e.add({id:209,href:"/2019/12/11/apache-flink-1.8.3-released/",title:"Apache Flink 1.8.3 Released",section:"Flink Blog",content:`The Apache Flink community released the third bugfix version of the Apache Flink 1.8 series.
 This release includes 45 fixes and minor improvements for Flink 1.8.2. The list below includes a detailed list of all fixes and improvements.
 We highly recommend all users to upgrade to Flink 1.8.3.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.8.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.8.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-13723] - Use liquid-c for faster doc generation [FLINK-13724] - Remove unnecessary whitespace from the docs&#39; sidenav [FLINK-13725] - Use sassc for faster doc generation [FLINK-13726] - Build docs with jekyll 4.0.0.pre.beta1 [FLINK-13791] - Speed up sidenav by using group_by Bug [FLINK-12342] - Yarn Resource Manager Acquires Too Many Containers [FLINK-13184] - Starting a TaskExecutor blocks the YarnResourceManager&#39;s main thread [FLINK-13728] - Fix wrong closing tag [...]
+Sub-task [FLINK-13723] - Use liquid-c for faster doc generation [FLINK-13724] - Remove unnecessary whitespace from the docs&#39; sidenav [FLINK-13725] - Use sassc for faster doc generation [FLINK-13726] - Build docs with jekyll 4.0.0.pre.beta1 [FLINK-13791] - Speed up sidenav by using group_by Bug [FLINK-12342] - Yarn Resource Manager Acquires Too Many Containers [FLINK-13184] - Starting a TaskExecutor blocks the YarnResourceManager&#39;s main thread [FLINK-13728] - Fix wrong closing tag [...]
 A short intro to Apache Pulsar # Apache Pulsar is a flexible pub/sub messaging system, backed by durable log storage. Some of the framework’s highlights include multi-tenancy, a unified message model, structured event streams and a cloud-native architecture that make it a perfect fit for a wide set of use cases, ranging from billing, payments and trading services all the way to the unification of the different messaging architectures in an organization. If you are interested in finding o [...]
 Existing Pulsar &amp; Flink integration (Apache Flink 1.6+) # The existing integration between Pulsar and Flink exploits Pulsar as a message queue in a Flink application. Flink developers can utilize Pulsar as a streaming source and streaming sink for their Flink applications by selecting a specific Pulsar source and connecting to their desired Pulsar cluster and topic:
 // create and configure Pulsar consumer PulsarSourceBuilder&lt;String&gt;builder = PulsarSourceBuilder .builder(new SimpleStringSchema()) .serviceUrl(serviceUrl) .topic(inputTopic) .subsciptionName(subscription); SourceFunction&lt;String&gt; src = builder.build(); // ingest DataStream with Pulsar consumer DataStream&lt;String&gt; words = env.addSource(src); Pulsar streams can then get connected to the Flink processing logic…
@@ -4007,7 +4092,7 @@ Flink &amp; Pulsar: Read data from Pulsar # Create a Pulsar source for streaming
 Next Steps &amp; Future Integration # The goal of the integration between Pulsar and Flink is to simplify how developers use the two frameworks to build a unified data processing stack. As we progress from the classical Lamda architectures — where an online, speeding layer is combined with an offline, batch layer to run data computations — Flink and Pulsar present a great combination in providing a truly unified data processing stack. We see Flink as a unified computation engine, handlin [...]
 There is still a lot of ongoing work and effort from both communities in getting the integration even better, such as a new source API (FLIP-27) that will allow the contribution of the Pulsar connectors to the Flink community as well as a new subscription type called Key_Shared subscription type in Pulsar that will allow efficient scaling of the source parallelism. Additional efforts focus around the provision of end-to-end, exactly-once guarantees (currently available only in the source [...]
 You can find a more detailed overview of the integration work between the two communities in this recording video from Flink Forward Europe 2019 or sign up to the Flink dev mailing list for the latest contribution and integration efforts between Flink and Pulsar.
-`}),e.add({id:209,href:"/2019/11/06/running-apache-flink-on-kubernetes-with-kudo/",title:"Running Apache Flink on Kubernetes with KUDO",section:"Flink Blog",content:`A common use case for Apache Flink is streaming data analytics together with Apache Kafka, which provides a pub/sub model and durability for data streams. To achieve elastic scalability, both are typically deployed in clustered environments, and increasingly on top of container orchestration platforms like Kubernetes. The Op [...]
+`}),e.add({id:211,href:"/2019/11/06/running-apache-flink-on-kubernetes-with-kudo/",title:"Running Apache Flink on Kubernetes with KUDO",section:"Flink Blog",content:`A common use case for Apache Flink is streaming data analytics together with Apache Kafka, which provides a pub/sub model and durability for data streams. To achieve elastic scalability, both are typically deployed in clustered environments, and increasingly on top of container orchestration platforms like Kubernetes. The Op [...]
 In this blog post we demonstrate how to orchestrate a streaming data analytics application based on Flink and Kafka with KUDO. It consists of a Flink job that checks financial transactions for fraud, and two microservices that generate and display the transactions. You can find more details about this demo in the KUDO Operators repository, including instructions for installing the dependencies.
 Prerequisites # You can run this demo on your local machine using minikube. The instructions below were tested with minikube v1.5.1 and Kubernetes v1.16.2 but should work on any Kubernetes version above v1.15.0. First, start a minikube cluster with enough capacity:
 minikube start --cpus=6 --memory=9216 --disk-size=10g
@@ -4033,13 +4118,13 @@ It should look similar to this, depending on your local machine and how many cor
 The job is up and running and we should now be able to see fraudulent transaction in the logs of the actor pod:
 $ kubectl logs $(kubectl get pod -l actor=flink-demo -o jsonpath=&#34;{.items[0].metadata.name}&#34;) Broker: flink-demo-kafka-kafka-0.flink-demo-kafka-svc:9093 Topic: fraud Detected Fraud: TransactionAggregate {startTimestamp=0, endTimestamp=1563395831000, totalAmount=19895: Transaction{timestamp=1563395778000, origin=1, target=&#39;3&#39;, amount=8341} Transaction{timestamp=1563395813000, origin=1, target=&#39;3&#39;, amount=8592} Transaction{timestamp=1563395817000, origin=1, target=& [...]
 Conclusion # In this blog post we demonstrated how to easily deploy an end-to-end streaming data application on Kubernetes using KUDO. We deployed a Flink job and two microservices, as well as all the required infrastructure - Flink, Kafka, and ZooKeeper using just a few kubectl commands. To find out more about KUDO, visit the project website or join the community on Slack.
-`}),e.add({id:210,href:"/2019/10/18/apache-flink-1.9.1-released/",title:"Apache Flink 1.9.1 Released",section:"Flink Blog",content:`The Apache Flink community released the first bugfix version of the Apache Flink 1.9 series.
+`}),e.add({id:212,href:"/2019/10/18/apache-flink-1.9.1-released/",title:"Apache Flink 1.9.1 Released",section:"Flink Blog",content:`The Apache Flink community released the first bugfix version of the Apache Flink 1.9 series.
 This release includes 96 fixes and minor improvements for Flink 1.9.0. The list below includes a detailed list of all fixes and improvements.
 We highly recommend all users to upgrade to Flink 1.9.1.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.9.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.9.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Bug [FLINK-11630] - TaskExecutor does not wait for Task termination when terminating itself [FLINK-13490] - Fix if one column value is null when reading JDBC, the following values are all null [FLINK-13941] - Prevent data-loss by not cleaning up small part files from S3. [FLINK-12501] - AvroTypeSerializer does not work with types generated by avrohugger [FLINK-13386] - Fix some frictions in the new default Web UI [FLINK-13526] - Switching to a non existing catalog or database crashes sql [...]
+Bug [FLINK-11630] - TaskExecutor does not wait for Task termination when terminating itself [FLINK-13490] - Fix if one column value is null when reading JDBC, the following values are all null [FLINK-13941] - Prevent data-loss by not cleaning up small part files from S3. [FLINK-12501] - AvroTypeSerializer does not work with types generated by avrohugger [FLINK-13386] - Fix some frictions in the new default Web UI [FLINK-13526] - Switching to a non existing catalog or database crashes sql [...]
 In this post, we explain why this feature is a big step for Flink, what you can use it for, and how to use it. Finally, we will discuss the future of the State Processor API and how it aligns with our plans to evolve Flink into a system for unified batch and stream processing.
 Stateful Stream Processing with Apache Flink until Flink 1.9 # All non-trivial stream processing applications are stateful and most of them are designed to run for months or years. Over time, many of them accumulate a lot of valuable state that can be very expensive or even impossible to rebuild if it gets lost due to a failure. In order to guarantee the consistency and durability of application state, Flink featured a sophisticated checkpointing and recovery mechanism from very early on [...]
 However, a feature that was commonly requested by Flink users was the ability to access the state of an application “from the outside”. This request was motivated by the need to validate or debug the state of an application, to migrate the state of an application to another application, to evolve an application from the Heap State Backend to the RocksDB State Backend, or to import the initial state of an application from an external system like a relational database.
@@ -4054,13 +4139,13 @@ The figure shows how the values of Src&rsquo;s operator state are mapped to a ta
 The State Processor API now offers methods to create, load, and write a savepoint. You can read a DataSet from a loaded savepoint or convert a DataSet into a state and add it to a savepoint. DataSets can be processed with the full feature set of the DataSet API. With these building blocks, all of the before-mentioned use cases (and more) can be addressed. Please have a look at the documentation if you&rsquo;d like to learn how to use the State Processor API in detail.
 Why DataSet API? # In case you are familiar with Flink&rsquo;s roadmap, you might be surprised that the State Processor API is based on the DataSet API. The Flink community plans to extend the DataStream API with the concept of BoundedStreams and deprecate the DataSet API. When designing this feature, we also evaluated the DataStream API or Table API but neither could provide the right feature set yet. Since we didn&rsquo;t want to block this feature on the progress of Flink&rsquo;s APIs [...]
 Summary # Flink users have requested a feature to access and modify the state of streaming applications from the outside for a long time. With the State Processor API, Flink 1.9.0 finally exposes application state as a data format that can be manipulated. This feature opens up many new possibilities for how users can maintain and manage Flink streaming applications, including arbitrary evolution of stream applications and exporting and bootstrapping of application state. To put it concis [...]
-`}),e.add({id:212,href:"/2019/09/11/apache-flink-1.8.2-released/",title:"Apache Flink 1.8.2 Released",section:"Flink Blog",content:`The Apache Flink community released the second bugfix version of the Apache Flink 1.8 series.
+`}),e.add({id:214,href:"/2019/09/11/apache-flink-1.8.2-released/",title:"Apache Flink 1.8.2 Released",section:"Flink Blog",content:`The Apache Flink community released the second bugfix version of the Apache Flink 1.8 series.
 This release includes 23 fixes and minor improvements for Flink 1.8.1. The list below includes a detailed list of all fixes and improvements.
 We highly recommend all users to upgrade to Flink 1.8.2.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.8.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.8.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Bug [FLINK-13941] - Prevent data-loss by not cleaning up small part files from S3. [FLINK-9526] - BucketingSink end-to-end test failed on Travis [FLINK-10368] - &#39;Kerberized YARN on Docker test&#39; unstable [FLINK-12319] - StackOverFlowError in cep.nfa.sharedbuffer.SharedBuffer [FLINK-12736] - ResourceManager may release TM with allocated slots [FLINK-12889] - Job keeps in FAILING state [FLINK-13059] - Cassandra Connector leaks Semaphore on Exception; hangs on close [FLINK-13159] - j [...]
+Bug [FLINK-13941] - Prevent data-loss by not cleaning up small part files from S3. [FLINK-9526] - BucketingSink end-to-end test failed on Travis [FLINK-10368] - &#39;Kerberized YARN on Docker test&#39; unstable [FLINK-12319] - StackOverFlowError in cep.nfa.sharedbuffer.SharedBuffer [FLINK-12736] - ResourceManager may release TM with allocated slots [FLINK-12889] - Job keeps in FAILING state [FLINK-13059] - Cassandra Connector leaks Semaphore on Exception; hangs on close [FLINK-13159] - j [...]
 The first post in the series takes you on an little detour across the year, to freshen up and make sure you&rsquo;re all up to date.
 The Year (so far) in Flink # Two major versions were released this year: Flink 1.8 and Flink 1.9; paving the way for the goal of making Flink the first framework to seamlessly support stream and batch processing with a single, unified runtime. The contribution of Blink to Apache Flink was key in accelerating the path to this vision and reduced the waiting time for long-pending user requests — such as Hive integration, (better) Python support, the rework of Flink&rsquo;s Machine Learning  [...]
 The 1.9 release was the result of the biggest community effort the project has experienced so far, with the number of contributors soaring to 190 (see The Bigger Picture). For a quick overview of the upcoming work for Flink 1.10 (and beyond), have a look at the updated roadmap!
@@ -4082,7 +4167,7 @@ Most Active Visits and Downloads * Most Active Sources: Visits * Most Active Sou
 North America # [Conference] Strata Data Conference 2019, September 23-26, New York, USA [Meetup] Apache Flink Bay Area Meetup, September 24, San Francisco, USA [Conference] Scale By The Bay 2019, November 13-15, San Francisco, USA Europe # [Meetup] Apache Flink London Meetup, September 23, London, UK
 [Conference] Flink Forward Europe 2019, October 7-9, Berlin, Germany
 * The next edition of Flink Forward Europe is around the corner and the [program](https://europe-2019.flink-forward.org/conference-program) has been announced, featuring 70+ talks as well as panel discussions and interactive "Ask Me Anything" sessions with core Flink committers. If you're looking to learn more about Flink and share your experience with other community members, there really is [no better place]((https://vimeo.com/296403091)) than Flink Forward! Note: if you are a committe [...]
-`}),e.add({id:214,href:"/2019/08/22/apache-flink-1.9.0-release-announcement/",title:"Apache Flink 1.9.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is proud to announce the release of Apache Flink 1.9.0.
+`}),e.add({id:216,href:"/2019/08/22/apache-flink-1.9.0-release-announcement/",title:"Apache Flink 1.9.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is proud to announce the release of Apache Flink 1.9.0.
 The Apache Flink project&rsquo;s goal is to develop a stream processing system to unify and power many forms of real-time and offline data processing applications as well as event-driven applications. In this release, we have made a huge step forward in that effort, by integrating Flink’s stream and batch processing capabilities under a single, unified runtime.
 Significant features on this path are batch-style recovery for batch jobs and a preview of the new Blink-based query engine for Table API and SQL queries. We are also excited to announce the availability of the State Processor API, which is one of the most frequently requested features and enables users to read and write savepoints with Flink DataSet jobs. Finally, Flink 1.9 includes a reworked WebUI and previews of Flink’s new Python Table API and its integration with the Apache Hive ec [...]
 This blog post describes all major new features and improvements, important changes to be aware of and what to expect moving forward. For more details, check the complete release changelog.
@@ -4123,7 +4208,7 @@ If you’d like to try the new Python API, you have to manually install PyFlink.
 Important Changes # The Table API and SQL are now part of the default configuration of the Flink distribution. Before, the Table API and SQL had to be enabled by moving the corresponding JAR file from ./opt to ./lib. The machine learning library (flink-ml) has been removed in preparation for FLIP-39. The old DataSet and DataStream Python APIs have been removed in favor of FLIP-38. Flink can be compiled and run on Java 9. Note that certain components interacting with external systems (con [...]
 List of Contributors # We would like to thank all contributors who have made this release possible:
 Abdul Qadeer (abqadeer), Aitozi, Alberto Romero, Aleksey Pak, Alexander Fedulov, Alice Yan, Aljoscha Krettek, Aloys, Andrew Duffy, Andrey Zagrebin, Ankur, Artsem Semianenka, Benchao Li, Biao Liu, Bo WANG, Bowen L, Chesnay Schepler, Clark Yang, Congxian Qiu, Cristian, Danny Chan, David Moravek, Dawid Wysakowicz, Dian Fu, EronWright, Fabian Hueske, Fabio Lombardelli, Fokko Driesprong, Gao Yun, Gary Yao, Gen Luo, Gyula Fora, Hequn Cheng, Hongtao Zhang, Huang Xingbo, HuangXingBo, Hugo Da Cru [...]
-`}),e.add({id:215,href:"/2019/07/23/flink-network-stack-vol.-2-monitoring-metrics-and-that-backpressure-thing/",title:"Flink Network Stack Vol. 2: Monitoring, Metrics, and that Backpressure Thing",section:"Flink Blog",content:` In a previous blog post, we presented how Flink’s network stack works from the high-level abstractions to the low-level details. This second blog post in the series of network stack posts extends on this knowledge and discusses monitoring network-related metrics t [...]
+`}),e.add({id:217,href:"/2019/07/23/flink-network-stack-vol.-2-monitoring-metrics-and-that-backpressure-thing/",title:"Flink Network Stack Vol. 2: Monitoring, Metrics, and that Backpressure Thing",section:"Flink Blog",content:` In a previous blog post, we presented how Flink’s network stack works from the high-level abstractions to the low-level details. This second blog post in the series of network stack posts extends on this knowledge and discusses monitoring network-related metrics t [...]
 Monitoring # Probably the most important part of network monitoring is monitoring backpressure, a situation where a system is receiving data at a higher rate than it can process¹. Such behaviour will result in the sender being backpressured and may be caused by two things:
 The receiver is slow.
 This can happen because the receiver is backpressured itself, is unable to keep processing at the same rate as the sender, or is temporarily blocked by garbage collection, lack of system resources, or I/O.
@@ -4180,13 +4265,13 @@ Since LatencyMarkers sit in network buffers just like normal records, they will
 By looking at the exposed latency tracking metrics for each subtask, for example at the 95th percentile, you should nevertheless be able to identify subtasks which are adding substantially to the overall source-to-sink latency and continue with optimising there.
 Note Flink's latency markers assume that the clocks on all machines in the cluster are in sync. We recommend setting up an automated clock synchronisation service (like NTP) to avoid false latency results. Warning Enabling latency metrics can significantly impact the performance of the cluster (in particular for \`subtask\` granularity) due to the sheer amount of metrics being added as well as the use of histograms which are quite expensive to maintain. It is highly recommended to only u [...]
 Stay tuned for the third blog post in the series of network stack posts that will focus on tuning techniques and anti-patterns to avoid.
-`}),e.add({id:216,href:"/2019/07/02/apache-flink-1.8.1-released/",title:"Apache Flink 1.8.1 Released",section:"Flink Blog",content:`The Apache Flink community released the first bugfix version of the Apache Flink 1.8 series.
+`}),e.add({id:218,href:"/2019/07/02/apache-flink-1.8.1-released/",title:"Apache Flink 1.8.1 Released",section:"Flink Blog",content:`The Apache Flink community released the first bugfix version of the Apache Flink 1.8 series.
 This release includes more than 40 fixes and minor improvements for Flink 1.8.1. The list below includes a detailed list of all improvements, sub-tasks and bug fixes.
 We highly recommend all users to upgrade to Flink 1.8.1.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.8.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.8.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-10921] - Prioritize shard consumers in Kinesis Consumer by event time [FLINK-12617] - StandaloneJobClusterEntrypoint should default to random JobID for non-HA setups Bug [FLINK-9445] - scala-shell uses plain java command [FLINK-10455] - Potential Kafka producer leak in case of failures [FLINK-10941] - Slots prematurely released which still contain unconsumed data [FLINK-11059] - JobMaster may continue using an invalid slot if releasing idle slot meet a timeout [FLINK-1110 [...]
+Sub-task [FLINK-10921] - Prioritize shard consumers in Kinesis Consumer by event time [FLINK-12617] - StandaloneJobClusterEntrypoint should default to random JobID for non-HA setups Bug [FLINK-9445] - scala-shell uses plain java command [FLINK-10455] - Potential Kafka producer leak in case of failures [FLINK-10941] - Slots prematurely released which still contain unconsumed data [FLINK-11059] - JobMaster may continue using an invalid slot if releasing idle slot meet a timeout [FLINK-1110 [...]
 What is Broadcast State? # The Broadcast State can be used to combine and jointly process two streams of events in a specific way. The events of the first stream are broadcasted to all parallel instances of an operator, which maintains them as state. The events of the other stream are not broadcasted but sent to individual instances of the same operator and processed together with the events of the broadcasted stream. The new broadcast state is a natural fit for applications that need to [...]
 Dynamic Pattern Evaluation with Broadcast State # Imagine an e-commerce website that captures the interactions of all users as a stream of user actions. The company that operates the website is interested in analyzing the interactions to increase revenue, improve the user experience, and detect and prevent malicious behavior. The website implements a streaming application that detects a pattern on the stream of user events. However, the company wants to avoid modifying and redeploying th [...]
 Our example application ingests two data streams. The first stream provides user actions on the website and is illustrated on the top left side of the above figure. A user interaction event consists of the type of the action (user login, user logout, add to cart, or complete payment) and the id of the user, which is encoded by color. The user action event stream in our illustration contains a logout action of User 1001 followed by a payment-complete event for User 1003, and an “add-to-ca [...]
@@ -4215,7 +4300,7 @@ processBroadcastElement() is called for each record of the broadcasted stream. I
 The broadcast state (read-write or read-only, depending on the method), A TimerService, which gives access to the record’s timestamp, the current watermark, and which can register timers, The current key (only available in processElement()), and A method to apply a function the keyed state of each registered key (only available in processBroadcastElement()) The KeyedBroadcastProcessFunction has full access to Flink state and time features just like any other ProcessFunction and hence can [...]
 Conclusion # In this blog post, we walked you through an example application to explain what Apache Flink’s broadcast state is and how it can be used to evaluate dynamic patterns on event streams. We’ve also discussed the API and showed the source code of our example application.
 We invite you to check the documentation of this feature and provide feedback or suggestions for further improvements through our mailing list.
-`}),e.add({id:218,href:"/2019/06/05/a-deep-dive-into-flinks-network-stack/",title:"A Deep-Dive into Flink's Network Stack",section:"Flink Blog",content:` Flink’s network stack is one of the core components that make up the flink-runtime module and sit at the heart of every Flink job. It connects individual work units (subtasks) from all TaskManagers. This is where your streamed-in data flows through and it is therefore crucial to the performance of your Flink job for both the throughput  [...]
+`}),e.add({id:220,href:"/2019/06/05/a-deep-dive-into-flinks-network-stack/",title:"A Deep-Dive into Flink's Network Stack",section:"Flink Blog",content:` Flink’s network stack is one of the core components that make up the flink-runtime module and sit at the heart of every Flink job. It connects individual work units (subtasks) from all TaskManagers. This is where your streamed-in data flows through and it is therefore crucial to the performance of your Flink job for both the throughput  [...]
 This blog post is the first in a series of posts about the network stack. In the sections below, we will first have a high-level look at what abstractions are exposed to the stream operators and then go into detail on the physical implementation and various optimisations Flink did. We will briefly present the result of these optimisations and Flink’s trade-off between throughput and latency. Future blog posts in this series will elaborate more on monitoring and metrics, tuning parameters [...]
 Logical View # Flink’s network stack provides the following logical view to the subtasks when communicating with each other, for example during a network shuffle as required by a keyBy().
 It abstracts over the different settings of the following three concepts:
@@ -4252,7 +4337,7 @@ Flush after Buffer Full # The RecordWriter works with a local serialisation buff
 less synchronisation overhead (output flusher and RecordWriter are independent) in high-load scenarios where Netty is the bottleneck (either through backpressure or directly), we can still accumulate data in incomplete buffers significant reduction of Netty notifications However, you may notice an increased CPU use and TCP packet rate during low load scenarios. This is because, with the changes, Flink will use any available CPU cycles to try to maintain the desired latency. Once the load [...]
 Latency vs. Throughput # Network buffers were introduced to get higher resource utilisation and higher throughput at the cost of having some records wait in buffers a little longer. Although an upper limit to this wait time can be given via the buffer timeout, you may be curious to find out more about the trade-off between these two dimensions: latency and throughput, as, obviously, you cannot get both. The following plot shows various values for the buffer timeout starting at 0 (flush w [...]
 Conclusion # Now you know about result partitions, the different network connections and scheduling types for both batch and streaming. You also know about credit-based flow control and how the network stack works internally, in order to reason about network-related tuning parameters and about certain job behaviours. Future blog posts in this series will build upon this knowledge and go into more operational details including relevant metrics to look at, further network stack tuning, and [...]
-`}),e.add({id:219,href:"/2019/05/17/state-ttl-in-flink-1.8.0-how-to-automatically-cleanup-application-state-in-apache-flink/",title:"State TTL in Flink 1.8.0: How to Automatically Cleanup Application State in Apache Flink",section:"Flink Blog",content:`A common requirement for many stateful streaming applications is to automatically cleanup application state for effective management of your state size, or to control how long the application state can be accessed (e.g. due to legal regula [...]
+`}),e.add({id:221,href:"/2019/05/17/state-ttl-in-flink-1.8.0-how-to-automatically-cleanup-application-state-in-apache-flink/",title:"State TTL in Flink 1.8.0: How to Automatically Cleanup Application State in Apache Flink",section:"Flink Blog",content:`A common requirement for many stateful streaming applications is to automatically cleanup application state for effective management of your state size, or to control how long the application state can be accessed (e.g. due to legal regula [...]
 In this post, we motivate the State TTL feature and discuss its use cases. Moreover, we show how to use and configure it. We explain how Flink internally manages state with TTL and present some exciting additions to the feature in Flink 1.8.0. The blog post concludes with an outlook on future improvements and extensions.
 The Transient Nature of State # There are two major reasons why state should be maintained only for a limited time. For example, let’s imagine a Flink application that ingests a stream of user login events and stores for each user the time of the last login to improve the experience of frequent visitors.
 Controlling the size of state. Being able to efficiently manage an ever-growing state size is a primary use case for state TTL. Oftentimes, data needs to be persisted temporarily while there is some user activity around it, e.g. web sessions. When the activity ends there is no longer interest in that data while it still occupies storage. Flink 1.8.0 introduces background cleanup of old state based on TTL that makes the eviction of no-longer-necessary data frictionless. Previously, the ap [...]
@@ -4281,7 +4366,7 @@ Eager State Cleanup with Timers # Another way to manually cleanup state is based
 Future work # Apart from including the timer-based cleanup strategy, mentioned above, the Flink community has plans to further improve the state TTL feature. The possible improvements include adding support of TTL for event time scale (only processing time is supported at the moment) and enabling State TTL for queryable state.
 We encourage you to join the conversation and share your thoughts and ideas in the Apache Flink JIRA board or by subscribing to the Apache Flink dev mailing list. Feedback or suggestions are always appreciated and we look forward to hearing your thoughts on the Flink mailing lists.
 Summary # Time-based state access restrictions and controlling the size of application state are common challenges in the world of stateful stream processing. Flink’s 1.8.0 release significantly improves the State TTL feature by adding support for continuous background cleanup of expired state objects. The new clean up mechanisms relieve you from manually implementing state cleanup. They are also more efficient due to their lazy nature. State TTL gives you control over the size of your a [...]
-`}),e.add({id:220,href:"/2019/05/14/flux-capacitor-huh-temporal-tables-and-joins-in-streaming-sql/",title:"Flux capacitor, huh? Temporal Tables and Joins in Streaming SQL",section:"Flink Blog",content:`Figuring out how to manage and model temporal data for effective point-in-time analysis was a longstanding battle, dating as far back as the early 80’s, that culminated with the introduction of temporal tables in the SQL standard in 2011. Up to that point, users were doomed to implement th [...]
+`}),e.add({id:222,href:"/2019/05/14/flux-capacitor-huh-temporal-tables-and-joins-in-streaming-sql/",title:"Flux capacitor, huh? Temporal Tables and Joins in Streaming SQL",section:"Flink Blog",content:`Figuring out how to manage and model temporal data for effective point-in-time analysis was a longstanding battle, dating as far back as the early 80’s, that culminated with the introduction of temporal tables in the SQL standard in 2011. Up to that point, users were doomed to implement th [...]
 For example: given a stream with Taxi Fare events tied to the local currency of the ride location, we might want to convert the fare price to a common currency for further processing. As conversion rates excel at fluctuating over time, each Taxi Fare event would need to be matched to the rate that was valid at the time the event occurred in order to produce a reliable result.
 Modelling Temporal Data with Flink # In the 1.7 release, Flink has introduced the concept of temporal tables into its streaming SQL and Table API: parameterized views on append-only tables — or, any table that only allows records to be inserted, never updated or deleted — that are interpreted as a changelog and keep data closely tied to time context, so that it can be interpreted as valid only within a specific period of time. Transforming a stream into a temporal table requires:
 Defining a primary key and a versioning field that can be used to keep track of the changes that happen over time;
@@ -4296,7 +4381,7 @@ Temporal table joins support both processing and event time semantics and effect
 Narrowing the scope of the join: only the time-matching version of ratesHistory is visible for a given taxiFare.time; Pruning unneeded records from state: for cases using event time, records between current time and the watermark delay are persisted for both the probe and build side. These are discarded as soon as the watermark arrives and the results are emitted — allowing the join operation to move forward in time and the build table to “refresh” its version in state. Conclusion # All  [...]
 If you&rsquo;d like to get some hands-on practice in joining streams with Flink SQL (and Flink SQL in general), checkout this free training for Flink SQL. The training environment is based on Docker and set up in just a few minutes.
 Subscribe to the Apache Flink mailing lists to stay up-to-date with the latest developments in this space.
-`}),e.add({id:221,href:"/2019/05/03/when-flink-pulsar-come-together/",title:"When Flink & Pulsar Come Together",section:"Flink Blog",content:`The open source data technology frameworks Apache Flink and Apache Pulsar can integrate in different ways to provide elastic data processing at large scale. I recently gave a talk at Flink Forward San Francisco 2019 and presented some of the integrations between the two frameworks for batch and streaming applications. In this post, I will give a sh [...]
+`}),e.add({id:223,href:"/2019/05/03/when-flink-pulsar-come-together/",title:"When Flink & Pulsar Come Together",section:"Flink Blog",content:`The open source data technology frameworks Apache Flink and Apache Pulsar can integrate in different ways to provide elastic data processing at large scale. I recently gave a talk at Flink Forward San Francisco 2019 and presented some of the integrations between the two frameworks for batch and streaming applications. In this post, I will give a sh [...]
 A brief introduction to Apache Pulsar # Apache Pulsar is an open-source distributed pub-sub messaging system under the stewardship of the Apache Software Foundation. Pulsar is a multi-tenant, high-performance solution for server-to-server messaging including multiple features such as native support for multiple clusters in a Pulsar instance, with seamless geo-replication of messages across clusters, very low publish and end-to-end latency, seamless scalability to over a million topics, a [...]
 The first differentiating factor stems from the fact that although Pulsar provides a flexible pub-sub messaging system it is also backed by durable log storage — hence combining both messaging and storage under one framework. Because of that layered architecture, Pulsar provides instant failure recovery, independent scalability and balance-free cluster expansion.
 Pulsar’s architecture follows a similar pattern to other pub-sub systems as the framework is organized in topics as the main data entity, with producers sending data to, and consumers receiving data from a topic as shown in the diagram below.
@@ -4312,7 +4397,7 @@ Existing Integrations # Integration between the two frameworks is ongoing and de
 // create and configure Pulsar consumer PulsarSourceBuilder&lt;String&gt;builder = PulsarSourceBuilder .builder(new SimpleStringSchema()) .serviceUrl(serviceUrl) .topic(inputTopic) .subscriptionName(subscription); SourceFunction&lt;String&gt; src = builder.build(); // ingest DataStream with Pulsar consumer DataStream&lt;String&gt; words = env.addSource(src); // perform computation on DataStream (here a simple WordCount) DataStream&lt;WordWithCount&gt; wc = words .flatMap((FlatMapFunction [...]
 // obtain a DataStream with words DataStream&lt;String&gt; words = ... // register DataStream as Table &#34;words&#34; with two attributes (&#34;word&#34;, &#34;ts&#34;). // &#34;ts&#34; is an event-time timestamp. tableEnvironment.registerDataStream(&#34;words&#34;, words, &#34;word, ts.rowtime&#34;); // create a TableSink that produces to Pulsar TableSink sink = new PulsarJsonTableSink( serviceUrl, outputTopic, new AuthenticationDisabled(), ROUTING_KEY); // register Pulsar TableSink as [...]
 // obtain DataSet from arbitrary computation DataSet&lt;WordWithCount&gt; wc = ... // create PulsarOutputFormat instance OutputFormat pulsarOutputFormat = new PulsarOutputFormat( serviceUrl, topic, new AuthenticationDisabled(), wordWithCount -&gt; wordWithCount.toString().getBytes()); // write DataSet to Pulsar wc.output(pulsarOutputFormat); Conclusion # Both Pulsar and Flink share a similar view on how the data and the computation level of an application can be “streaming-first” with ba [...]
-`}),e.add({id:222,href:"/2019/04/17/apache-flinks-application-to-season-of-docs/",title:"Apache Flink's Application to Season of Docs",section:"Flink Blog",content:`The Apache Flink community is happy to announce its application to the first edition of Season of Docs by Google. The program is bringing together Open Source projects and technical writers to raise awareness for and improve documentation of Open Source projects. While the community is continuously looking for new contributor [...]
+`}),e.add({id:224,href:"/2019/04/17/apache-flinks-application-to-season-of-docs/",title:"Apache Flink's Application to Season of Docs",section:"Flink Blog",content:`The Apache Flink community is happy to announce its application to the first edition of Season of Docs by Google. The program is bringing together Open Source projects and technical writers to raise awareness for and improve documentation of Open Source projects. While the community is continuously looking for new contributor [...]
 The community has discussed this opportunity on the dev mailinglist and agreed on three project ideas to submit to the program. We have a great team of mentors (Stephan, Fabian, David, Jark &amp; Konstantin) lined up and are very much looking forward to the first proposals by potential technical writers (given we are admitted to the program ;)). In case of questions feel free to reach out to the community via dev@flink.apache.org.
 Project Ideas List # Project 1: Improve Documentation of Stream Processing Concepts # Description: Stream processing is the processing of data in motion―in other words, computing on data directly as it is produced or received. Apache Flink has pioneered the field of distributed, stateful stream processing over the last several years. As the community has pushed the boundaries of stream processing, we have introduced new concepts that users need to become familiar with to develop and oper [...]
 In this project, we would like to restructure, consolidate and extend the concepts documentation for Apache Flink to better guide users who want to become productive as quickly as possible. This includes better conceptual introductions to topics such as event time, state, and fault tolerance with proper linking to and from relevant deployment and development guides.
@@ -4323,7 +4408,7 @@ Related material:
 //nightlies.apache.org/flink/flink-docs-release-1.8/ops //nightlies.apache.org/flink/flink-docs-release-1.8/monitoring Project 3: Improve Documentation for Relational APIs (Table API &amp; SQL) # Description: Apache Flink features APIs at different levels of abstraction which enables its users to trade conciseness for expressiveness. Flink’s relational APIs, SQL and the Table API, are “younger” than the DataStream and DataSet APIs, more high-level and focus on data analytics use cases. A [...]
 The existing documentation could be reorganized to prepare for covering the new features. Moreover, it could be improved by adding a concepts section that describes the use cases and internals of the APIs in more detail. Moreover, the documentation of built-in functions could be improved by adding more concrete examples.
 Related material:
-Table API &amp; SQL docs main page Built-in functions Concepts Streaming Concepts `}),e.add({id:223,href:"/2019/04/09/apache-flink-1.8.0-release-announcement/",title:"Apache Flink 1.8.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is pleased to announce Apache Flink 1.8.0. The latest release includes more than 420 resolved issues and some exciting additions to Flink that we describe in the following sections of this post. Please check the complete change [...]
+Table API &amp; SQL docs main page Built-in functions Concepts Streaming Concepts `}),e.add({id:225,href:"/2019/04/09/apache-flink-1.8.0-release-announcement/",title:"Apache Flink 1.8.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is pleased to announce Apache Flink 1.8.0. The latest release includes more than 420 resolved issues and some exciting additions to Flink that we describe in the following sections of this post. Please check the complete change [...]
 Flink 1.8.0 is API-compatible with previous 1.x.y releases for APIs annotated with the @Public annotation. The release is available now and we encourage everyone to download the release and check out the updated documentation. Feedback through the Flink mailing lists or JIRA is, as always, very much appreciated!
 You can find the binaries on the updated Downloads page on the Flink project site.
 With Flink 1.8.0 we come closer to our goals of enabling fast data processing and building data-intensive applications for the Flink community in a seamless way. We do this by cleaning up and refactoring Flink under the hood to allow more efficient feature development in the future. This includes removal of the legacy runtime components that were subsumed in the major rework of Flink&rsquo;s underlying distributed system architecture (FLIP-6) as well as refactorings on the Table API that [...]
@@ -4352,7 +4437,7 @@ Change in the Maven modules of Table API (FLINK-11064): Users that had a flink-t
 Known Issues # Discarded checkpoint can cause Tasks to fail (FLINK-11662): There is a race condition that can lead to erroneous checkpoint failures. This mostly occurs when restarting from a savepoint or checkpoint takes a long time at the sources of a job. If you see random checkpointing failures that don&rsquo;t seem to have a good explanation you might be affected. Please see the Jira issue for more details and a workaround for the problem. Release Notes # Please review the release no [...]
 List of Contributors # We would like to acknowledge all community members for contributing to this release. Special credits go to the following members for contributing to the 1.8.0 release (according to git log --pretty=&quot;%an&quot; release-1.7.0..release-1.8.0 | sort | uniq without manual deduplication):
 Addison Higham, Aitozi, Aleksey Pak, Alexander Fedulov, Alexey Trenikhin, Aljoscha Krettek, Andrey Zagrebin, Artsem Semianenka, Asura7969, Avi, Barisa Obradovic, Benchao Li, Bo WANG, Chesnay Schepler, Congxian Qiu, Cristian, David Anderson, Dawid Wysakowicz, Dian Fu, DuBin, EAlexRojas, EronWright, Eugen Yushin, Fabian Hueske, Fokko Driesprong, Gary Yao, Hequn Cheng, Igal Shilman, Jamie Grier, JaryZhen, Jeff Zhang, Jihyun Cho, Jinhu Wu, Joerg Schad, KarmaGYZ, Kezhu Wang, Konstantin Knauf, [...]
-`}),e.add({id:224,href:"/2019/03/11/flink-and-prometheus-cloud-native-monitoring-of-streaming-applications/",title:"Flink and Prometheus: Cloud-native monitoring of streaming applications",section:"Flink Blog",content:`This blog post describes how developers can leverage Apache Flink&rsquo;s built-in metrics system together with Prometheus to observe and monitor streaming applications in an effective way. This is a follow-up post from my Flink Forward Berlin 2018 talk (slides, video). We [...]
+`}),e.add({id:226,href:"/2019/03/11/flink-and-prometheus-cloud-native-monitoring-of-streaming-applications/",title:"Flink and Prometheus: Cloud-native monitoring of streaming applications",section:"Flink Blog",content:`This blog post describes how developers can leverage Apache Flink&rsquo;s built-in metrics system together with Prometheus to observe and monitor streaming applications in an effective way. This is a follow-up post from my Flink Forward Berlin 2018 talk (slides, video). We [...]
 Why Prometheus? # Prometheus is a metrics-based monitoring system that was originally created in 2012. The system is completely open-source (under the Apache License 2) with a vibrant community behind it and it has graduated from the Cloud Native Foundation last year – a sign of maturity, stability and production-readiness. As we mentioned, the system is based on metrics and it is designed to measure the overall health, behavior and performance of a service. Prometheus features a multi-d [...]
 Metrics: Prometheus defines metrics as floats of information that change in time. These time series have millisecond precision.
 Labels are the key-value pairs associated with time series that support Prometheus&rsquo; flexible and powerful data model – in contrast to hierarchical data structures that one might experience with traditional metrics systems.
@@ -4375,7 +4460,7 @@ docker kill taskmanager1 Our Flink job can recover from this partial failure via
 Example alert in Prometheus web UI. In real-world situations alerts like this one can be routed through a component called Alertmanager and be grouped into notifications to systems like email, PagerDuty or Slack.
 Go ahead and play around with the setup, and check out the Grafana instance reachable at http://localhost:3000 (credentials admin:flink) for visualizing Prometheus metrics. If there are any questions or problems, feel free to create an issue. Once finished, do not forget to tear down the setup via
 ./gradlew composeDown Conclusion # Using Prometheus together with Flink provides an easy way for effective monitoring and alerting of your Flink jobs. Both projects have exciting and vibrant communities behind them with new developments and additions scheduled for upcoming releases. We encourage you to try the two technologies together as it has immensely improved our insights into Flink jobs running in production.
-`}),e.add({id:225,href:"/2019/03/06/what-to-expect-from-flink-forward-san-francisco-2019/",title:"What to expect from Flink Forward San Francisco 2019",section:"Flink Blog",content:`The third annual Flink Forward San Francisco is just a few weeks away! As always, Flink Forward will be the right place to meet and mingle with experienced Flink users, contributors, and committers. Attendees will hear and chat about the latest developments around Flink and learn from technical deep-dive sess [...]
+`}),e.add({id:227,href:"/2019/03/06/what-to-expect-from-flink-forward-san-francisco-2019/",title:"What to expect from Flink Forward San Francisco 2019",section:"Flink Blog",content:`The third annual Flink Forward San Francisco is just a few weeks away! As always, Flink Forward will be the right place to meet and mingle with experienced Flink users, contributors, and committers. Attendees will hear and chat about the latest developments around Flink and learn from technical deep-dive sess [...]
 Some highlights of the program are:
 Realtime Store Visit Predictions at Scale: Luca Giovagnoli from Yelp will talk about a &ldquo;multidisciplinary&rdquo; Flink application that combines geospatial clustering algorithms, Machine Learning models, and cutting-edge stream-processing technology.
 Real-time Processing with Flink for Machine Learning at Netflix: Elliot Chow will discuss the practical aspects of using Apache Flink to power Machine Learning algorithms for video recommendations, search results ranking, and selection of artwork images at Netflix.
@@ -4389,13 +4474,13 @@ Analyzing Streaming Data with Flink SQL: In this hands-on training, you will lea
 Troubleshooting and Operating Flink at large scale: In this training, we will focus on everything you need to run Apache Flink applications reliably and efficiently in production including topics like capacity planning, monitoring, troubleshooting and tuning Apache Flink.
 If you haven&rsquo;t done so yet, check out the full schedule and register your attendance. I&rsquo;m looking forward to meet you at Flink Forward San Francisco.
 Fabian
-`}),e.add({id:226,href:"/2019/02/25/apache-flink-1.6.4-released/",title:"Apache Flink 1.6.4 Released",section:"Flink Blog",content:`The Apache Flink community released the fourth bugfix version of the Apache Flink 1.6 series.
+`}),e.add({id:228,href:"/2019/02/25/apache-flink-1.6.4-released/",title:"Apache Flink 1.6.4 Released",section:"Flink Blog",content:`The Apache Flink community released the fourth bugfix version of the Apache Flink 1.6 series.
 This release includes more than 25 fixes and minor improvements for Flink 1.6.3. The list below includes a detailed list of all fixes.
 We highly recommend all users to upgrade to Flink 1.6.4.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.6.4&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.6.4&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Bug [FLINK-10721] - Kafka discovery-loop exceptions may be swallowed [FLINK-10761] - MetricGroup#getAllVariables can deadlock [FLINK-10774] - connection leak when partition discovery is disabled and open throws exception [FLINK-10848] - Flink&#39;s Yarn ResourceManager can allocate too many excess containers [FLINK-11022] - Update LICENSE and NOTICE files for older releases [FLINK-11071] - Dynamic proxy classes cannot be resolved when deserializing job graph [FLINK-11084] - Incorrect oup [...]
+Bug [FLINK-10721] - Kafka discovery-loop exceptions may be swallowed [FLINK-10761] - MetricGroup#getAllVariables can deadlock [FLINK-10774] - connection leak when partition discovery is disabled and open throws exception [FLINK-10848] - Flink&#39;s Yarn ResourceManager can allocate too many excess containers [FLINK-11022] - Update LICENSE and NOTICE files for older releases [FLINK-11071] - Dynamic proxy classes cannot be resolved when deserializing job graph [FLINK-11084] - Incorrect oup [...]
 With business-critical applications running on Apache Flink, performance monitoring becomes an increasingly important part of a successful production deployment. It ensures that any degradation or downtime is immediately identified and resolved as quickly as possible.
 Monitoring goes hand-in-hand with observability, which is a prerequisite for troubleshooting and performance tuning. Nowadays, with the complexity of modern enterprise applications and the speed of delivery increasing, an engineering team must understand and have a complete overview of its applications’ status at any given point in time.
 Flink’s Metrics System # The foundation for monitoring Flink jobs is its metrics system which consists of two components; Metrics and MetricsReporters.
@@ -4448,13 +4533,13 @@ Metric Scope Description Status.JVM.CPU.Load job-/taskmanager The recent CPU usa
 TaskManager & JobManager CPU load. System Resources # In addition to the JVM metrics above, it is also possible to use Flink’s metrics system to gather insights about system resources, i.e. memory, CPU &amp; network-related metrics for the whole machine as opposed to the Flink processes alone. System resource monitoring is disabled by default and requires additional dependencies on the classpath. Please check out the Flink system resource metrics documentation for additional guidance and [...]
 Conclusion # This post tries to shed some light on Flink’s metrics and monitoring system. You can utilise it as a starting point when you first think about how to successfully monitor your Flink application. I highly recommend to start monitoring your Flink application early on in the development phase. This way you will be able to improve your dashboards and alerts over time and, more importantly, observe the performance impact of the changes to your application throughout the developme [...]
 Last but not least, this post only scratches the surface of the overall metrics and monitoring capabilities of Apache Flink. I highly recommend going over Flink’s metrics documentation for a full reference of Flink’s metrics system.
-`}),e.add({id:228,href:"/2019/02/15/apache-flink-1.7.2-released/",title:"Apache Flink 1.7.2 Released",section:"Flink Blog",content:`The Apache Flink community released the second bugfix version of the Apache Flink 1.7 series.
+`}),e.add({id:230,href:"/2019/02/15/apache-flink-1.7.2-released/",title:"Apache Flink 1.7.2 Released",section:"Flink Blog",content:`The Apache Flink community released the second bugfix version of the Apache Flink 1.7 series.
 This release includes more than 40 fixes and minor improvements for Flink 1.7.1, covering several critical recovery issues as well as problems in the Flink streaming connectors.
 The list below includes a detailed list of all fixes. We highly recommend all users to upgrade to Flink 1.7.2.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.7.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.7.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-11179] - JoinCancelingITCase#testCancelSortMatchWhileDoingHeavySorting test error [FLINK-11180] - ProcessFailureCancelingITCase#testCancelingOnProcessFailure [FLINK-11181] - SimpleRecoveryITCaseBase test error Bug [FLINK-10721] - Kafka discovery-loop exceptions may be swallowed [FLINK-10761] - MetricGroup#getAllVariables can deadlock [FLINK-10774] - connection leak when partition discovery is disabled and open throws exception [FLINK-10848] - Flink&#39;s Yarn ResourceMana [...]
+Sub-task [FLINK-11179] - JoinCancelingITCase#testCancelSortMatchWhileDoingHeavySorting test error [FLINK-11180] - ProcessFailureCancelingITCase#testCancelingOnProcessFailure [FLINK-11181] - SimpleRecoveryITCaseBase test error Bug [FLINK-10721] - Kafka discovery-loop exceptions may be swallowed [FLINK-10761] - MetricGroup#getAllVariables can deadlock [FLINK-10774] - connection leak when partition discovery is disabled and open throws exception [FLINK-10848] - Flink&#39;s Yarn ResourceMana [...]
 A Unified Approach to Batch and Streaming # Since its early days, Apache Flink has followed the philosophy of taking a unified approach to batch and streaming data processing. The core building block is &ldquo;continuous processing of unbounded data streams&rdquo;: if you can do that, you can also do offline processing of bounded data sets (batch processing use cases), because these are just streams that happen to end at some point.
 The &ldquo;streaming first, with batch as a special case of streaming&rdquo; philosophy is supported by various projects (for example Flink, Beam, etc.) and often been cited as a powerful way to build data applications that generalize across real-time and offline processing and to help greatly reduce the complexity of data infrastructures.
 Why are there still batch processors? # However, &ldquo;batch is just a special case of streaming&rdquo; does not mean that any stream processor is now the right tool for your batch processing use cases - the introduction of stream processors did not render batch processors obsolete:
@@ -4495,25 +4580,25 @@ Once this effort is finished, we can add Blink’s scheduling and recovery strat
 The extended catalog support, DDL support, as well as support for Hive’s catalog and integrations is currently going through separate design discussions. We plan to leverage existing code here whenever it makes sense.
 Summary # We believe that the data processing stack of the future is based on stream processing: The elegance of stream processing with its ability to model offline processing (batch), real-time data processing, and event-driven applications in the same way, while offering high performance and consistency is simply too compelling.
 Exploiting certain properties of bounded data is important for a stream processor to achieve the same performance as dedicated batch processors. While Flink always supported batch processing, the project is taking the next step in building a unified runtime and towards becoming a stream processor that is competitive with batch processing systems even on their home turf: OLAP SQL. The contribution of Alibaba’s Blink code helps the Flink community to pick up the speed on this development.
-`}),e.add({id:230,href:"/2018/12/26/apache-flink-1.5.6-released/",title:"Apache Flink 1.5.6 Released",section:"Flink Blog",content:`The Apache Flink community released the sixth and last bugfix version of the Apache Flink 1.5 series.
+`}),e.add({id:232,href:"/2018/12/26/apache-flink-1.5.6-released/",title:"Apache Flink 1.5.6 Released",section:"Flink Blog",content:`The Apache Flink community released the sixth and last bugfix version of the Apache Flink 1.5 series.
 This release includes more than 47 fixes and minor improvements for Flink 1.5.5. The list below includes a detailed list of all fixes.
 We highly recommend all users to upgrade to Flink 1.5.6.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.5.6&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.5.6&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-10252] - Handle oversized metric messages [FLINK-10863] - Assign uids to all operators Bug [FLINK-8336] - YarnFileStageTestS3ITCase.testRecursiveUploadForYarnS3 test instability [FLINK-9646] - ExecutionGraphCoLocationRestartTest.testConstraintsAfterRestart failed on Travis [FLINK-10166] - Dependency problems when executing SQL query in sql-client [FLINK-10309] - Cancel with savepoint fails with java.net.ConnectException when using the per job-mode [FLINK-10419] - ClassNot [...]
+Sub-task [FLINK-10252] - Handle oversized metric messages [FLINK-10863] - Assign uids to all operators Bug [FLINK-8336] - YarnFileStageTestS3ITCase.testRecursiveUploadForYarnS3 test instability [FLINK-9646] - ExecutionGraphCoLocationRestartTest.testConstraintsAfterRestart failed on Travis [FLINK-10166] - Dependency problems when executing SQL query in sql-client [FLINK-10309] - Cancel with savepoint fails with java.net.ConnectException when using the per job-mode [FLINK-10419] - ClassNot [...]
 This release includes more than 80 fixes and minor improvements for Flink 1.6.2. The list below includes a detailed list of all fixes.
 We highly recommend all users to upgrade to Flink 1.6.3.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.6.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.6.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-10097] - More tests to increase StreamingFileSink test coverage [FLINK-10252] - Handle oversized metric messages [FLINK-10367] - Avoid recursion stack overflow during releasing SingleInputGate [FLINK-10863] - Assign uids to all operators in general purpose testing job Bug [FLINK-8336] - YarnFileStageTestS3ITCase.testRecursiveUploadForYarnS3 test instability [FLINK-9635] - Local recovery scheduling can cause spread out of tasks [FLINK-9646] - ExecutionGraphCoLocationRestar [...]
+Sub-task [FLINK-10097] - More tests to increase StreamingFileSink test coverage [FLINK-10252] - Handle oversized metric messages [FLINK-10367] - Avoid recursion stack overflow during releasing SingleInputGate [FLINK-10863] - Assign uids to all operators in general purpose testing job Bug [FLINK-8336] - YarnFileStageTestS3ITCase.testRecursiveUploadForYarnS3 test instability [FLINK-9635] - Local recovery scheduling can cause spread out of tasks [FLINK-9646] - ExecutionGraphCoLocationRestar [...]
 This release includes 27 fixes and minor improvements for Flink 1.7.0. The list below includes a detailed list of all fixes.
 We highly recommend all users to upgrade to Flink 1.7.1.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.7.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.7.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-10252] - Handle oversized metric messages [FLINK-10367] - Avoid recursion stack overflow during releasing SingleInputGate [FLINK-10522] - Check if RecoverableWriter supportsResume and act accordingly. [FLINK-10963] - Cleanup small objects uploaded to S3 as independent objects Bug [FLINK-8336] - YarnFileStageTestS3ITCase.testRecursiveUploadForYarnS3 test instability [FLINK-9646] - ExecutionGraphCoLocationRestartTest.testConstraintsAfterRestart failed on Travis [FLINK-10149 [...]
+Sub-task [FLINK-10252] - Handle oversized metric messages [FLINK-10367] - Avoid recursion stack overflow during releasing SingleInputGate [FLINK-10522] - Check if RecoverableWriter supportsResume and act accordingly. [FLINK-10963] - Cleanup small objects uploaded to S3 as independent objects Bug [FLINK-8336] - YarnFileStageTestS3ITCase.testRecursiveUploadForYarnS3 test instability [FLINK-9646] - ExecutionGraphCoLocationRestartTest.testConstraintsAfterRestart failed on Travis [FLINK-10149 [...]
 Flink 1.7.0 is API-compatible with previous 1.x.y releases for APIs annotated with the @Public annotation. The release is available now and we encourage everyone to download the release and check out the updated documentation. Feedback through the Flink mailing lists or JIRA is, as always, very much appreciated!
 You can find the binaries on the updated Downloads page on the Flink project site.
 Flink 1.7.0 - Extending the reach of Stream Processing # In Flink 1.7.0 we come closer to our goals of enabling fast data processing and building data-intensive applications for the Flink community in a seamless way. Our latest release includes some exciting new features and improvements such as support for Scala 2.12, an exactly-once S3 file sink, the integration of complex event processing with streaming SQL and more features that we explain below.
@@ -4539,37 +4624,37 @@ Removal of Flink’s Legacy Mode (FLINK-10392): Apache Flink 1.7.0 marks the rel
 Release Notes # Please review the release notes if you plan to upgrade your Flink setup to Flink 1.7.
 List of Contributors # We would like to acknowledge all community members for contributing to this release. Special credits go to the following members for contributing to the 1.7.0 release (according to git):
 Aitozi, Alex Arkhipov, Alexander Koltsov, Alexey Trenikhin, Alice, Alice Yan, Aljoscha Krettek, Andrei Poluliakh, Andrey Zagrebin, Ashwin Sinha, Barisa Obradovic, Ben La Monica, Benoit Meriaux, Bowen Li, Chesnay Schepler, Christophe Jolif, Congxian Qiu, Craig Foster, David Anderson, Dawid Wysakowicz, Dian Fu, Diego Carvallo, Dimitris Palyvos, Eugen Yushin, Fabian Hueske, Florian Schmidt, Gary Yao, Guibo Pan, Hequn Cheng, Hiroaki Yoshida, Igal Shilman, JIN SUN, Jamie Grier, Jayant Ameta,  [...]
-`}),e.add({id:234,href:"/2018/10/29/apache-flink-1.5.5-released/",title:"Apache Flink 1.5.5 Released",section:"Flink Blog",content:`The Apache Flink community released the fifth bugfix version of the Apache Flink 1.5 series.
+`}),e.add({id:236,href:"/2018/10/29/apache-flink-1.5.5-released/",title:"Apache Flink 1.5.5 Released",section:"Flink Blog",content:`The Apache Flink community released the fifth bugfix version of the Apache Flink 1.5 series.
 This release includes more than 20 fixes and minor improvements for Flink 1.5.4. The list below includes a detailed list of all fixes.
 We highly recommend all users to upgrade to Flink 1.5.5.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.5.5&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.5.5&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-10242] - Latency marker interval should be configurable [FLINK-10243] - Add option to reduce latency metrics granularity [FLINK-10331] - Reduce number of flush requests to the network stack [FLINK-10332] - Move data available notification in PipelinedSubpartition out of the synchronized block Bug [FLINK-5542] - YARN client incorrectly uses local YARN config to check vcore capacity [FLINK-9567] - Flink does not release resource in Yarn Cluster mode [FLINK-9788] - Execution [...]
+Sub-task [FLINK-10242] - Latency marker interval should be configurable [FLINK-10243] - Add option to reduce latency metrics granularity [FLINK-10331] - Reduce number of flush requests to the network stack [FLINK-10332] - Move data available notification in PipelinedSubpartition out of the synchronized block Bug [FLINK-5542] - YARN client incorrectly uses local YARN config to check vcore capacity [FLINK-9567] - Flink does not release resource in Yarn Cluster mode [FLINK-9788] - Execution [...]
 This release includes more than 30 fixes and minor improvements for Flink 1.6.1. The list below includes a detailed list of all fixes.
 We highly recommend all users to upgrade to Flink 1.6.2.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.6.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.6.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-10242] - Latency marker interval should be configurable [FLINK-10243] - Add option to reduce latency metrics granularity [FLINK-10331] - Reduce number of flush requests to the network stack [FLINK-10332] - Move data available notification in PipelinedSubpartition out of the synchronized block Bug [FLINK-5542] - YARN client incorrectly uses local YARN config to check vcore capacity [FLINK-9567] - Flink does not release resource in Yarn Cluster mode [FLINK-9788] - Execution [...]
+Sub-task [FLINK-10242] - Latency marker interval should be configurable [FLINK-10243] - Add option to reduce latency metrics granularity [FLINK-10331] - Reduce number of flush requests to the network stack [FLINK-10332] - Move data available notification in PipelinedSubpartition out of the synchronized block Bug [FLINK-5542] - YARN client incorrectly uses local YARN config to check vcore capacity [FLINK-9567] - Flink does not release resource in Yarn Cluster mode [FLINK-9788] - Execution [...]
 This release includes more than 20 fixes and minor improvements for Flink 1.5.4. The list below includes a detailed list of all fixes.
 We highly recommend all users to upgrade to Flink 1.5.4.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.5.4&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.5.4&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Bug [FLINK-9878] - IO worker threads BLOCKED on SSL Session Cache while CMS full gc [FLINK-10011] - Old job resurrected during HA failover [FLINK-10101] - Mesos web ui url is missing. [FLINK-10115] - Content-length limit is also applied to FileUploads [FLINK-10116] - createComparator fails on case class with Unit type fields prior to the join-key [FLINK-10141] - Reduce lock contention introduced with 1.5 [FLINK-10142] - Reduce synchronization overhead for credit notifications [FLINK-1015 [...]
+Bug [FLINK-9878] - IO worker threads BLOCKED on SSL Session Cache while CMS full gc [FLINK-10011] - Old job resurrected during HA failover [FLINK-10101] - Mesos web ui url is missing. [FLINK-10115] - Content-length limit is also applied to FileUploads [FLINK-10116] - createComparator fails on case class with Unit type fields prior to the join-key [FLINK-10141] - Reduce lock contention introduced with 1.5 [FLINK-10142] - Reduce synchronization overhead for credit notifications [FLINK-1015 [...]
 This release includes 60 fixes and minor improvements for Flink 1.6.1. The list below includes a detailed list of all fixes.
 We highly recommend all users to upgrade to Flink 1.6.1.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.6.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.6.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-9637] - Add public user documentation for TTL feature [FLINK-10068] - Add documentation for async/RocksDB-based timers [FLINK-10085] - Update AbstractOperatorRestoreTestBase [FLINK-10087] - Update BucketingSinkMigrationTest [FLINK-10089] - Update FlinkKafkaConsumerBaseMigrationTest [FLINK-10090] - Update ContinuousFileProcessingMigrationTest [FLINK-10091] - Update WindowOperatorMigrationTest [FLINK-10092] - Update StatefulJobSavepointMigrationITCase [FLINK-10109] - Add do [...]
+Sub-task [FLINK-9637] - Add public user documentation for TTL feature [FLINK-10068] - Add documentation for async/RocksDB-based timers [FLINK-10085] - Update AbstractOperatorRestoreTestBase [FLINK-10087] - Update BucketingSinkMigrationTest [FLINK-10089] - Update FlinkKafkaConsumerBaseMigrationTest [FLINK-10090] - Update ContinuousFileProcessingMigrationTest [FLINK-10091] - Update WindowOperatorMigrationTest [FLINK-10092] - Update StatefulJobSavepointMigrationITCase [FLINK-10109] - Add do [...]
 This release includes more than 20 fixes and minor improvements for Flink 1.5.3. The list below includes a detailed list of all fixes.
 We highly recommend all users to upgrade to Flink 1.5.3.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.5.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.5.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-9951] - Update scm developerConnection Bug [FLINK-5750] - Incorrect translation of n-ary Union [FLINK-9289] - Parallelism of generated operators should have max parallism of input [FLINK-9546] - The heartbeatTimeoutIntervalMs of HeartbeatMonitor should be larger than 0 [FLINK-9655] - Externalized checkpoint E2E test fails on travis [FLINK-9693] - Possible memory leak in jobmanager retaining archived checkpoints [FLINK-9694] - Potentially NPE in CompositeTypeSerializerConf [...]
+Sub-task [FLINK-9951] - Update scm developerConnection Bug [FLINK-5750] - Incorrect translation of n-ary Union [FLINK-9289] - Parallelism of generated operators should have max parallism of input [FLINK-9546] - The heartbeatTimeoutIntervalMs of HeartbeatMonitor should be larger than 0 [FLINK-9655] - Externalized checkpoint E2E test fails on travis [FLINK-9693] - Possible memory leak in jobmanager retaining archived checkpoints [FLINK-9694] - Potentially NPE in CompositeTypeSerializerConf [...]
 Flink 1.6.0 is the seventh major release in the 1.x.y series. It is API-compatible with previous 1.x.y releases for APIs annotated with the @Public annotation.
 We encourage everyone to download the release and check out the documentation. Feedback through the Flink mailing lists or JIRA is, as always, very much appreciated!
 You can find the binaries on the updated Downloads page on the Flink project site.
@@ -4600,19 +4685,19 @@ Intra-Cluster Mutual Authentication (FLINK-9312): Flink’s cluster components n
 Release Notes # Please review the release notes if you plan to upgrade your Flink setup to Flink 1.6.
 List of Contributors # According to git shortlog, the following 112 people contributed to the 1.6.0 release. Thanks to all contributors!
 Alejandro Alcalde, Alexander Koltsov, Alexey Tsitkin, Aljoscha Krettek, Andreas Fink, Andrey Zagrebin, Arunan Sugunakumar, Ashwin Sinha, Bill Lee, Bowen Li, Chesnay Schepler, Christophe Jolif, Clément Tamisier, Craig Foster, David Anderson, Dawid Wysakowicz, Deepak Sharnma, Dmitrii_Kniazev, EAlexRojas, Elias Levy, Eron Wright, Ethan Li, Fabian Hueske, Florian Schmidt, Franz Thoma, Gabor Gevay, Georgii Gobozov, Haohui Mai, Jamie Grier, Jeff Zhang, Jelmer Kuperus, Jiayi Liao, Jungtaek Lim, [...]
-`}),e.add({id:240,href:"/2018/07/31/apache-flink-1.5.2-released/",title:"Apache Flink 1.5.2 Released",section:"Flink Blog",content:`The Apache Flink community released the second bugfix version of the Apache Flink 1.5 series.
+`}),e.add({id:242,href:"/2018/07/31/apache-flink-1.5.2-released/",title:"Apache Flink 1.5.2 Released",section:"Flink Blog",content:`The Apache Flink community released the second bugfix version of the Apache Flink 1.5 series.
 This release includes more than 20 fixes and minor improvements for Flink 1.5.1. The list below includes a detailed list of all fixes.
 We highly recommend all users to upgrade to Flink 1.5.2.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.5.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.5.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-9839] - End-to-end test: Streaming job with SSL Bug [FLINK-5750] - Incorrect translation of n-ary Union [FLINK-8161] - Flakey YARNSessionCapacitySchedulerITCase on Travis [FLINK-8731] - TwoInputStreamTaskTest flaky on travis [FLINK-9091] - Failure while enforcing releasability in building flink-json module [FLINK-9380] - Failing end-to-end tests should not clean up logs [FLINK-9439] - DispatcherTest#testJobRecovery dead locks [FLINK-9575] - Potential race condition when r [...]
+Sub-task [FLINK-9839] - End-to-end test: Streaming job with SSL Bug [FLINK-5750] - Incorrect translation of n-ary Union [FLINK-8161] - Flakey YARNSessionCapacitySchedulerITCase on Travis [FLINK-8731] - TwoInputStreamTaskTest flaky on travis [FLINK-9091] - Failure while enforcing releasability in building flink-json module [FLINK-9380] - Failing end-to-end tests should not clean up logs [FLINK-9439] - DispatcherTest#testJobRecovery dead locks [FLINK-9575] - Potential race condition when r [...]
 This release includes more than 60 fixes and minor improvements for Flink 1.5.0. The list below includes a detailed list of all fixes.
 We highly recommend all users to upgrade to Flink 1.5.1.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.5.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.5.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-8977] - End-to-end test: Manually resume job after terminal failure [FLINK-8982] - End-to-end test: Queryable state [FLINK-8989] - End-to-end test: ElasticSearch connector [FLINK-8996] - Include an operator with broadcast and union state [FLINK-9008] - End-to-end test: Quickstarts [FLINK-9320] - Update \`test-ha.sh\` end-to-end test to use general purpose DataStream job [FLINK-9322] - Add exception throwing map function that simulates failures to the general purpose DataS [...]
+Sub-task [FLINK-8977] - End-to-end test: Manually resume job after terminal failure [FLINK-8982] - End-to-end test: Queryable state [FLINK-8989] - End-to-end test: ElasticSearch connector [FLINK-8996] - Include an operator with broadcast and union state [FLINK-9008] - End-to-end test: Quickstarts [FLINK-9320] - Update \`test-ha.sh\` end-to-end test to use general purpose DataStream job [FLINK-9322] - Add exception throwing map function that simulates failures to the general purpose DataS [...]
 Flink 1.5.0 is the sixth major release in the 1.x.y series. As usual, it is API-compatible with previous 1.x.y releases for APIs annotated with the @Public annotation.
 We encourage everyone to download the release and check out the documentation. Feedback through the Flink mailing lists or JIRA is, as always, very much appreciated!
 You can find the binaries on the updated Downloads page on the Flink project site.
@@ -4639,19 +4724,19 @@ SELECT u.name, u.address, o.productId, o.amount FROM Users u JOIN Orders o ON u.
 Various Other Features and Improvements # OpenStack provides software for creating public and private clouds on pools of resources. Flink now supports OpenStack’s S3-like file system, Swift, for checkpoint and savepoint storage. Swift can be used without Hadoop dependencies. Reading and writing JSON messages from and to connectors has been improved. It’s now possible to parse a standard JSON schema in order to configure serializers and deserializers. The SQL CLI Client is able to read JS [...]
 List of Contributors # According to git shortlog, the following 106 people contributed to the 1.5.0 release. Thanks to all contributors!
 Aegeaner, Alejandro Alcalde, Aljoscha Krettek, Andreas Fink, Andrey Zagrebin, Ankit Parashar, Arunan Sugunakumar, Bartłomiej Tartanus, Bowen Li, Cristian, Dan Kelley, David Anderson, Dawid Wysakowicz, Dian Fu, Dmitrii_Kniazev, Dyana Rose, EAlexRojas, Eron Wright, Fabian Hueske, Florian Schmidt, Gabor Gevay, Greg Hogan, Gyula Fora, Jark Wu, Jelmer Kuperus, Joerg Schad, John Eismeier, Kailash HD, Ken Geis, Ken Krugler, Kent Murra, Leonid Ishimnikov, Malcolm Taylor, Matrix42, Michael Fong,  [...]
-`}),e.add({id:243,href:"/2018/03/15/apache-flink-1.3.3-released/",title:"Apache Flink 1.3.3 Released",section:"Flink Blog",content:`The Apache Flink community released the third bugfix version of the Apache Flink 1.3 series.
+`}),e.add({id:245,href:"/2018/03/15/apache-flink-1.3.3-released/",title:"Apache Flink 1.3.3 Released",section:"Flink Blog",content:`The Apache Flink community released the third bugfix version of the Apache Flink 1.3 series.
 This release includes 4 critical fixes related to checkpointing and recovery. The list below includes a detailed list of all fixes.
 We highly recommend all Flink 1.3 series users to upgrade to Flink 1.3.3.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.3.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.10&lt;/artifactId&gt; &lt;version&gt;1.3.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.10&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-7783] - Don&#39;t always remove checkpoints in ZooKeeperCompletedCheckpointStore#recover() Bug [FLINK-7283] - PythonPlanBinderTest issues with python paths [FLINK-8487] - State loss after multiple restart attempts [FLINK-8807] - ZookeeperCompleted checkpoint store can get stuck in infinite loop Improvement [FLINK-8890] - Compare checkpoints with order in CompletedCheckpoint.checkpointsMatch() `}),e.add({id:244,href:"/2018/03/08/apache-flink-1.4.2-released/",title:"Apache  [...]
+Sub-task [FLINK-7783] - Don&#39;t always remove checkpoints in ZooKeeperCompletedCheckpointStore#recover() Bug [FLINK-7283] - PythonPlanBinderTest issues with python paths [FLINK-8487] - State loss after multiple restart attempts [FLINK-8807] - ZookeeperCompleted checkpoint store can get stuck in infinite loop Improvement [FLINK-8890] - Compare checkpoints with order in CompletedCheckpoint.checkpointsMatch() `}),e.add({id:246,href:"/2018/03/08/apache-flink-1.4.2-released/",title:"Apache  [...]
 This release includes more than 10 fixes and minor improvements for Flink 1.4.1. The list below includes a detailed list of all fixes.
 We highly recommend all users to upgrade to Flink 1.4.2.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.4.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.4.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-6321] - RocksDB state backend Checkpointing is not working with KeyedCEP. [FLINK-7756] - RocksDB state backend Checkpointing (Async and Incremental) is not working with CEP. Bug [FLINK-8423] - OperatorChain#pushToOperator catch block may fail with NPE [FLINK-8451] - CaseClassSerializer is not backwards compatible in 1.4 [FLINK-8520] - CassandraConnectorITCase.testCassandraTableSink unstable on Travis [FLINK-8621] - PrometheusReporterTest.endpointIsUnavailableAfterReporter [...]
+Sub-task [FLINK-6321] - RocksDB state backend Checkpointing is not working with KeyedCEP. [FLINK-7756] - RocksDB state backend Checkpointing (Async and Incremental) is not working with CEP. Bug [FLINK-8423] - OperatorChain#pushToOperator catch block may fail with NPE [FLINK-8451] - CaseClassSerializer is not backwards compatible in 1.4 [FLINK-8520] - CassandraConnectorITCase.testCassandraTableSink unstable on Travis [FLINK-8621] - PrometheusReporterTest.endpointIsUnavailableAfterReporter [...]
 Apache Flink 1.4.0, released in December 2017, introduced a significant milestone for stream processing with Flink: a new feature called TwoPhaseCommitSinkFunction (relevant Jira here) that extracts the common logic of the two-phase commit protocol and makes it possible to build end-to-end exactly-once applications with Flink and a selection of data sources and sinks, including Apache Kafka versions 0.11 and beyond. It provides a layer of abstraction and requires a user to implement only [...]
 If that&rsquo;s all you need to hear, let us point you to the relevant place in the Flink documentation, where you can read about how to put TwoPhaseCommitSinkFunction to use.
 But if you&rsquo;d like to learn more, in this post, we&rsquo;ll share an in-depth overview of the new feature and what is happening behind the scenes in Flink.
@@ -4690,13 +4775,13 @@ There are a handful of other edge cases that TwoPhaseCommitSinkFunction takes in
 Wrapping Up # If you&rsquo;ve made it this far, thanks for staying with us through a detailed post. Here are some key points that we covered:
 Flink&rsquo;s checkpointing system serves as Flink&rsquo;s basis for supporting a two-phase commit protocol and providing end-to-end exactly-once semantics. An advantage of this approach is that Flink does not materialize data in transit the way that some other systems do&ndash;there&rsquo;s no need to write every stage of the computation to disk as is the case is most batch processing. Flink&rsquo;s new TwoPhaseCommitSinkFunction extracts the common logic of the two-phase commit protoco [...]
 This post first appeared on the data Artisans blog and was contributed to Apache Flink and the Flink blog by the original authors Piotr Nowojski and Mike Winters.
-`}),e.add({id:246,href:"/2018/02/15/apache-flink-1.4.1-released/",title:"Apache Flink 1.4.1 Released",section:"Flink Blog",content:`The Apache Flink community released the first bugfix version of the Apache Flink 1.4 series.
+`}),e.add({id:248,href:"/2018/02/15/apache-flink-1.4.1-released/",title:"Apache Flink 1.4.1 Released",section:"Flink Blog",content:`The Apache Flink community released the first bugfix version of the Apache Flink 1.4 series.
 This release includes more than 60 fixes and minor improvements for Flink 1.4.0. The list below includes a detailed list of all fixes.
 We highly recommend all users to upgrade to Flink 1.4.1.
 Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.4.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;/artifactId&gt; &lt;version&gt;1.4.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.11&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-6321] - RocksDB state backend Checkpointing is not working with KeyedCEP. [FLINK-7499] - double buffer release in SpillableSubpartitionView [FLINK-7756] - RocksDB state backend Checkpointing (Async and Incremental) is not working with CEP. [FLINK-7760] - Restore failing from external checkpointing metadata. [FLINK-8323] - Fix Mod scala function bug Bug [FLINK-5506] - Java 8 - CommunityDetection.java:158 - java.lang.NullPointerException [FLINK-6951] - Incompatible versions [...]
+Sub-task [FLINK-6321] - RocksDB state backend Checkpointing is not working with KeyedCEP. [FLINK-7499] - double buffer release in SpillableSubpartitionView [FLINK-7756] - RocksDB state backend Checkpointing (Async and Incremental) is not working with CEP. [FLINK-7760] - Restore failing from external checkpointing metadata. [FLINK-8323] - Fix Mod scala function bug Bug [FLINK-5506] - Java 8 - CommunityDetection.java:158 - java.lang.NullPointerException [FLINK-6951] - Incompatible versions [...]
 State is a fundamental, enabling concept in stream processing required for a majority of complex use cases. Some examples highlighted in the Flink documentation:
 When an application searches for certain event patterns, the state stores the sequence of events encountered so far. When aggregating events per minute, the state holds the pending aggregates. When training a machine learning model over a stream of data points, the state holds the current version of the model parameters. However, stateful stream processing is only useful in production environments if the state is fault tolerant. &ldquo;Fault tolerance&rdquo; means that even if there&rsqu [...]
 Flink&rsquo;s fault tolerance has always been a powerful and popular feature, minimizing the impact of software or machine failure on your business and making it possible to guarantee exactly-once results from a Flink application.
@@ -4722,7 +4807,7 @@ Restoring Checkpoints and Performance Considerations # If you enable incremental
 Though the feature can lead to a substantial improvement in checkpoint time for users with a large state, there are trade-offs to consider with incremental checkpointing. Overall, the process reduces the checkpointing time during normal operations but can lead to a longer recovery time depending on the size of your state. If the cluster failure is particularly severe and the Flink TaskManagers have to read from multiple checkpoints, recovery can be a slower operation than when using non- [...]
 There are some strategies for improving the convenience/performance trade-off, and I recommend you read the Flink documentation for more details.
 This post originally appeared on the data Artisans blog and was contributed to the Flink blog by Stefan Richter and Chris Ward.
-`}),e.add({id:248,href:"/2017/12/21/apache-flink-in-2017-year-in-review/",title:"Apache Flink in 2017: Year in Review",section:"Flink Blog",content:`2017 was another exciting year for the Apache Flink® community, with 3 major version releases (Flink 1.2.0 in February, Flink 1.3.0 in June, and Flink 1.4.0 in December) and the first-ever Flink Forward in San Francisco, giving Flink community members in another corner of the globe an opportunity to connect. Users shared details about their  [...]
+`}),e.add({id:250,href:"/2017/12/21/apache-flink-in-2017-year-in-review/",title:"Apache Flink in 2017: Year in Review",section:"Flink Blog",content:`2017 was another exciting year for the Apache Flink® community, with 3 major version releases (Flink 1.2.0 in February, Flink 1.3.0 in June, and Flink 1.4.0 in December) and the first-ever Flink Forward in San Francisco, giving Flink community members in another corner of the globe an opportunity to connect. Users shared details about their  [...]
 In this post, we&rsquo;ll look back on the project&rsquo;s progress over the course of 2017, and we&rsquo;ll also preview what 2018 has in store.
 {%toc%}
 Community Growth # Github # First, here&rsquo;s a summary of community statistics from GitHub. At the time of writing:
@@ -4750,7 +4835,7 @@ Looking ahead to 2018 # A good source of information about the Flink community&r
 Work is already underway on a number of these features, and some will be included in Flink 1.5 at the beginning of 2018.
 Improved BLOB storage architecture, as described in FLIP-19 to consolidate API usage and improve concurrency. Integration of SQL and CEP, as described in FLIP-20 to allow developers to create complex event processing (CEP) patterns using SQL statements. Unified checkpoints and savepoints, as described in FLIP-10, to allow savepoints to be triggered automatically–important for program updates for the sake of error handling because savepoints allow the user to modify both the job and Flink [...]
 Lastly, we&rsquo;d like to extend a sincere thank you to all the Flink community for making 2017 a great year!
-`}),e.add({id:249,href:"/2017/12/12/apache-flink-1.4.0-release-announcement/",title:"Apache Flink 1.4.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is pleased to announce the 1.4.0 release. Over the past 5 months, the Flink community has been working hard to resolve more than 900 issues. See the complete changelog for more detail.
+`}),e.add({id:251,href:"/2017/12/12/apache-flink-1.4.0-release-announcement/",title:"Apache Flink 1.4.0 Release Announcement",section:"Flink Blog",content:`The Apache Flink community is pleased to announce the 1.4.0 release. Over the past 5 months, the Flink community has been working hard to resolve more than 900 issues. See the complete changelog for more detail.
 This is the fifth major release in the 1.x.y series. It is API-compatible with the other 1.x.y releases for APIs annotated with the @Public annotation.
 We encourage everyone to download the release and check out the documentation.
 Feedback through the Flink mailing lists is, as always, gladly encouraged!
@@ -4795,7 +4880,7 @@ This also means that in cases where you used connectors to HDFS, such as the Buc
 Bundled S3 FileSystems # Flink 1.4 comes bundled with two different S3 FileSystems based on the Presto S3 FileSystem and the Hadoop S3A FileSystem. They don&rsquo;t have dependencies (because all dependencies are shaded/relocated) and you can use them by dropping the respective file from the opt directory into the lib directory of your Flink installation. For more information about this, please refer to the documentation.
 List of Contributors # According to git shortlog, the following 106 people contributed to the 1.4.0 release. Thank you to all contributors!
 Ajay Tripathy, Alejandro Alcalde, Aljoscha Krettek, Bang, Phiradet, Bowen Li, Chris Ward, Cristian, Dan Kelley, David Anderson, Dawid Wysakowicz, Dian Fu, Dmitrii Kniazev, DmytroShkvyra, Fabian Hueske, FlorianFan, Fokko Driesprong, Gabor Gevay, Gary Yao, Greg Hogan, Haohui Mai, Hequn Cheng, James Lafa, Jark Wu, Jie Shen, Jing Fan, JingsongLi, Joerg Schad, Juan Paulo Gutierrez, Ken Geis, Kent Murra, Kurt Young, Lim Chee Hau, Maximilian Bode, Michael Fong, Mike Kobit, Mikhail Lipkovich, Ni [...]
-`}),e.add({id:250,href:"/2017/11/21/looking-ahead-to-apache-flink-1.4.0-and-1.5.0/",title:"Looking Ahead to Apache Flink 1.4.0 and 1.5.0",section:"Flink Blog",content:`The Apache Flink 1.4.0 release is on track to happen in the next couple of weeks, and for all of the readers out there who haven’t been following the release discussion on Flink’s developer mailing list, we’d like to provide some details on what’s coming in Flink 1.4.0 as well as a preview of what the Flink community will  [...]
+`}),e.add({id:252,href:"/2017/11/21/looking-ahead-to-apache-flink-1.4.0-and-1.5.0/",title:"Looking Ahead to Apache Flink 1.4.0 and 1.5.0",section:"Flink Blog",content:`The Apache Flink 1.4.0 release is on track to happen in the next couple of weeks, and for all of the readers out there who haven’t been following the release discussion on Flink’s developer mailing list, we’d like to provide some details on what’s coming in Flink 1.4.0 as well as a preview of what the Flink community will  [...]
 Both releases include ambitious features that we believe will move Flink to an entirely new level in terms of the types of problems it can solve and applications it can support. The community deserves lots of credit for its hard work over the past few months, and we’re excited to see these features in the hands of users.
 This post will describe how the community plans to get there and the rationale behind the approach.
 Coming soon: Major Changes to Flink’s Runtime # There are 3 significant improvements to the Apache Flink engine that the community has nearly completed and that will have a meaningful impact on Flink’s operability and performance.
@@ -4816,7 +4901,7 @@ The soon-to-be-released Flink 1.4 represents the current state of Flink without
 A significantly improved dependency structure, removing many of Flink’s dependencies and subtle runtime conflicts. This increases overall stability and removes friction when embedding Flink or calling Flink &ldquo;library style&rdquo;. Reversed class loading for dynamically-loaded user code, allowing for different dependencies than those included in the core framework. An Apache Kafka 0.11 exactly-once producer, making it possible to build end-to-end exactly once applications with Flink  [...]
 We’re excited by what each of these represents for Apache Flink, and we’d like to extend our thanks to the Flink community for all of their hard work.
 If you’d like to follow along with release discussions, please subscribe to the dev@ mailing list.
-`}),e.add({id:251,href:"/2017/08/05/apache-flink-1.3.2-released/",title:"Apache Flink 1.3.2 Released",section:"Flink Blog",content:`The Apache Flink community released the second bugfix version of the Apache Flink 1.3 series.
+`}),e.add({id:253,href:"/2017/08/05/apache-flink-1.3.2-released/",title:"Apache Flink 1.3.2 Released",section:"Flink Blog",content:`The Apache Flink community released the second bugfix version of the Apache Flink 1.3 series.
 This release includes more than 60 fixes and minor improvements for Flink 1.3.1. The list below includes a detailed list of all fixes.
 We highly recommend all users to upgrade to Flink 1.3.2.
 Important Notice: A user reported a bug in the FlinkKafkaConsumer (FLINK-7143) that is causing incorrect partition assignment in large Kafka deployments in the presence of inconsistent broker metadata. In that case multiple parallel instances of the FlinkKafkaConsumer may read from the same topic partition, leading to data duplication. In Flink 1.3.2 this bug is fixed but incorrect assignments from Flink 1.3.0 and 1.3.1 cannot be automatically fixed by upgrading to Flink 1.3.2 via a save [...]
@@ -4825,7 +4910,7 @@ Notable changes:
 The default Kafka version for Flink Kafka Consumer 0.10 was bumped from 0.10.0.1 to 0.10.2.1. Some default values for configurations of AWS API call behaviors in the Flink Kinesis Consumer were adapted for better default consumption performance: 1) SHARD_GETRECORDS_MAX default changed to 10,000, and 2) SHARD_GETRECORDS_INTERVAL_MILLIS default changed to 200ms. Updated Maven dependencies:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.3.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.10&lt;/artifactId&gt; &lt;version&gt;1.3.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.10&lt;/artifactId&gt; &lt;versio [...]
 List of resolved issues:
-Sub-task [FLINK-6665] - Pass a ScheduledExecutorService to the RestartStrategy [FLINK-6667] - Pass a callback type to the RestartStrategy, rather than the full ExecutionGraph [FLINK-6680] - App &amp; Flink migration guide: updates for the 1.3 release Bug [FLINK-5488] - yarnClient should be closed in AbstractYarnClusterDescriptor for error conditions [FLINK-6376] - when deploy flink cluster on the yarn, it is lack of hdfs delegation token. [FLINK-6541] - Jar upload directory not created [ [...]
+Sub-task [FLINK-6665] - Pass a ScheduledExecutorService to the RestartStrategy [FLINK-6667] - Pass a callback type to the RestartStrategy, rather than the full ExecutionGraph [FLINK-6680] - App &amp; Flink migration guide: updates for the 1.3 release Bug [FLINK-5488] - yarnClient should be closed in AbstractYarnClusterDescriptor for error conditions [FLINK-6376] - when deploy flink cluster on the yarn, it is lack of hdfs delegation token. [FLINK-6541] - Jar upload directory not created [ [...]
 In contrast, operators in stateless stream processing only consider their current inputs, without further context and knowledge about the past. A simple example to illustrate this difference: let us consider a source stream that emits events with schema e = {event_id:int, event_value:int}. Our goal is, for each event, to extract and output the event_value. We can easily achieve this with a simple source-map-sink pipeline, where the map function extracts the event_value from the event and [...]
 But what if we want to modify our job to output the event_value only if it is larger than the value from the previous event? In this case, our map function obviously needs some way to remember the event_value from a past event — and so this is an instance of stateful stream processing.
 This example should demonstrate that state is a fundamental, enabling concept in stream processing that is required for a majority of interesting use cases.
@@ -4875,7 +4960,7 @@ Flink 1.3.0, which was released earlier this month, adds more tooling for state
 …for Flink 1.4.0 and beyond.
 If you’d like to learn more, we recommend starting with the Apache Flink documentation.
 This is an excerpt from a post that originally appeared on the data Artisans blog. If you&rsquo;d like to read the original post in its entirety, you can find it here (external link).
-`}),e.add({id:253,href:"/2017/06/23/apache-flink-1.3.1-released/",title:"Apache Flink 1.3.1 Released",section:"Flink Blog",content:"The Apache Flink community released the first bugfix version of the Apache Flink 1.3 series.\nThis release includes 50 fixes and minor improvements for Flink 1.3.0. The list below includes a detailed list of all fixes.\nWe highly recommend all users to upgrade to Flink 1.3.1.\n&lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId& [...]
+`}),e.add({id:255,href:"/2017/06/23/apache-flink-1.3.1-released/",title:"Apache Flink 1.3.1 Released",section:"Flink Blog",content:"The Apache Flink community released the first bugfix version of the Apache Flink 1.3 series.\nThis release includes 50 fixes and minor improvements for Flink 1.3.0. The list below includes a detailed list of all fixes.\nWe highly recommend all users to upgrade to Flink 1.3.1.\n&lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId& [...]
 This is the fourth major release in the 1.x.y series. It is API compatible with the other 1.x.y releases for APIs annotated with the @Public annotation.
 Users can expect Flink releases now in a 4 month cycle. At the beginning of the 1.3 release cycle, the community decided to follow a strict time-based release model.
 We encourage everyone to download the release and check out the documentation. Feedback through the Flink mailing lists is, as always, gladly encouraged!
@@ -4916,7 +5001,7 @@ Support for different continuity requirements (FLINK-6208)
 Support for iterative conditions (FLINK-6197)
 Gelly Library # Unified driver for running Gelly examples FLINK-4949). PageRank algorithm for directed graphs (FLINK-4896). Add Circulant and Echo graph generators (FLINK-6393). Known Issues # There are two known issues in Flink 1.3.0. Both will be addressed in the 1.3.1 release. FLINK-6783: Wrongly extracted TypeInformations for WindowedStream::aggregate FLINK-6775: StateDescriptor cannot be shared by multiple subtasks List of Contributors # According to git shortlog, the following 103  [...]
 Addison Higham, Alexey Diomin, Aljoscha Krettek, Andrea Sella, Andrey Melentyev, Anton Mushin, barcahead, biao.liub, Bowen Li, Chen Qin, Chico Sokol, David Anderson, Dawid Wysakowicz, DmytroShkvyra, Fabian Hueske, Fabian Wollert, fengyelei, Flavio Pompermaier, FlorianFan, Fokko Driesprong, Geoffrey Mon, godfreyhe, gosubpl, Greg Hogan, guowei.mgw, hamstah, Haohui Mai, Hequn Cheng, hequn.chq, heytitle, hongyuhong, Jamie Grier, Jark Wu, jingzhang, Jinkui Shi, Jin Mingjian, Joerg Schad, Josh [...]
-`}),e.add({id:255,href:"/2017/05/16/introducing-docker-images-for-apache-flink/",title:"Introducing Docker Images for Apache Flink",section:"Flink Blog",content:`For some time, the Apache Flink community has provided scripts to build a Docker image to run Flink. Now, starting with version 1.2.1, Flink will have a Docker image on the Docker Hub. This image is maintained by the Flink community and curated by the Docker team to ensure it meets the quality standards for container images of t [...]
+`}),e.add({id:257,href:"/2017/05/16/introducing-docker-images-for-apache-flink/",title:"Introducing Docker Images for Apache Flink",section:"Flink Blog",content:`For some time, the Apache Flink community has provided scripts to build a Docker image to run Flink. Now, starting with version 1.2.1, Flink will have a Docker image on the Docker Hub. This image is maintained by the Flink community and curated by the Docker team to ensure it meets the quality standards for container images of t [...]
 A community-maintained way to run Apache Flink on Docker and other container runtimes and orchestrators is part of the ongoing effort by the Flink community to make Flink a first-class citizen of the container world.
 If you want to use the Docker image today you can get the latest version by running:
 docker pull flink And to run a local Flink cluster with one TaskManager and the Web UI exposed on port 8081, run:
@@ -4924,12 +5009,12 @@ docker run -t -p 8081:8081 flink local With this image there are various ways to
 While this announcement is an important milestone, it’s just the first step to help users run containerized Flink in production. There are improvements to be made in Flink itself and we will continue to improve these Docker images and for the documentation and examples surrounding them.
 This is of course a team effort, so any contribution is welcome. The docker-flink GitHub organization hosts the source files to generate the images and the documentation that is presented alongside the images on Docker Hub.
 Disclaimer: The docker images are provided as a community project by individuals on a best-effort basis. They are not official releases by the Apache Flink PMC.
-`}),e.add({id:256,href:"/2017/04/26/apache-flink-1.2.1-released/",title:"Apache Flink 1.2.1 Released",section:"Flink Blog",content:`The Apache Flink community released the first bugfix version of the Apache Flink 1.2 series.
+`}),e.add({id:258,href:"/2017/04/26/apache-flink-1.2.1-released/",title:"Apache Flink 1.2.1 Released",section:"Flink Blog",content:`The Apache Flink community released the first bugfix version of the Apache Flink 1.2 series.
 This release includes many critical fixes for Flink 1.2.0. The list below includes a detailed list of all fixes.
 We highly recommend all users to upgrade to Flink 1.2.1.
 Please note that there are two unresolved major issues in Flink 1.2.1 and 1.2.0:
 FLINK-6353 Restoring using CheckpointedRestoring does not work from 1.2 to 1.2 FLINK-6188 Some setParallelism() methods can&rsquo;t cope with default parallelism &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.2.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.10&lt;/artifactId&gt; &lt;version&gt;1.2.1&lt;/ver [...]
-Release Notes - Flink - Version 1.2.1 Sub-task [FLINK-5546] - java.io.tmpdir setted as project build directory in surefire plugin [FLINK-5640] - configure the explicit Unit Test file suffix [FLINK-5723] - Use &quot;Used&quot; instead of &quot;Initial&quot; to make taskmanager tag more readable [FLINK-5825] - In yarn mode, a small pic can not be loaded Bug [FLINK-4813] - Having flink-test-utils as a dependency outside Flink fails the build [FLINK-4848] - keystoreFilePath should be checked [...]
+Release Notes - Flink - Version 1.2.1 Sub-task [FLINK-5546] - java.io.tmpdir setted as project build directory in surefire plugin [FLINK-5640] - configure the explicit Unit Test file suffix [FLINK-5723] - Use &quot;Used&quot; instead of &quot;Initial&quot; to make taskmanager tag more readable [FLINK-5825] - In yarn mode, a small pic can not be loaded Bug [FLINK-4813] - Having flink-test-utils as a dependency outside Flink fails the build [FLINK-4848] - keystoreFilePath should be checked [...]
 Apache Flink is very well suited to power streaming analytics applications because it provides support for event-time semantics, stateful exactly-once processing, and achieves high throughput and low latency at the same time. Due to these features, Flink is able to compute exact and deterministic results from high-volume input streams in near real-time while providing exactly-once semantics in case of failures.
 Flink&rsquo;s core API for stream processing, the DataStream API, is very expressive and provides primitives for many common operations. Among other features, it offers highly customizable windowing logic, different state primitives with varying performance characteristics, hooks to register and react on timers, and tooling for efficient asynchronous requests to external systems. On the other hand, many stream analytics applications follow similar patterns and do not require the level of [...]
 Why is SQL on Streams a Big Deal? # SQL is the most widely used language for data analytics for many good reasons:
@@ -4971,7 +5056,7 @@ What will Change When Switching to Dynamic Tables? # In version 1.2, all streami
 The answer to all these questions is simple. The current processing model is a subset of the dynamic table model. Using the terminology we introduced in this post, the current model converts a stream into a dynamic table in append mode, i.e., an infinitely growing table. Since all operators only accept insert changes and produce insert changes on their result table (i.e., emit new rows), all supported queries result in dynamic append tables, which are converted back into DataStreams usin [...]
 Conclusion and Outlook # Flink&rsquo;s relational APIs are great to implement stream analytics applications in no time and used in several production settings. In this blog post we discussed the future of the Table API and SQL. This effort will make Flink and stream processing accessible to more people. Moreover, the unified semantics for querying historic and real-time data as well as the concept of querying and maintaining dynamic tables will enable and significantly ease the implement [...]
 In recent months, many members of the Flink community have been discussing and contributing to the relational APIs. We made great progress so far. While most work has focused on processing streams in append mode, the next steps on the agenda are to work on dynamic tables to support queries that update their results. If you are excited about the idea of processing streams with SQL and would like to contribute to this effort, please give feedback, join the discussions on the mailing list,  [...]
-`}),e.add({id:258,href:"/2017/03/29/from-streams-to-tables-and-back-again-an-update-on-flinks-table-sql-api/",title:"From Streams to Tables and Back Again: An Update on Flink's Table & SQL API",section:"Flink Blog",content:`Stream processing can deliver a lot of value. Many organizations have recognized the benefit of managing large volumes of data in real-time, reacting quickly to trends, and providing customers with live services at scale. Streaming applications with well-defined busin [...]
+`}),e.add({id:260,href:"/2017/03/29/from-streams-to-tables-and-back-again-an-update-on-flinks-table-sql-api/",title:"From Streams to Tables and Back Again: An Update on Flink's Table & SQL API",section:"Flink Blog",content:`Stream processing can deliver a lot of value. Many organizations have recognized the benefit of managing large volumes of data in real-time, reacting quickly to trends, and providing customers with live services at scale. Streaming applications with well-defined busin [...]
 Flink&rsquo;s DataStream abstraction is a powerful API which lets you flexibly define both basic and complex streaming pipelines. Additionally, it offers low-level operations such as Async IO and ProcessFunctions. However, many users do not need such a deep level of flexibility. They need an API which quickly solves 80% of their use cases where simple tasks can be defined using little code.
 To deliver the power of stream processing to a broader set of users, the Apache Flink community is developing APIs that provide simpler abstractions and more concise syntax so that users can focus on their business logic instead of advanced streaming concepts. Along with other APIs (such as CEP for complex event processing on streams), Flink offers a relational API that aims to unify stream and batch processing: the Table &amp; SQL API, often referred to as the Table API.
 Recently, contributors working for companies such as Alibaba, Huawei, data Artisans, and more decided to further develop the Table API. Over the past year, the Table API has been rewritten entirely. Since Flink 1.1, its core has been based on Apache Calcite, which parses SQL and optimizes all relational queries. Today, the Table API can address a wide range of use cases in both batch and stream environments with unified semantics.
@@ -4999,10 +5084,10 @@ Using the previously-mentioned customer table, let’s assume we want to produce
 class PropertiesExtractor extends TableFunction[Row] { def eval(prefs: String): Unit = { // split string into (key, value) pairs val pairs = prefs .split(&#34;,&#34;) .map { kv =&gt; val split = kv.split(&#34;=&#34;) (split(0), split(1)) } val color = pairs.find(\\_.\\_1 == &#34;color&#34;).map(\\_.\\_2) val size = pairs.find(\\_.\\_1 == &#34;size&#34;).map(\\_.\\_2) // emit a row if color and size are specified (color, size) match { case (Some(c), Some(s)) =&gt; collect(Row.of(c, s)) ca [...]
 Contributions like support of Apache Hive UDFs, external catalogs, more TableSources, additional windows, and more operators will make the Table API an even more useful tool. Particularly, the upcoming introduction of Dynamic Tables, which is worth a blog post of its own, shows that even in 2017, new relational APIs open the door to a number of possibilities.
 Try it out, or even better, join the design discussions on the mailing lists and JIRA and start contributing!
-`}),e.add({id:259,href:"/2017/03/23/apache-flink-1.1.5-released/",title:"Apache Flink 1.1.5 Released",section:"Flink Blog",content:`The Apache Flink community released the next bugfix version of the Apache Flink 1.1 series.
+`}),e.add({id:261,href:"/2017/03/23/apache-flink-1.1.5-released/",title:"Apache Flink 1.1.5 Released",section:"Flink Blog",content:`The Apache Flink community released the next bugfix version of the Apache Flink 1.1 series.
 This release includes critical fixes for HA recovery robustness, fault tolerance guarantees of the Flink Kafka Connector, as well as classloading issues with the Kryo serializer. We highly recommend all users to upgrade to Flink 1.1.5.
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.1.5&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.10&lt;/artifactId&gt; &lt;version&gt;1.1.5&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.10&lt;/artifactId&gt; &lt;versio [...]
-Release Notes - Flink - Version 1.1.5 # Bug # [FLINK-5701] - FlinkKafkaProducer should check asyncException on checkpoints [FLINK-6006] - Kafka Consumer can lose state if queried partition list is incomplete on restore [FLINK-5940] - ZooKeeperCompletedCheckpointStore cannot handle broken state handles [FLINK-5942] - Harden ZooKeeperStateHandleStore to deal with corrupted data [FLINK-6025] - User code ClassLoader not used when KryoSerializer fallbacks to serialization for copying [FLINK-5 [...]
+Release Notes - Flink - Version 1.1.5 # Bug # [FLINK-5701] - FlinkKafkaProducer should check asyncException on checkpoints [FLINK-6006] - Kafka Consumer can lose state if queried partition list is incomplete on restore [FLINK-5940] - ZooKeeperCompletedCheckpointStore cannot handle broken state handles [FLINK-5942] - Harden ZooKeeperStateHandleStore to deal with corrupted data [FLINK-6025] - User code ClassLoader not used when KryoSerializer fallbacks to serialization for copying [FLINK-5 [...]
 This is the third major release in the 1.x.y series. It is API compatible with the other 1.x.y releases for APIs annotated with the @Public annotation.
 We encourage everyone to download the release and check out the documentation. Feedback through the Flink mailing lists is, as always, gladly encouraged!
 You can find the binaries on the updated Downloads page. Some highlights of the release are listed below.
@@ -5035,11 +5120,11 @@ Miscellaneous improvements # Metrics in Flink web interface: A metrics system wa
 Kafka 0.10 support: Flink 1.2 now provides a connector for Apache Kafka 0.10.0.x, including support for consuming and producing messages with a timestamp using Flink’s internal event time (Kafka Connector Documentation)
 Evictor Semantics: Flink 1.2 ships with more expressive evictor semantics that allow the programmer to evict elements form a window both before and after the application of the window function, and to remove elements arbitrarily (Evictor Semantics Documentation)
 List of Contributors # According to git shortlog, the following 122 people contributed to the 1.2.0 release. Thank you to all contributors!
-Abhishek R. Singh Ahmad Ragab Aleksandr Chermenin Alexander Pivovarov Alexander Shoshin Alexey Diomin Aljoscha Krettek Andrey Melentyev Anton Mushin Bob Thorman Boris Osipov Bram Vogelaar Bruno Aranda David Anderson Dominik Evgeny_Kincharov Fabian Hueske Fokko Driesprong Gabor Gevay George Gordon Tai Greg Hogan Gyula Fora Haohui Mai Holger Frydrych HungUnicorn Ismaël Mejía Ivan Mushketyk Jakub Havlik Jark Wu Jendrik Poloczek Jincheng Sun Josh Joshi Keiji Yoshida Kirill Morozov Kurt Young [...]
+Abhishek R. Singh Ahmad Ragab Aleksandr Chermenin Alexander Pivovarov Alexander Shoshin Alexey Diomin Aljoscha Krettek Andrey Melentyev Anton Mushin Bob Thorman Boris Osipov Bram Vogelaar Bruno Aranda David Anderson Dominik Evgeny_Kincharov Fabian Hueske Fokko Driesprong Gabor Gevay George Gordon Tai Greg Hogan Gyula Fora Haohui Mai Holger Frydrych HungUnicorn Ismaël Mejía Ivan Mushketyk Jakub Havlik Jark Wu Jendrik Poloczek Jincheng Sun Josh Joshi Keiji Yoshida Kirill Morozov Kurt Young [...]
 This release includes major robustness improvements for checkpoint cleanup on failures and consumption of intermediate streams. We highly recommend all users to upgrade to Flink 1.1.4.
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.1.4&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.10&lt;/artifactId&gt; &lt;version&gt;1.1.4&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.10&lt;/artifactId&gt; &lt;versio [...]
 Note for RocksDB Backend Users # We updated Flink&rsquo;s RocksDB dependency version from 4.5.1 to 4.11.2. Between these versions some of RocksDB&rsquo;s internal configuration defaults changed that would affect the memory footprint of running Flink with RocksDB. Therefore, we manually reset them to the previous defaults. If you want to run with the new Rocks 4.11.2 defaults, you can do this via:
-RocksDBStateBackend backend = new RocksDBStateBackend(&#34;...&#34;); // Use the new default options. Otherwise, the default for RocksDB 4.5.1 // \`PredefinedOptions.DEFAULT_ROCKS_4_5_1\` will be used. backend.setPredefinedOptions(PredefinedOptions.DEFAULT); Release Notes - Flink - Version 1.1.4 # Sub-task # [FLINK-4510] - Always create CheckpointCoordinator [FLINK-4984] - Add Cancellation Barriers to BarrierTracker and BarrierBuffer [FLINK-4985] - Report Declined/Canceled Checkpoints to [...]
+RocksDBStateBackend backend = new RocksDBStateBackend(&#34;...&#34;); // Use the new default options. Otherwise, the default for RocksDB 4.5.1 // \`PredefinedOptions.DEFAULT_ROCKS_4_5_1\` will be used. backend.setPredefinedOptions(PredefinedOptions.DEFAULT); Release Notes - Flink - Version 1.1.4 # Sub-task # [FLINK-4510] - Always create CheckpointCoordinator [FLINK-4984] - Add Cancellation Barriers to BarrierTracker and BarrierBuffer [FLINK-4985] - Report Declined/Canceled Checkpoints to [...]
 In this post, we’ll look back on the project’s progress over the course of 2016, and we’ll also preview what 2017 has in store.
 {%toc%}
 Community Growth # Github # First, here&rsquo;s a summary of community statistics from GitHub. At the time of writing:
@@ -5069,19 +5154,19 @@ Table API window aggregations, as described in FLIP-11, to support group-window
 Side inputs, as described in this design document, to enable the joining of a main, high-throughput stream with one more more inputs with static or slowly-changing data.
 If you&rsquo;re interested in getting involved with Flink, we encourage you to take a look at the FLIPs and to join the discussion via the Flink mailing lists.
 Lastly, we&rsquo;d like to extend a sincere thank you to all of the Flink community for making 2016 a great year!
-`}),e.add({id:263,href:"/2016/10/12/apache-flink-1.1.3-released/",title:"Apache Flink 1.1.3 Released",section:"Flink Blog",content:`The Apache Flink community released the next bugfix version of the Apache Flink 1.1. series.
+`}),e.add({id:265,href:"/2016/10/12/apache-flink-1.1.3-released/",title:"Apache Flink 1.1.3 Released",section:"Flink Blog",content:`The Apache Flink community released the next bugfix version of the Apache Flink 1.1. series.
 We recommend all users to upgrade to Flink 1.1.3.
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.1.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.10&lt;/artifactId&gt; &lt;version&gt;1.1.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.10&lt;/artifactId&gt; &lt;versio [...]
 Note for RocksDB Backend Users # It is highly recommended to use the &ldquo;fully async&rdquo; mode for the RocksDB state backend. The &ldquo;fully async&rdquo; mode will most likely allow you to easily upgrade to Flink 1.2 (via savepoints) when it is released. The &ldquo;semi async&rdquo; mode will no longer be supported by Flink 1.2.
-RocksDBStateBackend backend = new RocksDBStateBackend(&#34;...&#34;); backend.enableFullyAsyncSnapshots(); Release Notes - Flink - Version 1.1.3 # Bug [FLINK-2662] - CompilerException: &quot;Bug: Plan generation for Unions picked a ship strategy between binary plan operators.&quot; [FLINK-4311] - TableInputFormat fails when reused on next split [FLINK-4329] - Fix Streaming File Source Timestamps/Watermarks Handling [FLINK-4485] - Finished jobs in yarn session fill /tmp filesystem [FLINK- [...]
+RocksDBStateBackend backend = new RocksDBStateBackend(&#34;...&#34;); backend.enableFullyAsyncSnapshots(); Release Notes - Flink - Version 1.1.3 # Bug [FLINK-2662] - CompilerException: &quot;Bug: Plan generation for Unions picked a ship strategy between binary plan operators.&quot; [FLINK-4311] - TableInputFormat fails when reused on next split [FLINK-4329] - Fix Streaming File Source Timestamps/Watermarks Handling [FLINK-4485] - Finished jobs in yarn session fill /tmp filesystem [FLINK- [...]
 We recommend all users to upgrade to Flink 1.1.2.
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.1.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.10&lt;/artifactId&gt; &lt;version&gt;1.1.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.10&lt;/artifactId&gt; &lt;versio [...]
-Release Notes - Flink - Version 1.1.2 [FLINK-4236] - Flink Dashboard stops showing list of uploaded jars if main method cannot be looked up [FLINK-4309] - Potential null pointer dereference in DelegatingConfiguration#keySet() [FLINK-4334] - Shaded Hadoop1 jar not fully excluded in Quickstart [FLINK-4341] - Kinesis connector does not emit maximum watermark properly [FLINK-4402] - Wrong metrics parameter names in documentation [FLINK-4409] - class conflict between jsr305-1.3.9.jar and flin [...]
+Release Notes - Flink - Version 1.1.2 [FLINK-4236] - Flink Dashboard stops showing list of uploaded jars if main method cannot be looked up [FLINK-4309] - Potential null pointer dereference in DelegatingConfiguration#keySet() [FLINK-4334] - Shaded Hadoop1 jar not fully excluded in Quickstart [FLINK-4341] - Kinesis connector does not emit maximum watermark properly [FLINK-4402] - Wrong metrics parameter names in documentation [FLINK-4409] - class conflict between jsr305-1.3.9.jar and flin [...]
 Ted Dunning has been announced as a keynote speaker at the event. Ted is the VP of Incubator at Apache Software Foundation, the Chief Application Architect at MapR Technologies, and a mentor on many recent projects. He'll present "How Can We Take Flink Forward?" on the second day of the conference.
 Following Ted's keynote there will be a panel discussion on "Large Scale Streaming in Production". As stream processing systems become more mainstream, companies are looking to empower their users to take advantage of this technology. We welcome leading stream processing experts Xiaowei Jiang (Alibaba), Monal Daxini (Netflix), Maxim Fateev (Uber), and Ted Dunning (MapR Technologies) on stage to talk about the challenges they have faced and the solutions they have discovered while impleme [...]
 The welcome keynote on Monday, September 12, will be presented by data Artisans' co-founders Kostas Tzoumas and Stephan Ewen. They will talk about "The maturing data streaming ecosystem and Apache Flink’s accelerated growth". In this talk, Kostas and Stephan discuss several large-scale stream processing use cases that the data Artisans team has seen over the past year.
 And one more recent addition to the program: Maxim Fateev of Uber will present "Beyond the Watermark: On-Demand Backfilling in Flink". Flink’s time-progress model is built around a single watermark, which is incompatible with Uber’s business need for generating aggregates retroactively. Maxim's talk covers Uber's solution for on-demand backfilling.
-We hope to see many community members at Flink Forward 2016. Registration is available online: flink-forward.org/registration `}),e.add({id:266,href:"/2016/08/04/announcing-apache-flink-1.1.0/",title:"Announcing Apache Flink 1.1.0",section:"Flink Blog",content:`Important: The Maven artifacts published with version 1.1.0 on Maven central have a Hadoop dependency issue. It is highly recommended to use 1.1.1 or 1.1.1-hadoop1 as the Flink version. The Apache Flink community is pleased to ann [...]
+We hope to see many community members at Flink Forward 2016. Registration is available online: flink-forward.org/registration `}),e.add({id:268,href:"/2016/08/04/announcing-apache-flink-1.1.0/",title:"Announcing Apache Flink 1.1.0",section:"Flink Blog",content:`Important: The Maven artifacts published with version 1.1.0 on Maven central have a Hadoop dependency issue. It is highly recommended to use 1.1.1 or 1.1.1-hadoop1 as the Flink version. The Apache Flink community is pleased to ann [...]
 This release is the first major release in the 1.X.X series of releases, which maintains API compatibility with 1.0.0. This means that your applications written against stable APIs of Flink 1.0.0 will compile and run with Flink 1.1.0. 95 contributors provided bug fixes, improvements, and new features such that in total more than 450 JIRA issues could be resolved. See the complete changelog for more details.
 We encourage everyone to download the release and check out the documentation. Feedback through the Flink mailing lists is, as always, very welcome!
 Some highlights of the release are listed in the following sections.
@@ -5109,11 +5194,11 @@ Metrics # Flink’s new metrics system allows you to easily gather and expose me
 Counter counter = getRuntimeContext() .getMetricGroup() .counter(&#34;my-counter&#34;); All registered metrics will be exposed via reporters. Out of the box, Flinks comes with support for JMX, Ganglia, Graphite, and statsD. In addition to your custom metrics, Flink exposes many internal metrics like checkpoint sizes and JVM stats.
 Check out the Metrics documentation for more details.
 List of Contributors # The following 95 people contributed to this release:
-Abdullah Ozturk Ajay Bhat Alexey Savartsov Aljoscha Krettek Andrea Sella Andrew Palumbo Chenguang He Chiwan Park David Moravek Dominik Bruhn Dyana Rose Fabian Hueske Flavio Pompermaier Gabor Gevay Gabor Horvath Geoffrey Mon Gordon Tai Greg Hogan Gyula Fora Henry Saputra Ignacio N. Lucero Ascencio Igor Berman Ismaël Mejía Ivan Mushketyk Jark Wu Jiri Simsa Jonas Traub Josh Joshi Joshua Herman Ken Krugler Konstantin Knauf Lasse Dalegaard Li Fanxi MaBiao Mao Wei Mark Reddy Martin Junghanns M [...]
+Abdullah Ozturk Ajay Bhat Alexey Savartsov Aljoscha Krettek Andrea Sella Andrew Palumbo Chenguang He Chiwan Park David Moravek Dominik Bruhn Dyana Rose Fabian Hueske Flavio Pompermaier Gabor Gevay Gabor Horvath Geoffrey Mon Gordon Tai Greg Hogan Gyula Fora Henry Saputra Ignacio N. Lucero Ascencio Igor Berman Ismaël Mejía Ivan Mushketyk Jark Wu Jiri Simsa Jonas Traub Josh Joshi Joshua Herman Ken Krugler Konstantin Knauf Lasse Dalegaard Li Fanxi MaBiao Mao Wei Mark Reddy Martin Junghanns M [...]
 The Maven artifacts published on Maven central for 1.1.0 had a Hadoop dependency issue: No Hadoop 1 specific version (with version 1.1.0-hadoop1) was deployed and 1.1.0 artifacts have a dependency on Hadoop 1 instead of Hadoop 2.
 This was fixed with this release and we highly recommend all users to use this version of Flink by bumping your Flink dependencies to version 1.1.1:
 &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-java&lt;/artifactId&gt; &lt;version&gt;1.1.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.10&lt;/artifactId&gt; &lt;version&gt;1.1.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;/groupId&gt; &lt;artifactId&gt;flink-clients_2.10&lt;/artifactId&gt; &lt;versio [...]
-`}),e.add({id:268,href:"/2016/05/24/stream-processing-for-everyone-with-sql-and-apache-flink/",title:"Stream Processing for Everyone with SQL and Apache Flink",section:"Flink Blog",content:`The capabilities of open source systems for distributed stream processing have evolved significantly over the last years. Initially, the first systems in the field (notably Apache Storm) provided low latency processing, but were limited to at-least-once guarantees, processing-time semantics, and rathe [...]
+`}),e.add({id:270,href:"/2016/05/24/stream-processing-for-everyone-with-sql-and-apache-flink/",title:"Stream Processing for Everyone with SQL and Apache Flink",section:"Flink Blog",content:`The capabilities of open source systems for distributed stream processing have evolved significantly over the last years. Initially, the first systems in the field (notably Apache Storm) provided low latency processing, but were limited to at-least-once guarantees, processing-time semantics, and rathe [...]
 In the meantime, stream processing has taken off in the industry. We are witnessing a rapidly growing interest in stream processing which is reflected by prevalent deployments of streaming processing infrastructure such as Apache Kafka and Apache Flink. The increasing number of available data streams results in a demand for people that can analyze streaming data and turn it into real-time insights. However, stream data analysis requires a special skill set including knowledge of streamin [...]
 About six months ago, the Apache Flink community started an effort to add a SQL interface for stream data analysis. SQL is the standard language to access and process data. Everybody who occasionally analyzes data is familiar with SQL. Consequently, a SQL interface for stream data processing will make this technology accessible to a much wider audience. Moreover, SQL support for streaming data will also enable new use cases such as interactive and ad-hoc stream analysis and significantly [...]
 Where did we come from? # With the 0.9.0-milestone1 release, Apache Flink added an API to process relational data with SQL-like expressions called the Table API. The central concept of this API is a Table, a structured data set or stream on which relational operations can be applied. The Table API is tightly integrated with the DataSet and DataStream API. A Table can be easily created from a DataSet or DataStream and can also be converted back into a DataSet or DataStream as the followin [...]
@@ -5132,14 +5217,14 @@ Although we haven’t completely fleshed out the details of how windows will be
 SQL (following the syntax proposal of Calcite’s streaming SQL document) # SELECT STREAM TUMBLE_END(time, INTERVAL &#39;1&#39; DAY) AS day, location AS room, AVG((tempF - 32) * 0.556) AS avgTempC FROM sensorData WHERE location LIKE &#39;room%&#39; GROUP BY TUMBLE(time, INTERVAL &#39;1&#39; DAY), location Table API # val avgRoomTemp: Table = tableEnv.ingest(&#34;sensorData&#34;) .where(&#39;location.like(&#34;room%&#34;)) .partitionBy(&#39;location) .window(Tumbling every Days(1) on &#39;t [...]
 In Flink 1.2.0, the feature set of SQL on streams will be significantly extended. Among other things, we plan to support different types of window aggregates and maybe also streaming joins. For this effort, we want to closely collaborate with the Apache Calcite community and help extending Calcite&rsquo;s support for relational operations on streaming data when necessary.
 If this post made you curious and you want to try out Flink’s SQL interface and the new Table API, we encourage you to do so! Simply clone the SNAPSHOT master branch and check out the Table API documentation for the SNAPSHOT version. Please note that the branch is under heavy development, and hence some code examples in this blog post might not work. We are looking forward to your feedback and welcome contributions.
-`}),e.add({id:269,href:"/2016/05/11/flink-1.0.3-released/",title:"Flink 1.0.3 Released",section:"Flink Blog",content:`Today, the Flink community released Flink version 1.0.3, the third bugfix release of the 1.0 series.
+`}),e.add({id:271,href:"/2016/05/11/flink-1.0.3-released/",title:"Flink 1.0.3 Released",section:"Flink Blog",content:`Today, the Flink community released Flink version 1.0.3, the third bugfix release of the 1.0 series.
 We recommend all users updating to this release by bumping the version of your Flink dependencies to 1.0.3 and updating the binaries on the server. You can find the binaries on the updated Downloads page.
-Fixed Issues # Bug # [FLINK-3790] [streaming] Use proper hadoop config in rolling sink [FLINK-3840] Remove Testing Files in RocksDB Backend [FLINK-3835] [optimizer] Add input id to JSON plan to resolve ambiguous input names [hotfix] OptionSerializer.duplicate to respect stateful element serializer [FLINK-3803] [runtime] Pass CheckpointStatsTracker to ExecutionGraph [hotfix] [cep] Make cep window border treatment consistent Improvement # [FLINK-3678] [dist, docs] Make Flink logs directory [...]
+Fixed Issues # Bug # [FLINK-3790] [streaming] Use proper hadoop config in rolling sink [FLINK-3840] Remove Testing Files in RocksDB Backend [FLINK-3835] [optimizer] Add input id to JSON plan to resolve ambiguous input names [hotfix] OptionSerializer.duplicate to respect stateful element serializer [FLINK-3803] [runtime] Pass CheckpointStatsTracker to ExecutionGraph [hotfix] [cep] Make cep window border treatment consistent Improvement # [FLINK-3678] [dist, docs] Make Flink logs directory [...]
 We recommend all users updating to this release by bumping the version of your Flink dependencies to 1.0.2 and updating the binaries on the server. You can find the binaries on the updated Downloads page.
-Fixed Issues # Bug # [FLINK-3657] [dataSet] Change access of DataSetUtils.countElements() to &lsquo;public&rsquo; [FLINK-3762] [core] Enable Kryo reference tracking [FLINK-3732] [core] Fix potential null deference in ExecutionConfig#equals() [FLINK-3760] Fix StateDescriptor.readObject [FLINK-3730] Fix RocksDB Local Directory Initialization [FLINK-3712] Make all dynamic properties available to the CLI frontend [FLINK-3688] WindowOperator.trigger() does not emit Watermark anymore [FLINK-36 [...]
+Fixed Issues # Bug # [FLINK-3657] [dataSet] Change access of DataSetUtils.countElements() to &lsquo;public&rsquo; [FLINK-3762] [core] Enable Kryo reference tracking [FLINK-3732] [core] Fix potential null deference in ExecutionConfig#equals() [FLINK-3760] Fix StateDescriptor.readObject [FLINK-3730] Fix RocksDB Local Directory Initialization [FLINK-3712] Make all dynamic properties available to the CLI frontend [FLINK-3688] WindowOperator.trigger() does not emit Watermark anymore [FLINK-36 [...]
 The conference welcomes submissions on everything Flink-related, including experiences with using Flink, products based on Flink, technical talks on extending Flink, as well as connecting Flink with other open source or proprietary software.
 Read more here.
-`}),e.add({id:272,href:"/2016/04/06/introducing-complex-event-processing-cep-with-apache-flink/",title:"Introducing Complex Event Processing (CEP) with Apache Flink",section:"Flink Blog",content:`With the ubiquity of sensor networks and smart devices continuously collecting more and more data, we face the challenge to analyze an ever growing stream of data in near real-time. Being able to react quickly to changing trends or to deliver up to date business intelligence can be a decisive fa [...]
+`}),e.add({id:274,href:"/2016/04/06/introducing-complex-event-processing-cep-with-apache-flink/",title:"Introducing Complex Event Processing (CEP) with Apache Flink",section:"Flink Blog",content:`With the ubiquity of sensor networks and smart devices continuously collecting more and more data, we face the challenge to analyze an ever growing stream of data in near real-time. Being able to react quickly to changing trends or to deliver up to date business intelligence can be a decisive fa [...]
 Complex event processing (CEP) addresses exactly this problem of matching continuously incoming events against a pattern. The result of a matching are usually complex events which are derived from the input events. In contrast to traditional DBMSs where a query is executed on stored data, CEP executes data on a stored query. All data which is not relevant for the query can be immediately discarded. The advantages of this approach are obvious, given that CEP queries are applied on a poten [...]
 Consequently, CEP’s processing paradigm drew significant interest and found application in a wide variety of use cases. Most notably, CEP is used nowadays for financial applications such as stock market trend and credit card fraud detection. Moreover, it is used in RFID-based tracking and monitoring, for example, to detect thefts in a warehouse where items are not properly checked out. CEP can also be used to detect network intrusion by specifying patterns of suspicious user behaviour.
 Apache Flink with its true streaming nature and its capabilities for low latency as well as high throughput stream processing is a natural fit for CEP workloads. Consequently, the Flink community has introduced the first version of a new CEP library with Flink 1.0. In the remainder of this blog post, we introduce Flink’s CEP library and we illustrate its ease of use through the example of monitoring a data center.
@@ -5163,9 +5248,9 @@ The full source code for the presented example as well as an example data source
 Conclusion # In this blog post we have seen how easy it is to reason about event streams using Flink’s CEP library. Using the example of monitoring and alert generation for a data center, we have implemented a short program which notifies us when a rack is about to overheat and potentially to fail.
 In the future, the Flink community will further extend the CEP library’s functionality and expressiveness. Next on the road map is support for a regular expression-like pattern specification, including Kleene star, lower and upper bounds, and negation. Furthermore, it is planned to allow the where-clause to access fields of previously matched events. This feature will allow to prune unpromising event sequences early.
 Note: The example code requires Flink 1.0.1 or higher.
-`}),e.add({id:273,href:"/2016/04/06/flink-1.0.1-released/",title:"Flink 1.0.1 Released",section:"Flink Blog",content:`Today, the Flink community released Flink version 1.0.1, the first bugfix release of the 1.0 series.
+`}),e.add({id:275,href:"/2016/04/06/flink-1.0.1-released/",title:"Flink 1.0.1 Released",section:"Flink Blog",content:`Today, the Flink community released Flink version 1.0.1, the first bugfix release of the 1.0 series.
 We recommend all users updating to this release by bumping the version of your Flink dependencies to 1.0.1 and updating the binaries on the server. You can find the binaries on the updated Downloads page.
-Fixed Issues # Bug [FLINK-3179] - Combiner is not injected if Reduce or GroupReduce input is explicitly partitioned [FLINK-3472] - JDBCInputFormat.nextRecord(..) has misleading message on NPE [FLINK-3491] - HDFSCopyUtilitiesTest fails on Windows [FLINK-3495] - RocksDB Tests can&#39;t run on Windows [FLINK-3533] - Update the Gelly docs wrt examples and cluster execution [FLINK-3563] - .returns() doesn&#39;t compile when using .map() with a custom MapFunction [FLINK-3566] - Input type vali [...]
+Fixed Issues # Bug [FLINK-3179] - Combiner is not injected if Reduce or GroupReduce input is explicitly partitioned [FLINK-3472] - JDBCInputFormat.nextRecord(..) has misleading message on NPE [FLINK-3491] - HDFSCopyUtilitiesTest fails on Windows [FLINK-3495] - RocksDB Tests can&#39;t run on Windows [FLINK-3533] - Update the Gelly docs wrt examples and cluster execution [FLINK-3563] - .returns() doesn&#39;t compile when using .map() with a custom MapFunction [FLINK-3566] - Input type vali [...]
 Flink version 1.0.0 marks the beginning of the 1.X.X series of releases, which will maintain backwards compatibility with 1.0.0. This means that applications written against stable APIs of Flink 1.0.0 will compile and run with all Flink versions in the 1. series. This is the first time we are formally guaranteeing compatibility in Flink&rsquo;s history, and we therefore see this release as a major milestone of the project, perhaps the most important since graduation as a top-level project.
 Apart from backwards compatibility, Flink 1.0.0 brings a variety of new user-facing features, as well as tons of bug fixes. About 64 contributors provided bug fixes, improvements, and new features such that in total more than 450 JIRA issues could be resolved.
 We encourage everyone to download the release and check out the documentation. Feedback through the Flink mailing lists is, as always, very welcome!
@@ -5180,9 +5265,9 @@ Improved checkpointing control and monitoring # The checkpointing has been exten
 The checkpoint coordinator now exposes statistics through our REST monitoring API and the web interface. Users can review the checkpoint size and duration on a per-operator basis and see the last completed checkpoints. This is helpful for identifying performance issues, such as processing slowdown by the checkpoints.
 Improved Kafka connector and support for Kafka 0.9 # Flink 1.0 supports both Kafka 0.8 and 0.9. With the new release, Flink exposes Kafka metrics for the producers and the 0.9 consumer through Flink’s accumulator system. We also enhanced the existing connector for Kafka 0.8, allowing users to subscribe to multiple topics in one source.
 Changelog and known issues # This release resolves more than 450 issues, including bug fixes, improvements, and new features. See the complete changelog and known issues.
-List of contributors # Abhishek Agarwal Ajay Bhat Aljoscha Krettek Andra Lungu Andrea Sella Chesnay Schepler Chiwan Park Daniel Pape Fabian Hueske Filipe Correia Frederick F. Kautz IV Gabor Gevay Gabor Horvath Georgios Andrianakis Greg Hogan Gyula Fora Henry Saputra Hilmi Yildirim Hubert Czerpak Jark Wu Johannes Jun Aoki Jun Aoki Kostas Kloudas Li Chengxiang Lun Gao Martin Junghanns Martin Liesenberg Matthias J. Sax Maximilian Michels Márton Balassi Nick Dimiduk Niels Basjes Omer Katz Pa [...]
+List of contributors # Abhishek Agarwal Ajay Bhat Aljoscha Krettek Andra Lungu Andrea Sella Chesnay Schepler Chiwan Park Daniel Pape Fabian Hueske Filipe Correia Frederick F. Kautz IV Gabor Gevay Gabor Horvath Georgios Andrianakis Greg Hogan Gyula Fora Henry Saputra Hilmi Yildirim Hubert Czerpak Jark Wu Johannes Jun Aoki Jun Aoki Kostas Kloudas Li Chengxiang Lun Gao Martin Junghanns Martin Liesenberg Matthias J. Sax Maximilian Michels Márton Balassi Nick Dimiduk Niels Basjes Omer Katz Pa [...]
 We recommend all users updating to this release by bumping the version of your Flink dependencies to 0.10.2 and updating the binaries on the server.
-Issues fixed # FLINK-3242: Adjust StateBackendITCase for 0.10 signatures of state backends FLINK-3236: Flink user code classloader as parent classloader from Flink core classes FLINK-2962: Cluster startup script refers to unused variable FLINK-3151: Downgrade to Netty version 4.0.27.Final FLINK-3224: Call setInputType() on output formats that implement InputTypeConfigurable FLINK-3218: Fix overriding of user parameters when merging Hadoop configurations FLINK-3189: Fix argument parsing o [...]
+Issues fixed # FLINK-3242: Adjust StateBackendITCase for 0.10 signatures of state backends FLINK-3236: Flink user code classloader as parent classloader from Flink core classes FLINK-2962: Cluster startup script refers to unused variable FLINK-3151: Downgrade to Netty version 4.0.27.Final FLINK-3224: Call setInputType() on output formats that implement InputTypeConfigurable FLINK-3218: Fix overriding of user parameters when merging Hadoop configurations FLINK-3189: Fix argument parsing o [...]
 Overall, we have seen Flink grow in terms of functionality from an engine to one of the most complete open-source stream processing frameworks available. The community grew from a relatively small and geographically focused team, to a truly global, and one of the largest big data communities in the the Apache Software Foundation.
 We will also look at some interesting stats, including that the busiest days for Flink are Mondays (who would have thought :-).
 Community growth # Let us start with some simple statistics from Flink&rsquo;s github repository. During 2015, the Flink community doubled in size, from about 75 contributors to over 150. Forks of the repository more than tripled from 160 in February 2015 to 544 in December 2015, and the number of stars of the repository almost tripled from 289 to 813.
@@ -5205,7 +5290,7 @@ Support for Apache Mesos, and resource-dynamic YARN support: support for both Me
 Security: encrypt both the messages exchanged between TaskManagers and JobManager, as well as the connections for data exchange between workers.
 More streaming connectors, more runtime metrics, and continuous DataStream API enhancements: add support for more sources and sinks (e.g., Amazon Kinesis, Cassandra, Flume, etc), expose more metrics to the user, and provide continuous improvements to the DataStream API.
 If you are interested in these features, we highly encourage you to take a look at the current draft, and join the discussion on the Flink mailing lists.
-`}),e.add({id:277,href:"/2015/12/11/storm-compatibility-in-apache-flink-how-to-run-existing-storm-topologies-on-flink/",title:"Storm Compatibility in Apache Flink: How to run existing Storm topologies on Flink",section:"Flink Blog",content:`Apache Storm was one of the first distributed and scalable stream processing systems available in the open source space offering (near) real-time tuple-by-tuple processing semantics. Initially released by the developers at Backtype in 2011 under the E [...]
+`}),e.add({id:279,href:"/2015/12/11/storm-compatibility-in-apache-flink-how-to-run-existing-storm-topologies-on-flink/",title:"Storm Compatibility in Apache Flink: How to run existing Storm topologies on Flink",section:"Flink Blog",content:`Apache Storm was one of the first distributed and scalable stream processing systems available in the open source space offering (near) real-time tuple-by-tuple processing semantics. Initially released by the developers at Backtype in 2011 under the E [...]
 Apache Flink is a stream processing engine that improves upon older technologies like Storm in several dimensions, including strong consistency guarantees (&ldquo;exactly once&rdquo;), a higher level DataStream API, support for event time and a rich windowing system, as well as superior throughput with competitive low latency.
 While Flink offers several technical benefits over Storm, an existing investment on a codebase of applications developed for Storm often makes it difficult to switch engines. For these reasons, as part of the Flink 0.10 release, Flink ships with a Storm compatibility package that allows users to:
 Run unmodified Storm topologies using Apache Flink benefiting from superior performance. Embed Storm code (spouts and bolts) as operators inside Flink DataStream programs. Only minor code changes are required in order to submit the program to Flink instead of Storm. This minimizes the work for developers to run existing Storm topologies while leveraging Apache Flink’s fast and robust execution engine.
@@ -5222,7 +5307,7 @@ Outlook # The Storm compatibility package is currently in beta and undergoes con
 Summary # Flink&rsquo;s compatibility package for Storm allows using unmodified Spouts and Bolts within Flink. This enables you to even embed third-party Spouts and Bolts where the source code is not available. While you can embed Spouts/Bolts in a Flink program and mix-and-match them with Flink operators, running whole topologies is the easiest way to get started and can be achieved with almost no code changes.
 If you want to try out Flink&rsquo;s Storm compatibility package checkout our Documentation.
 1. We confess, there are three lines changed compared to a Storm project &mdash;because the example covers local and remote execution. ↩
-`}),e.add({id:278,href:"/2015/12/04/introducing-stream-windows-in-apache-flink/",title:"Introducing Stream Windows in Apache Flink",section:"Flink Blog",content:`The data analysis space is witnessing an evolution from batch to stream processing for many use cases. Although batch can be handled as a special case of stream processing, analyzing never-ending streaming data often requires a shift in the mindset and comes with its own terminology (for example, “windowing” and “at-least-once”/ [...]
+`}),e.add({id:280,href:"/2015/12/04/introducing-stream-windows-in-apache-flink/",title:"Introducing Stream Windows in Apache Flink",section:"Flink Blog",content:`The data analysis space is witnessing an evolution from batch to stream processing for many use cases. Although batch can be handled as a special case of stream processing, analyzing never-ending streaming data often requires a shift in the mindset and comes with its own terminology (for example, “windowing” and “at-least-once”/ [...]
 In this blog post, we discuss the concept of windows for stream processing, present Flink&rsquo;s built-in windows, and explain its support for custom windowing semantics.
 What are windows and what are they good for? # Consider the example of a traffic sensor that counts every 15 seconds the number of vehicles passing a certain location. The resulting stream could look like:
 If you would like to know, how many vehicles passed that location, you would simply sum the individual counts. However, the nature of a sensor stream is that it continuously produces data. Such a stream never ends and it is not possible to compute a final sum that can be returned. Instead, it is possible to compute rolling sums, i.e., return for each input event an updated sum record. This would yield a new stream of partial sums.
@@ -5249,9 +5334,9 @@ val input: DataStream[IN] = ... // created a keyed stream using a key selector f
 // specify an optional evictor windowed = windowed .evictor(myEvictor: Evictor[IN, WINDOW]) Finally, we apply a WindowFunction that returns elements of type OUT to obtain a DataStream[OUT].
 // apply window function to windowed stream val output: DataStream[OUT] = windowed .apply(myWinFunc: WindowFunction[IN, OUT, KEY, WINDOW]) With Flink&rsquo;s internal windowing mechanics and its exposure through the DataStream API it is possible to implement very custom windowing logic such as session windows or windows that emit early results if the values exceed a certain threshold.
 Conclusion # Support for various types of windows over continuous data streams is a must-have for modern stream processors. Apache Flink is a stream processor with a very strong feature set, including a very flexible mechanism to build and evaluate windows over continuous data streams. Flink provides pre-defined window operators for common uses cases as well as a toolbox that allows to define very custom windowing logic. The Flink community will add more pre-defined window operators as w [...]
-`}),e.add({id:279,href:"/2015/11/27/flink-0.10.1-released/",title:"Flink 0.10.1 released",section:"Flink Blog",content:`Today, the Flink community released the first bugfix release of the 0.10 series of Flink.
+`}),e.add({id:281,href:"/2015/11/27/flink-0.10.1-released/",title:"Flink 0.10.1 released",section:"Flink Blog",content:`Today, the Flink community released the first bugfix release of the 0.10 series of Flink.
 We recommend all users updating to this release, by bumping the version of your Flink dependencies and updating the binaries on the server.
-Issues fixed # [FLINK-2879] - Links in documentation are broken [FLINK-2938] - Streaming docs not in sync with latest state changes [FLINK-2942] - Dangling operators in web UI&#39;s program visualization (non-deterministic) [FLINK-2967] - TM address detection might not always detect the right interface on slow networks / overloaded JMs [FLINK-2977] - Cannot access HBase in a Kerberos secured Yarn cluster [FLINK-2987] - Flink 0.10 fails to start on YARN 2.6.0 [FLINK-2989] - Job Cancel but [...]
+Issues fixed # [FLINK-2879] - Links in documentation are broken [FLINK-2938] - Streaming docs not in sync with latest state changes [FLINK-2942] - Dangling operators in web UI&#39;s program visualization (non-deterministic) [FLINK-2967] - TM address detection might not always detect the right interface on slow networks / overloaded JMs [FLINK-2977] - Cannot access HBase in a Kerberos secured Yarn cluster [FLINK-2987] - Flink 0.10 fails to start on YARN 2.6.0 [FLINK-2989] - Job Cancel but [...]
 For Flink 0.10.0, the focus of the community was to graduate the DataStream API from beta and to evolve Apache Flink into a production-ready stream data processor with a competitive feature set. These efforts resulted in support for event-time and out-of-order streams, exactly-once guarantees in the case of failures, a very flexible windowing mechanism, sophisticated operator state management, and a highly-available cluster operation mode. Flink 0.10.0 also brings a new monitoring dashbo [...]
 We encourage everyone to download the release and check out the documentation. Feedback through the Flink mailing lists is, as always, very welcome!
 New Features # Event-time Stream Processing # Many stream processing applications consume data from sources that produce events with associated timestamps such as sensor or user-interaction events. Very often, events have to be collected from several sources such that it is usually not guaranteed that events arrive in the exact order of their timestamps at the stream processor. Consequently, stream processors must take out-of-order elements into account in order to produce results which  [...]
@@ -5266,7 +5351,7 @@ Outer Joins # Outer joins have been one of the most frequently requested feature
 Gelly: Major Improvements and Scala API # Gelly is Flink’s API and library for processing and analyzing large-scale graphs. Gelly was introduced with release 0.9.0 and has been very well received by users and contributors. Based on user feedback, Gelly has been improved since then. In addition, Flink 0.10.0 introduces a Scala API for Gelly. See FLINK-2857 and FLINK-1962 for details.
 More Improvements and Fixes # The Flink community resolved more than 400 issues. The following list is a selection of new features and fixed bugs.
 FLINK-1851 Java Table API does not support Casting FLINK-2152 Provide zipWithIndex utility in flink-contrib FLINK-2158 NullPointerException in DateSerializer. FLINK-2240 Use BloomFilter to minimize probe side records which are spilled to disk in Hybrid-Hash-Join FLINK-2533 Gap based random sample optimization FLINK-2555 Hadoop Input/Output Formats are unable to access secured HDFS clusters FLINK-2565 Support primitive arrays as keys FLINK-2582 Document how to build Flink with other Scala [...]
-Contributors # Alexander Alexandrov Marton Balassi Enrique Bautista Faye Beligianni Bryan Bende Ajay Bhat Chris Brinkman Dmitry Buzdin Kun Cao Paris Carbone Ufuk Celebi Shivani Chandna Liang Chen Felix Cheung Hubert Czerpak Vimal Das Behrouz Derakhshan Suminda Dharmasena Stephan Ewen Fengbin Fang Gyula Fora Lun Gao Gabor Gevay Piotr Godek Sachin Goel Anton Haglund Gábor Hermann Greg Hogan Fabian Hueske Martin Junghanns Vasia Kalavri Ulf Karlsson Frederick F. Kautz Samia Khalid Johannes K [...]
+Contributors # Alexander Alexandrov Marton Balassi Enrique Bautista Faye Beligianni Bryan Bende Ajay Bhat Chris Brinkman Dmitry Buzdin Kun Cao Paris Carbone Ufuk Celebi Shivani Chandna Liang Chen Felix Cheung Hubert Czerpak Vimal Das Behrouz Derakhshan Suminda Dharmasena Stephan Ewen Fengbin Fang Gyula Fora Lun Gao Gabor Gevay Piotr Godek Sachin Goel Anton Haglund Gábor Hermann Greg Hogan Fabian Hueske Martin Junghanns Vasia Kalavri Ulf Karlsson Frederick F. Kautz Samia Khalid Johannes K [...]
 In this blog post, we will look at how Flink exploits off-heap memory. The feature is part of the upcoming release, but you can try it out with the latest nightly builds. We will also give a few interesting insights into the behavior for Java&rsquo;s JIT compiler for highly optimized methods and loops.
 Recap: Memory Management in Flink # To understand Flink’s approach to off-heap memory, we need to recap Flink’s approach to custom managed memory. We have written an earlier blog post about how Flink manages JVM memory itself
 As a summary, the core part is that Flink implements its algorithms not against Java objects, arrays, or lists, but actually against a data structure similar to java.nio.ByteBuffer. Flink uses its own specialized version, called MemorySegment on which algorithms put and get at specific positions ints, longs, byte arrays, etc, and compare and copy memory. The memory segments are held and distributed by a central component (called MemoryManager) from which algorithms request segments accor [...]
@@ -5327,7 +5412,7 @@ Writing 100000 x 8192 ints to 32768 bytes segment
 Segment Time HeapMemorySegment, mixed 578 msecs HybridMemorySegment, heap, mixed 580 msecs HybridMemorySegment, off-heap, mixed 576 msecs PureHeapSegment 624 msecs PureHybridSegment, heap 576 msecs PureHybridSegment, off-heap 578 msecs Reading 100000 x 8192 ints from 32768 bytes segment
 Segment Time HeapMemorySegment, mixed 464 msecs HybridMemorySegment, heap, mixed 464 msecs HybridMemorySegment, off-heap, mixed 465 msecs PureHeapSegment 463 msecs PureHybridSegment, heap 464 msecs PureHybridSegment, off-heap 463 msecs Writing 10 x 268435456 ints to 1073741824 bytes segment
 Segment Time HeapMemorySegment, mixed 2,187 msecs HybridMemorySegment, heap, mixed 2,161 msecs HybridMemorySegment, off-heap, mixed 2,152 msecs PureHeapSegment 2,770 msecs PureHybridSegment, heap 2,161 msecs PureHybridSegment, off-heap 2,157 msecs Reading 10 x 268435456 ints from 1073741824 bytes segment
-Segment Time HeapMemorySegment, mixed 1,782 msecs HybridMemorySegment, heap, mixed 1,783 msecs HybridMemorySegment, off-heap, mixed 1,774 msecs PureHeapSegment 1,501 msecs PureHybridSegment, heap 1,774 msecs PureHybridSegment, off-heap 1,771 msecs `}),e.add({id:282,href:"/2015/09/03/announcing-flink-forward-2015/",title:"Announcing Flink Forward 2015",section:"Flink Blog",content:`Flink Forward 2015 is the first conference with Flink at its center that aims to bring together the Apache F [...]
+Segment Time HeapMemorySegment, mixed 1,782 msecs HybridMemorySegment, heap, mixed 1,783 msecs HybridMemorySegment, off-heap, mixed 1,774 msecs PureHeapSegment 1,501 msecs PureHybridSegment, heap 1,774 msecs PureHybridSegment, off-heap 1,771 msecs `}),e.add({id:284,href:"/2015/09/03/announcing-flink-forward-2015/",title:"Announcing Flink Forward 2015",section:"Flink Blog",content:`Flink Forward 2015 is the first conference with Flink at its center that aims to bring together the Apache F [...]
 The conference program has been announced by the organizers and a program committee consisting of Flink PMC members. The agenda contains talks from industry and academia as well as a dedicated session on hands-on Flink training.
 Some highlights of the talks include
 A keynote by William Vambenepe, lead of the product management team responsible for Big Data services on Google Cloud Platform (BigQuery, Dataflow, etc&hellip;) on data streaming, Google Cloud Dataflow, and Apache Flink.
@@ -5335,11 +5420,11 @@ Talks by several practitioners on how they are putting Flink to work in their pr
 Talks on how open source projects, including Apache Mahout, Apache SAMOA (incubating), Apache Zeppelin (incubating), Apache BigTop, and Apache Storm integrate with Apache Flink.
 Talks by Flink committers on several aspects of the system, such as fault tolerance, the internal runtime architecture, and others.
 Check out the schedule and register for the conference.
-`}),e.add({id:283,href:"/2015/09/01/apache-flink-0.9.1-available/",title:"Apache Flink 0.9.1 available",section:"Flink Blog",content:`The Flink community is happy to announce that Flink 0.9.1 is now available.
+`}),e.add({id:285,href:"/2015/09/01/apache-flink-0.9.1-available/",title:"Apache Flink 0.9.1 available",section:"Flink Blog",content:`The Flink community is happy to announce that Flink 0.9.1 is now available.
 0.9.1 is a maintenance release, which includes a lot of minor fixes across several parts of the system. We suggest all users of Flink to work with this latest stable version.
 Download the release and [check out the documentation]({{ site.docs-stable }}). Feedback through the Flink mailing lists is, as always, very welcome!
 The following issues were fixed for this release:
-FLINK-1916 EOFException when running delta-iteration job FLINK-2089 &ldquo;Buffer recycled&rdquo; IllegalStateException during cancelling FLINK-2189 NullPointerException in MutableHashTable FLINK-2205 Confusing entries in JM Webfrontend Job Configuration section FLINK-2229 Data sets involving non-primitive arrays cannot be unioned FLINK-2238 Scala ExecutionEnvironment.fromCollection does not work with Sets FLINK-2248 Allow disabling of sdtout logging output FLINK-2257 Open and close of R [...]
+FLINK-1916 EOFException when running delta-iteration job FLINK-2089 &ldquo;Buffer recycled&rdquo; IllegalStateException during cancelling FLINK-2189 NullPointerException in MutableHashTable FLINK-2205 Confusing entries in JM Webfrontend Job Configuration section FLINK-2229 Data sets involving non-primitive arrays cannot be unioned FLINK-2238 Scala ExecutionEnvironment.fromCollection does not work with Sets FLINK-2248 Allow disabling of sdtout logging output FLINK-2257 Open and close of R [...]
 Gelly allows Flink users to perform end-to-end data analysis in a single system. Gelly can be seamlessly used with Flink&rsquo;s DataSet API, which means that pre-processing, graph creation, analysis, and post-processing can be done in the same application. At the end of this post, we will go through a step-by-step example in order to demonstrate that loading, transformation, filtering, graph creation, and analysis can be performed in a single Flink program.
 Overview
 What is Gelly? Graph Representation and Creation Transformations and Utilities Iterative Graph Processing Library of Graph Algorithms Use-Case: Music Profiles Ongoing and Future Work What is Gelly? # Gelly is a Graph API for Flink. It is currently supported in both Java and Scala. The Scala methods are implemented as wrappers on top of the basic Java operations. The API contains a set of utility functions for graph analysis, supports iterative graph processing and introduces a library of [...]
@@ -5400,7 +5485,7 @@ In the near future, we would like to see how Gelly can be integrated with graph
 Curious? Read more about our plans for Gelly in the roadmap.
 Back to top
 Links # Gelly Documentation
-`}),e.add({id:285,href:"/2015/06/24/announcing-apache-flink-0.9.0/",title:"Announcing Apache Flink 0.9.0",section:"Flink Blog",content:`The Apache Flink community is pleased to announce the availability of the 0.9.0 release. The release is the result of many months of hard work within the Flink community. It contains many new features and improvements which were previewed in the 0.9.0-milestone1 release and have been polished since then. This is the largest Flink release so far.
+`}),e.add({id:287,href:"/2015/06/24/announcing-apache-flink-0.9.0/",title:"Announcing Apache Flink 0.9.0",section:"Flink Blog",content:`The Apache Flink community is pleased to announce the availability of the 0.9.0 release. The release is the result of many months of hard work within the Flink community. It contains many new features and improvements which were previewed in the 0.9.0-milestone1 release and have been polished since then. This is the largest Flink release so far.
 Download the release and check out the documentation. Feedback through the Flink mailing lists is, as always, very welcome!
 New Features # Exactly-once Fault Tolerance for streaming programs # This release introduces a new fault tolerance mechanism for streaming dataflows. The new checkpointing algorithm takes data sources and also user-defined state into account and recovers failures such that all records are reflected exactly once in the operator states.
 The checkpointing algorithm is lightweight and driven by barriers that are periodically injected into the data streams at the sources. As such, it has an extremely low coordination overhead and is able to sustain very high throughput rates. User-defined state can be automatically backed up to configurable storage by the fault tolerance mechanism.
@@ -5477,14 +5562,14 @@ FLINK-2188: Reading from big HBase Tables
 FLINK-1781: Quickstarts broken due to Scala Version Variables
 Notice # The 0.9 series of Flink is the last version to support Java 6. If you are still using Java 6, please consider upgrading to Java 8 (Java 7 ended its free support in April 2015).
 Flink will require at least Java 7 in major releases after 0.9.0.
-`}),e.add({id:286,href:"/2015/05/14/april-2015-in-the-flink-community/",title:"April 2015 in the Flink community",section:"Flink Blog",content:`April was an packed month for Apache Flink.
+`}),e.add({id:288,href:"/2015/05/14/april-2015-in-the-flink-community/",title:"April 2015 in the Flink community",section:"Flink Blog",content:`April was an packed month for Apache Flink.
 Flink runner for Google Cloud Dataflow # A Flink runner for Google Cloud Dataflow was announced. See the blog posts by data Artisans and the Google Cloud Platform Blog. Google Cloud Dataflow programs can be written using and open-source SDK and run in multiple backends, either as a managed service inside Google&rsquo;s infrastructure, or leveraging open source runners, including Apache Flink.
 Flink 0.9.0-milestone1 release # The highlight of April was of course the availability of Flink 0.9-milestone1. This was a release packed with new features, including, a Python DataSet API, the new SQL-like Table API, FlinkML, a machine learning library on Flink, Gelly, FLink&rsquo;s Graph API, as well as a mode to run Flink on YARN leveraging Tez. In case you missed it, check out the release announcement blog post for details
 Conferences and meetups # April kicked off the conference season. Apache Flink was presented at ApacheCon in Texas (slides), the Hadoop Summit in Brussels featured two talks on Flink (see slides here and here), as well as at the Hadoop User Groups of the Netherlands (slides) and Stockholm. The brand new Apache Flink meetup Stockholm was also established.
 Google Summer of Code # Three students will work on Flink during Google&rsquo;s Summer of Code program on distributed pattern matching, exact and approximate statistics for data streams and windows, as well as asynchronous iterations and updates.
 Flink on the web # Fabian Hueske gave an interview at InfoQ on Apache Flink.
 Upcoming events # Stay tuned for a wealth of upcoming events! Two Flink talsk will be presented at Berlin Buzzwords, Flink will be presented at the Hadoop Summit in San Jose. A training workshop on Apache Flink is being organized in Berlin. Finally, Flink Forward, the first conference to bring together the whole Flink community is taking place in Berlin in October 2015.
-`}),e.add({id:287,href:"/2015/05/11/juggling-with-bits-and-bytes/",title:"Juggling with Bits and Bytes",section:"Flink Blog",content:` How Apache Flink operates on binary data # Nowadays, a lot of open-source systems for analyzing large data sets are implemented in Java or other JVM-based programming languages. The most well-known example is Apache Hadoop, but also newer frameworks such as Apache Spark, Apache Drill, and also Apache Flink run on JVMs. A common challenge that JVM-based da [...]
+`}),e.add({id:289,href:"/2015/05/11/juggling-with-bits-and-bytes/",title:"Juggling with Bits and Bytes",section:"Flink Blog",content:` How Apache Flink operates on binary data # Nowadays, a lot of open-source systems for analyzing large data sets are implemented in Java or other JVM-based programming languages. The most well-known example is Apache Hadoop, but also newer frameworks such as Apache Spark, Apache Drill, and also Apache Flink run on JVMs. A common challenge that JVM-based da [...]
 In this blog post we discuss how Apache Flink manages memory, talk about its custom data de/serialization stack, and show how it operates on binary data.
 Data Objects? Let’s put them on the heap! # The most straight-forward approach to process lots of data in a JVM is to put it as objects on the heap and operate on these objects. Caching a data set as objects would be as simple as maintaining a list containing an object for each record. An in-memory sort would simply sort the list of objects. However, this approach has a few notable drawbacks. First of all it is not trivial to watch and control heap memory usage when a lot of objects are  [...]
 What is Flink doing about that? # Apache Flink has its roots at a research project which aimed to combine the best technologies of MapReduce-based systems and parallel database systems. Coming from this background, Flink has always had its own way of processing data in-memory. Instead of putting lots of objects on the heap, Flink serializes objects into a fixed number of pre-allocated memory segments. Its DBMS-style sort and join algorithms operate as much as possible on this binary data [...]
@@ -5512,7 +5597,7 @@ The memory usage charts shows that the flink-serialized and kryo-serialized cons
 Occupied Memory Object-on-Heap Flink-Serialized Kryo-Serialized Sort on Integer approx. 700 MB (heap) 277 MB (sort buffer) 266 MB (sort buffer) Sort on String approx. 700 MB (heap) 315 MB (sort buffer) 266 MB (sort buffer) To summarize, the experiments verify the previously stated benefits of operating on binary data.
 We’re not done yet! # Apache Flink features quite a bit of advanced techniques to safely and efficiently process huge amounts of data with limited memory resources. However, there are a few points that could make Flink even more efficient. The Flink community is working on moving the managed memory to off-heap memory. This will allow for smaller JVMs, lower garbage collection overhead, and also easier system configuration. With Flink’s Table API, the semantics of all operations such as a [...]
 The groundwork (and a lot more) for operating on binary data is done but there is still some room for making Flink even better and faster. If you are crazy about performance and like to juggle with lot of bits and bytes, join the Flink community!
-TL;DR; Give me three things to remember! # Flink’s active memory management avoids nasty OutOfMemoryErrors that kill your JVMs and reduces garbage collection overhead. Flink features a highly efficient data de/serialization stack that facilitates operations on binary data and makes more data fit into memory. Flink’s DBMS-style operators operate natively on binary data yielding high performance in-memory and destage gracefully to disk if necessary. `}),e.add({id:288,href:"/2015/04/13/anno [...]
+TL;DR; Give me three things to remember! # Flink’s active memory management avoids nasty OutOfMemoryErrors that kill your JVMs and reduces garbage collection overhead. Flink features a highly efficient data de/serialization stack that facilitates operations on binary data and makes more data fit into memory. Flink’s DBMS-style operators operate natively on binary data yielding high performance in-memory and destage gracefully to disk if necessary. `}),e.add({id:290,href:"/2015/04/13/anno [...]
 You can download the release here and check out the latest documentation here. Feedback through the Flink mailing lists is, as always, very welcome!
 New Features # Table API # Flink’s new Table API offers a higher-level abstraction for interacting with structured data sources. The Table API allows users to execute logical, SQL-like queries on distributed data sets while allowing them to freely mix declarative queries with regular Flink operators. Here is an example that groups and joins two tables:
 val clickCounts = clicks .groupBy(&#39;user).select(&#39;userId, &#39;url.count as &#39;count) val activeUsers = users.join(clickCounts) .where(&#39;id === &#39;userId &amp;&amp; &#39;count &gt; 10).select(&#39;username, &#39;count, ...) Tables consist of logical attributes that can be selected by name rather than physical Java and Scala data types. This alleviates a lot of boilerplate code for common ETL tasks and raises the abstraction for Flink programs. Tables are available for both  [...]
@@ -5551,7 +5636,7 @@ FLINK-1179: Add button to JobManager web interface to request stack trace of a T
 FLINK-1105: Add support for locally sorted output
 FLINK-1688: Add socket sink
 FLINK-1436: Improve usability of command line interface
-`}),e.add({id:289,href:"/2015/04/07/march-2015-in-the-flink-community/",title:"March 2015 in the Flink community",section:"Flink Blog",content:`March has been a busy month in the Flink community.
+`}),e.add({id:291,href:"/2015/04/07/march-2015-in-the-flink-community/",title:"March 2015 in the Flink community",section:"Flink Blog",content:`March has been a busy month in the Flink community.
 Scaling ALS # Flink committers employed at data Artisans published a blog post on how they scaled matrix factorization with Flink and Google Compute Engine to matrices with 28 billion elements.
 Learn about the internals of Flink # The community has started an effort to better document the internals of Flink. Check out the first articles on the Flink wiki on how Flink manages memory, how tasks in Flink exchange data, type extraction and serialization in Flink, as well as how Flink builds on Akka for distributed coordination.
 Check out also the new blog post on how Flink executes joins with several insights into Flink&rsquo;s runtime.
@@ -5559,7 +5644,7 @@ Meetups and talks # Flink&rsquo;s machine learning efforts were presented at the
 In the Flink master # Table API in Scala and Java # The new Table API in Flink is now available in both Java and Scala. Check out the examples here (Java) and here (Scala).
 Additions to the Machine Learning library # Flink&rsquo;s Machine Learning library is seeing quite a bit of traction. Recent additions include the CoCoA algorithm for distributed optimization.
 Exactly-once delivery guarantees for streaming jobs # Flink streaming jobs now provide exactly once processing guarantees when coupled with persistent sources (notably Apache Kafka). Flink periodically checkpoints and persists the offsets of the sources and restarts from those checkpoints at failure recovery. This functionality is currently limited in that it does not yet handle large state and iterative programs.
-`}),e.add({id:290,href:"/2015/03/13/peeking-into-apache-flinks-engine-room/",title:"Peeking into Apache Flink's Engine Room",section:"Flink Blog",content:` Join Processing in Apache Flink # Joins are prevalent operations in many data processing applications. Most data processing systems feature APIs that make joining data sets very easy. However, the internal algorithms for join processing are much more involved – especially if large data sets need to be efficiently handled. Therefore, j [...]
+`}),e.add({id:292,href:"/2015/03/13/peeking-into-apache-flinks-engine-room/",title:"Peeking into Apache Flink's Engine Room",section:"Flink Blog",content:` Join Processing in Apache Flink # Joins are prevalent operations in many data processing applications. Most data processing systems feature APIs that make joining data sets very easy. However, the internal algorithms for join processing are much more involved – especially if large data sets need to be efficiently handled. Therefore, j [...]
 In this blog post, we cut through Apache Flink’s layered architecture and take a look at its internals with a focus on how it handles joins. Specifically, I will
 show how easy it is to join data sets using Flink’s fluent APIs, discuss basic distributed join strategies, Flink’s join implementations, and its memory management, talk about Flink’s optimizer that automatically chooses join strategies, show some performance numbers for joining data sets of different sizes, and finally briefly discuss joining of co-located and pre-sorted data sets. Disclaimer: This blog post is exclusively about equi-joins. Whenever I say “join” in the following, I actu [...]
 How do I join with Flink? # Flink provides fluent APIs in Java and Scala to write data flow programs. Flink’s APIs are centered around parallel data collections which are called data sets. data sets are processed by applying Transformations that compute new data sets. Flink’s transformations include Map and Reduce as known from MapReduce [1] but also operators for joining, co-grouping, and iterative processing. The documentation gives an overview of all available transformations [2].
@@ -5590,7 +5675,7 @@ Broadcast-Forward, Hybrid-Hash-Join (broadcasting and building with the smaller
 As in the single-core benchmark, we run 1:N joins, generate the data on-the-fly, and immediately discard the result after the join. We run the benchmark on 10 n1-highmem-8 Google Compute Engine instances. Each instance is equipped with 8 cores, 52GB RAM, 40GB of which are configured as working memory (5GB per core), and one local SSD for spilling to disk. All benchmarks are performed using the same configuration, i.e., no fine tuning for the respective data sizes is done. The programs ar [...]
 As expected, the Broadcast-Forward strategy performs best for very small inputs because the large probe side is not shipped over the network and is locally joined. However, when the size of the broadcasted side grows, two problems arise. First the amount of data which is shipped increases but also each parallel instance has to process the full broadcasted data set. The performance of both Repartitioning strategies behaves similar for growing input sizes which indicates that these strateg [...]
 I’ve got sooo much data to join, do I really need to ship it? # We have seen that off-the-shelf distributed joins work really well in Flink. But what if your data is so huge that you do not want to shuffle it across your cluster? We recently added some features to Flink for specifying semantic properties (partitioning and sorting) on input splits and co-located reading of local input files. With these tools at hand, it is possible to join pre-partitioned data sets from your local filesys [...]
-tl;dr: What should I remember from all of this? # Flink’s fluent Scala and Java APIs make joins and other data transformations easy as cake. The optimizer does the hard choices for you, but gives you control in case you know better. Flink’s join implementations perform very good in-memory and gracefully degrade when going to disk. Due to Flink’s robust memory management, there is no need for job- or data-specific memory tuning to avoid a nasty OutOfMemoryException. It just runs out-of-th [...]
+tl;dr: What should I remember from all of this? # Flink’s fluent Scala and Java APIs make joins and other data transformations easy as cake. The optimizer does the hard choices for you, but gives you control in case you know better. Flink’s join implementations perform very good in-memory and gracefully degrade when going to disk. Due to Flink’s robust memory management, there is no need for job- or data-specific memory tuning to avoid a nasty OutOfMemoryException. It just runs out-of-th [...]
 0.8.1 release # Flink 0.8.1 was released. This bugfixing release resolves a total of 22 issues.
 New committer # Max Michels has been voted a committer by the Flink PMC.
 Flink adapter for Apache SAMOA # Apache SAMOA (incubating) is a distributed streaming machine learning (ML) framework with a programming abstraction for distributed streaming ML algorithms. SAMOA runs on a variety of backend engines, currently Apache Storm and Apache S4. A pull request is available at the SAMOA repository that adds a Flink adapter for SAMOA.
@@ -5606,7 +5691,7 @@ Graph&lt;Long, Double, Double&gt; graph = Graph.fromDataSet(vertices, edges, env
 Flink Expressions # The newly merged flink-table module is the first step in Flink’s roadmap towards logical queries and SQL support. Here’s a preview on how you can read two CSV file, assign a logical schema to, and apply transformations like filters and joins using logical attributes rather than physical data types.
 val customers = getCustomerDataSet(env) .as(&#39;id, &#39;mktSegment) .filter( &#39;mktSegment === &#34;AUTOMOBILE&#34; ) val orders = getOrdersDataSet(env) .filter( o =&gt; dateFormat.parse(o.orderDate).before(date) ) .as(&#39;orderId, &#39;custId, &#39;orderDate, &#39;shipPrio) val items = orders.join(customers) .where(&#39;custId === &#39;id) .select(&#39;orderId, &#39;orderDate, &#39;shipPrio) Access to HCatalog tables # With the flink-hcatalog module, you can now conveniently access [...]
 Access to secured YARN clusters/HDFS. # With this change users can access Kerberos secured YARN (and HDFS) Hadoop clusters. Also, basic support for accessing secured HDFS with a standalone Flink setup is now available.
-`}),e.add({id:292,href:"/2015/02/09/introducing-flink-streaming/",title:"Introducing Flink Streaming",section:"Flink Blog",content:`This post is the first of a series of blog posts on Flink Streaming, the recent addition to Apache Flink that makes it possible to analyze continuous data sources in addition to static files. Flink Streaming uses the pipelined Flink engine to process data streams in real time and offers a new API including definition of flexible windows.
+`}),e.add({id:294,href:"/2015/02/09/introducing-flink-streaming/",title:"Introducing Flink Streaming",section:"Flink Blog",content:`This post is the first of a series of blog posts on Flink Streaming, the recent addition to Apache Flink that makes it possible to analyze continuous data sources in addition to static files. Flink Streaming uses the pipelined Flink engine to process data streams in real time and offers a new API including definition of flexible windows.
 In this post, we go through an example that uses the Flink Streaming API to compute statistics on stock market data that arrive continuously and combine the stock market data with Twitter streams. See the Streaming Programming Guide for a detailed presentation of the Streaming API.
 First, we read a bunch of stock price streams and combine them into one stream of market data. We apply several transformations on this market data stream, like rolling aggregations per stock. Then we emit price warning alerts when the prices are rapidly changing. Moving towards more advanced features, we compute rolling correlations between the market data streams and a Twitter stream with stock mentions.
 For running the example implementation please use the 0.9-SNAPSHOT version of Flink as a dependency. The full example code base can be found here in Scala and here in Java7.
@@ -5630,7 +5715,7 @@ Other things to try # For a full feature overview please check the Streaming Gui
 Upcoming for streaming # There are some aspects of Flink Streaming that are subjects to change by the next release making this application look even nicer.
 Stay tuned for later blog posts on how Flink Streaming works internally, fault tolerance, and performance measurements!
 Back to top
-`}),e.add({id:293,href:"/2015/02/04/january-2015-in-the-flink-community/",title:"January 2015 in the Flink community",section:"Flink Blog",content:`Happy 2015! Here is a (hopefully digestible) summary of what happened last month in the Flink community.
+`}),e.add({id:295,href:"/2015/02/04/january-2015-in-the-flink-community/",title:"January 2015 in the Flink community",section:"Flink Blog",content:`Happy 2015! Here is a (hopefully digestible) summary of what happened last month in the Flink community.
 0.8.0 release # Flink 0.8.0 was released. See here for the release notes.
 Flink roadmap # The community has published a roadmap for 2015 on the Flink wiki. Check it out to see what is coming up in Flink, and pick up an issue to contribute!
 Articles in the press # The Apache Software Foundation announced Flink as a Top-Level Project. The announcement was picked up by the media, e.g., here, here, and here.
@@ -5641,7 +5726,7 @@ Using off-heap memory # This pull request enables Flink to use off-heap memory f
 Gelly, Flink’s Graph API # This pull request introduces Gelly, Flink’s brand new Graph API. Gelly offers a native graph programming abstraction with functionality for vertex-centric programming, as well as available graph algorithms. See this slide set for an overview of Gelly.
 Semantic annotations # Semantic annotations are a powerful mechanism to expose information about the behavior of Flink functions to Flink’s optimizer. The optimizer can leverage this information to generate more efficient execution plans. For example the output of a Reduce operator that groups on the second field of a tuple is still partitioned on that field if the Reduce function does not modify the value of the second field. By exposing this information to the optimizer, the optimizer  [...]
 New YARN client # The improved YARN client of Flink now allows users to deploy Flink on YARN for executing a single job. Older versions only supported a long-running YARN session. The code of the YARN client has been refactored to provide an (internal) Java API for controlling YARN clusters more easily.
-`}),e.add({id:294,href:"/2015/01/21/apache-flink-0.8.0-available/",title:"Apache Flink 0.8.0 available",section:"Flink Blog",content:`We are pleased to announce the availability of Flink 0.8.0. This release includes new user-facing features as well as performance and bug fixes, extends the support for filesystems and introduces the Scala API and flexible windowing semantics for Flink Streaming. A total of 33 people have contributed to this release, a big thanks to all of them!
+`}),e.add({id:296,href:"/2015/01/21/apache-flink-0.8.0-available/",title:"Apache Flink 0.8.0 available",section:"Flink Blog",content:`We are pleased to announce the availability of Flink 0.8.0. This release includes new user-facing features as well as performance and bug fixes, extends the support for filesystems and introduces the Scala API and flexible windowing semantics for Flink Streaming. A total of 33 people have contributed to this release, a big thanks to all of them!
 Download Flink 0.8.0
 See the release changelog
 Overview of major new features # Extended filesystem support: The former DistributedFileSystem interface has been generalized to HadoopFileSystem now supporting all sub classes of org.apache.hadoop.fs.FileSystem. This allows users to use all file systems supported by Hadoop with Apache Flink. See connecting to other systems
@@ -5652,7 +5737,7 @@ Performance and usability improvements: The new Apache Flink 0.8.0 release bring
 Improved input split assignment which maximizes computation locality Smart broadcasting mechanism which minimizes network I/O Custom partitioners which let the user control how the data is partitioned within the cluster. This helps to prevent data skewness and allows to implement highly efficient algorithms. coGroup operator now supports group sorting for its inputs Kryo is the new fallback serializer: Apache Flink has a sophisticated type analysis and serialization framework that is abl [...]
 Hadoop 2.2.0+ is now the default Hadoop dependency: With Flink 0.8.0 we made the “hadoop2” build profile the default build for Flink. This means that all users using Hadoop 1 (0.2X or 1.2.X versions) have to specify version “0.8.0-hadoop1” in their pom files.
 HBase module updated The HBase version has been updated to 0.98.6.1. Also, Hbase is now available to the Hadoop1 and Hadoop2 profile of Flink.
-Contributors # Marton Balassi Daniel Bali Carsten Brandt Moritz Borgmann Stefan Bunk Paris Carbone Ufuk Celebi Nils Engelbach Stephan Ewen Gyula Fora Gabor Hermann Fabian Hueske Vasiliki Kalavri Johannes Kirschnick Aljoscha Krettek Suneel Marthi Robert Metzger Felix Neutatz Chiwan Park Flavio Pompermaier Mingliang Qi Shiva Teja Reddy Till Rohrmann Henry Saputra Kousuke Saruta Chesney Schepler Erich Schubert Peter Szabo Jonas Traub Kostas Tzoumas Timo Walther Daniel Warneke Chen Xu `}),e. [...]
+Contributors # Marton Balassi Daniel Bali Carsten Brandt Moritz Borgmann Stefan Bunk Paris Carbone Ufuk Celebi Nils Engelbach Stephan Ewen Gyula Fora Gabor Hermann Fabian Hueske Vasiliki Kalavri Johannes Kirschnick Aljoscha Krettek Suneel Marthi Robert Metzger Felix Neutatz Chiwan Park Flavio Pompermaier Mingliang Qi Shiva Teja Reddy Till Rohrmann Henry Saputra Kousuke Saruta Chesney Schepler Erich Schubert Peter Szabo Jonas Traub Kostas Tzoumas Timo Walther Daniel Warneke Chen Xu `}),e. [...]
 Flink graduation # The biggest news is that the Apache board approved Flink as a top-level Apache project! The Flink team is working closely with the Apache press team for an official announcement, so stay tuned for details!
 New Flink website # The Flink website got a total make-over, both in terms of appearance and content.
 Flink IRC channel # A new IRC channel called #flink was created at irc.freenode.org. An easy way to access the IRC channel is through the web client. Feel free to stop by to ask anything or share your ideas about Apache Flink!
@@ -5666,7 +5751,7 @@ Sorting of very large records # Flink&rsquo;s internal sort-algorithms were impr
 Kryo Serialization as the new default fallback # Flink’s build-in type serialization framework is handles all common types very efficiently. Prior versions uses Avro to serialize types that the built-in framework could not handle. Flink serialization system improved a lot over time and by now surpasses the capabilities of Avro in many cases. Kryo now serves as the default fallback serialization framework, supporting a much broader range of types.
 Hadoop FileSystem support # This change permits users to use all file systems supported by Hadoop with Flink. In practice this means that users can use Flink with Tachyon, Google Cloud Storage (also out of the box Flink YARN support on Google Compute Cloud), FTP and all the other file system implementations for Hadoop.
 Heading to the 0.8.0 release # The community is working hard together with the Apache infra team to migrate the Flink infrastructure to a top-level project. At the same time, the Flink community is working on the Flink 0.8.0 release which should be out very soon.
-`}),e.add({id:296,href:"/2014/11/18/hadoop-compatibility-in-flink/",title:"Hadoop Compatibility in Flink",section:"Flink Blog",content:`Apache Hadoop is an industry standard for scalable analytical data processing. Many data analysis applications have been implemented as Hadoop MapReduce jobs and run in clusters around the world. Apache Flink can be an alternative to MapReduce and improves it in many dimensions. Among other features, Flink provides much better performance and offers APIs [...]
+`}),e.add({id:298,href:"/2014/11/18/hadoop-compatibility-in-flink/",title:"Hadoop Compatibility in Flink",section:"Flink Blog",content:`Apache Hadoop is an industry standard for scalable analytical data processing. Many data analysis applications have been implemented as Hadoop MapReduce jobs and run in clusters around the world. Apache Flink can be an alternative to MapReduce and improves it in many dimensions. Among other features, Flink provides much better performance and offers APIs [...]
 Flink’s Hadoop Compatibility Package # To close this gap, Flink provides a Hadoop Compatibility package to wrap functions implemented against Hadoop’s MapReduce interfaces and embed them in Flink programs. This package was developed as part of a Google Summer of Code 2014 project.
 With the Hadoop Compatibility package, you can reuse all your Hadoop
 InputFormats (mapred and mapreduce APIs) OutputFormats (mapred and mapreduce APIs) Mappers (mapred API) Reducers (mapred API) in Flink programs without changing a line of code. Moreover, Flink also natively supports all Hadoop data types (Writables and WritableComparable).
@@ -5676,7 +5761,7 @@ Hadoop functions can be used at any position within a Flink program and of cours
 What comes next? # While the Hadoop compatibility package is already very useful, we are currently working on a dedicated Hadoop Job operation to embed and execute Hadoop jobs as a whole in Flink programs, including their custom partitioning, sorting, and grouping code. With this feature, you will be able to chain multiple Hadoop jobs, mix them with Flink functions, and other operations such as Spargel operations (Pregel/Giraph-style jobs).
 Summary # Flink lets you reuse a lot of the code you wrote for Hadoop MapReduce, including all data types, all Input- and OutputFormats, and Mapper and Reducers of the mapred-API. Hadoop functions can be used within Flink programs and mixed with all other Flink functions. Due to Flink’s pipelined execution, Hadoop functions can arbitrarily be assembled without data exchange via HDFS. Moreover, the Flink community is currently working on a dedicated Hadoop Job operation to supporting the  [...]
 If you want to use Flink’s Hadoop compatibility package checkout our documentation.
-`}),e.add({id:297,href:"/2014/11/04/apache-flink-0.7.0-available/",title:"Apache Flink 0.7.0 available",section:"Flink Blog",content:`We are pleased to announce the availability of Flink 0.7.0. This release includes new user-facing features as well as performance and bug fixes, brings the Scala and Java APIs in sync, and introduces Flink Streaming. A total of 34 people have contributed to this release, a big thanks to all of them!
+`}),e.add({id:299,href:"/2014/11/04/apache-flink-0.7.0-available/",title:"Apache Flink 0.7.0 available",section:"Flink Blog",content:`We are pleased to announce the availability of Flink 0.7.0. This release includes new user-facing features as well as performance and bug fixes, brings the Scala and Java APIs in sync, and introduces Flink Streaming. A total of 34 people have contributed to this release, a big thanks to all of them!
 Download Flink 0.7.0 here
 See the release changelog here
 Overview of major new features # Flink Streaming: The gem of the 0.7.0 release is undoubtedly Flink Streaming. Available currently in alpha, Flink Streaming provides a Java API on top of Apache Flink that can consume streaming data sources (e.g., from Apache Kafka, Apache Flume, and others) and process them in real time. A dedicated blog post on Flink Streaming and its performance is coming up here soon. You can check out the Streaming programming guide here.
@@ -5688,7 +5773,7 @@ Record API deprecated: The (old) Stratosphere Record API has been marked as depr
 BLOB service: This release contains a new service to distribute jar files and other binary data among the JobManager, TaskManagers and the client.
 Intermediate data sets: A major rewrite of the system internals introduces intermediate data sets as first class citizens. The internal state machine that tracks the distributed tasks has also been completely rewritten for scalability. While this is not visible as a user-facing feature yet, it is the foundation for several upcoming exciting features.
 Note: Currently, there is limited support for Java 8 lambdas when compiling and running from an IDE. The problem is due to type erasure and whether Java compilers retain type information. We are currently working with the Eclipse and OpenJDK communities to resolve this.
-Contributors # Tamas Ambrus Mariem Ayadi Marton Balassi Daniel Bali Ufuk Celebi Hung Chang David Eszes Stephan Ewen Judit Feher Gyula Fora Gabor Hermann Fabian Hueske Vasiliki Kalavri Kristof Kovacs Aljoscha Krettek Sebastian Kruse Sebastian Kunert Matyas Manninger Robert Metzger Mingliang Qi Till Rohrmann Henry Saputra Chesnay Schelper Moritz Schubotz Hung Sendoh Chang Peter Szabo Jonas Traub Fabian Tschirschnitz Artem Tsikiridis Kostas Tzoumas Timo Walther Daniel Warneke Tobias Wiens Y [...]
+Contributors # Tamas Ambrus Mariem Ayadi Marton Balassi Daniel Bali Ufuk Celebi Hung Chang David Eszes Stephan Ewen Judit Feher Gyula Fora Gabor Hermann Fabian Hueske Vasiliki Kalavri Kristof Kovacs Aljoscha Krettek Sebastian Kruse Sebastian Kunert Matyas Manninger Robert Metzger Mingliang Qi Till Rohrmann Henry Saputra Chesnay Schelper Moritz Schubotz Hung Sendoh Chang Peter Szabo Jonas Traub Fabian Tschirschnitz Artem Tsikiridis Kostas Tzoumas Timo Walther Daniel Warneke Tobias Wiens Y [...]
 We are looking forward to seeing you at any of these events. The following is an overview of each event and links to the respective Meetup pages.
 Flink Hackathon, Stockholm (Oct 8-9) # The hackathon will take place at KTH/SICS from Oct 8th-9th. You can sign up here: https://docs.google.com/spreadsheet/viewform?formkey=dDZnMlRtZHJ3Z0hVTlFZVjU2MWtoX0E6MA.
 Here is a rough agenda and a list of topics to work upon or look into. Suggestions and more topics are welcome.
@@ -5712,10 +5797,10 @@ http://www.meetup.com/stockholm-hug/events/207323222/
 http://www.meetup.com/Apache-Flink-Meetup/events/208227422/
 Meetup: Pasadena Big Data User Group (Oct 29) # http://www.meetup.com/Pasadena-Big-Data-Users-Group/
 Meetup: Silicon Valley Hands On Programming Events (Nov 4) # http://www.meetup.com/HandsOnProgrammingEvents/events/210504392/
-`}),e.add({id:299,href:"/2014/09/26/apache-flink-0.6.1-available/",title:"Apache Flink 0.6.1 available",section:"Flink Blog",content:`We are happy to announce the availability of Flink 0.6.1.
+`}),e.add({id:301,href:"/2014/09/26/apache-flink-0.6.1-available/",title:"Apache Flink 0.6.1 available",section:"Flink Blog",content:`We are happy to announce the availability of Flink 0.6.1.
 0.6.1 is a maintenance release, which includes minor fixes across several parts of the system. We suggest all users of Flink to work with this newest version.
 Download the release today.
-`}),e.add({id:300,href:"/2014/08/26/apache-flink-0.6-available/",title:"Apache Flink 0.6 available",section:"Flink Blog",content:`We are happy to announce the availability of Flink 0.6. This is the first release of the system inside the Apache Incubator and under the name Flink. Releases up to 0.5 were under the name Stratosphere, the academic and open source project that Flink originates from.
+`}),e.add({id:302,href:"/2014/08/26/apache-flink-0.6-available/",title:"Apache Flink 0.6 available",section:"Flink Blog",content:`We are happy to announce the availability of Flink 0.6. This is the first release of the system inside the Apache Incubator and under the name Flink. Releases up to 0.5 were under the name Stratosphere, the academic and open source project that Flink originates from.
 What is Flink? # Apache Flink is a general-purpose data processing engine for clusters. It runs on YARN clusters on top of data stored in Hadoop, as well as stand-alone. Flink currently has programming APIs in Java and Scala. Jobs are executed via Flink&rsquo;s own runtime engine. Flink features:
 Robust in-memory and out-of-core processing: once read, data stays in memory as much as possible, and is gracefully de-staged to disk in the presence of memory pressure from limited memory or other applications. The runtime is designed to perform very well both in setups with abundant memory and in setups where memory is scarce.
 POJO-based APIs: when programming, you do not have to pack your data into key-value pairs or some other framework-specific data model. Rather, you can use arbitrary Java and Scala types to model your data.
@@ -5725,7 +5810,7 @@ Data pipelining/streaming: Flink&rsquo;s runtime is designed as a pipelined data
 Release 0.6 # Flink 0.6 builds on the latest Stratosphere 0.5 release. It includes many bug fixes and improvements that make the system more stable and robust, as well as breaking API changes.
 The full release notes are available here.
 Download the release here.
-Contributors # Wilson Cao Ufuk Celebi Stephan Ewen Jonathan Hasenburg Markus Holzemer Fabian Hueske Sebastian Kunert Vikhyat Korrapati Aljoscha Krettek Sebastian Kruse Raymond Liu Robert Metzger Mingliang Qi Till Rohrmann Henry Saputra Chesnay Schepler Kostas Tzoumas Robert Waury Timo Walther Daniel Warneke Tobias Wiens `}),e.add({id:301,href:"/how-to-contribute/code-style-and-quality-common/",title:"Code Style and Quality Guide — Common Rules",section:"How to Contribute",content:` Code  [...]
+Contributors # Wilson Cao Ufuk Celebi Stephan Ewen Jonathan Hasenburg Markus Holzemer Fabian Hueske Sebastian Kunert Vikhyat Korrapati Aljoscha Krettek Sebastian Kruse Raymond Liu Robert Metzger Mingliang Qi Till Rohrmann Henry Saputra Chesnay Schepler Kostas Tzoumas Robert Waury Timo Walther Daniel Warneke Tobias Wiens `}),e.add({id:303,href:"/how-to-contribute/code-style-and-quality-common/",title:"Code Style and Quality Guide — Common Rules",section:"How to Contribute",content:` Code  [...]
 /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * &#34;License&#34;); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by [...]
 Warnings # We strive for zero warnings Even though there are many warnings in existing code, new changes should not add any additional compiler warnings If it is not possible to address the warning in a sane way (in some cases when working with generics) add an annotation to suppress the warning When deprecating methods, check that this does not introduce additional warnings 3. Comments And Code Readability # Comments # Golden rule: Comment as much as necessary to support code understand [...]
 Think about
@@ -5774,7 +5859,7 @@ Example of tests in Flink that follow this pattern are:
 https://github.com/apache/flink/blob/master/flink-core/src/test/java/org/apache/flink/util/LinkedOptionalMapTest.java https://github.com/apache/flink/blob/master/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/writer/RecoverableMultiPartUploadImplTest.java Avoid Mockito - Use reusable test implementations # Mockito-based tests tend to be costly to maintain in the long run by encouraging duplication of functionality and testing for implementation rather than [...]
 At the same time, any timeout value that you manually set is arbitrary. If it&rsquo;s set too low, you get test instabilities. What too low means depends on numerous factors, such as hardware and current utilization (especially I/O). Moreover, a local timeout is more maintenance-intensive. It&rsquo;s one more knob where you can tweak a build. If you change the test a bit, you also need to double-check the timeout. Hence, there have been quite a few commits that just increase timeouts.
 We are keeping such frameworks out of Flink, to make debugging easier and avoid dependency clashes.&#160;&#x21a9;&#xfe0e;
-`}),e.add({id:302,href:"/how-to-contribute/code-style-and-quality-components/",title:"Code Style and Quality Guide — Components Guide",section:"How to Contribute",content:` Code Style and Quality Guide — Components Guide # Preamble # Pull Requests &amp; Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # Component Specific Guidelines # Additional guidelines about changes in specific components.
+`}),e.add({id:304,href:"/how-to-contribute/code-style-and-quality-components/",title:"Code Style and Quality Guide — Components Guide",section:"How to Contribute",content:` Code Style and Quality Guide — Components Guide # Preamble # Pull Requests &amp; Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # Component Specific Guidelines # Additional guidelines about changes in specific components.
 Configuration Changes # Where should the config option go?
 ‘flink-conf.yaml’: All configuration that pertains to execution behavior that one may want to standardize across jobs. Think of it as parameters someone would set wearing an “ops” hat, or someone that provides a stream processing platform to other teams.
 ‘ExecutionConfig’: Parameters specific to an individual Flink application, needed by the operators during execution. Typical examples are watermark interval, serializer parameters, object reuse.
@@ -5798,7 +5883,7 @@ The Table API is an Embedded Domain Specific Language for analytical programs fo
 SQL natively supports NULL for almost every operation and has a 3-valued boolean logic. Make sure to test every feature for nullability as well. Avoid full integration tests
 Spawning a Flink mini-cluster and performing compilation of generated code for a SQL query is expensive. Avoid integration tests for planner tests or variations of API calls. Instead, use unit tests that validate the optimized plan which comes out of a planner. Or test the behavior of a runtime operator directly. Compatibility # Don’t introduce physical plan changes in patch releases!
 Backwards compatibility for state in streaming SQL relies on the fact that the physical execution plan remains stable. Otherwise the generated Operator Names/IDs change and state cannot be matched and restored. Every bug fix that leads to changes in the optimized physical plan of a streaming pipeline hences breaks compatibility. As a consequence, changes of the kind that lead to different optimizer plans can only be merged in major releases for now. Scala / Java interoperability (legacy  [...]
-Consider whether a class will need to interact with a Java class in the future. Use Java collections and Java Optional in interfaces for a smooth integration with Java code. Don’t use features of case classes such as .copy() or apply() for construction if a class is subjected to be converted to Java. Pure Scala user-facing APIs should use pure Scala collections/iterables/etc. for natural and idiomatic (“scalaesk”) integration with Scala. `}),e.add({id:303,href:"/how-to-contribute/code-st [...]
+Consider whether a class will need to interact with a Java class in the future. Use Java collections and Java Optional in interfaces for a smooth integration with Java code. Don’t use features of case classes such as .copy() or apply() for construction if a class is subjected to be converted to Java. Pure Scala user-facing APIs should use pure Scala collections/iterables/etc. for natural and idiomatic (“scalaesk”) integration with Scala. `}),e.add({id:305,href:"/how-to-contribute/code-st [...]
 License # Apache license headers. Make sure you have Apache License headers in your files. The RAT plugin is checking for that when you build the code. Imports # Empty line before and after package declaration. No unused imports. No redundant imports. No wildcard imports. They can cause problems when adding to the code and in some cases even during refactoring. Import order. Imports must be ordered alphabetically, grouped into the following blocks, with each block separated by an empty l [...]
 Two major sources of long lines are:
 Long list of arguments in function declaration or call: void func(type1 arg1, type2 arg2, ...) Long sequence of chained calls: list.stream().map(...).reduce(...).collect(...)... Rules about breaking the long lines:
@@ -5806,7 +5891,7 @@ Break the argument list or chain of calls if the line exceeds limit or earlier i
 The opening parenthesis always stays on the line of the parent function name The possible thrown exception list is never broken and stays on the same last line, even if the line length exceeds its limit The line of the function argument should end with a comma staying on the same line except the last argument Example of breaking the list of function arguments:
 public void func( int arg1, int arg2, ...) throws E1, E2, E3 { } The dot of a chained call is always on the line of that chained call proceeding the call at the beginning.
 Example of breaking the list of chained calls:
-values .stream() .map(...) .collect(...); Braces # Left curly braces ({) must not be placed on a new line. Right curly braces (}) must always be placed at the beginning of the line. Blocks. All statements after if, for, while, do, … must always be encapsulated in a block with curly braces (even if the block contains one statement). Javadocs # All public/protected methods and classes must have a Javadoc. The first sentence of the Javadoc must end with a period. Paragraphs must be separate [...]
+values .stream() .map(...) .collect(...); Braces # Left curly braces ({) must not be placed on a new line. Right curly braces (}) must always be placed at the beginning of the line. Blocks. All statements after if, for, while, do, … must always be encapsulated in a block with curly braces (even if the block contains one statement). Javadocs # All public/protected methods and classes must have a Javadoc. The first sentence of the Javadoc must end with a period. Paragraphs must be separate [...]
 Do not use Java Serialization for anything !!! !!!
 Do not use Java Serialization for anything !!! !!! !!!
 Internal to Flink, Java serialization is used to transport messages and programs through RPC. This is the only case where we use Java serialization. Because of that, some classes need to be serializable (if they are transported via RPC).
... 8130 lines suppressed ...