You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by gy...@apache.org on 2023/02/27 16:00:32 UTC
[flink-web] branch asf-site updated (cec309235 -> cd4d41e72)
This is an automated email from the ASF dual-hosted git repository.
gyfora pushed a change to branch asf-site
in repository https://gitbox.apache.org/repos/asf/flink-web.git
from cec309235 Rebuild website
new 8a73da9ff Kubernetes Operator 1.4.0 blogpost
new cd4d41e72 Rebuild website
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../08/26/apache-flink-0.6-available/index.html | 5 +-
.../09/26/apache-flink-0.6.1-available/index.html | 5 +-
content/2014/10/03/upcoming-events/index.html | 5 +-
.../11/04/apache-flink-0.7.0-available/index.html | 5 +-
.../11/18/hadoop-compatibility-in-flink/index.html | 11 +-
.../index.html | 5 +-
.../01/21/apache-flink-0.8.0-available/index.html | 5 +-
.../january-2015-in-the-flink-community/index.html | 5 +-
.../02/09/introducing-flink-streaming/index.html | 67 +--
.../index.html | 5 +-
.../index.html | 5 +-
.../march-2015-in-the-flink-community/index.html | 5 +-
.../index.html | 5 +-
.../05/11/juggling-with-bits-and-bytes/index.html | 5 +-
.../april-2015-in-the-flink-community/index.html | 5 +-
.../06/24/announcing-apache-flink-0.9.0/index.html | 5 +-
.../index.html | 15 +-
.../09/01/apache-flink-0.9.1-available/index.html | 5 +-
.../09/03/announcing-flink-forward-2015/index.html | 5 +-
.../index.html | 5 +-
.../16/announcing-apache-flink-0.10.0/index.html | 5 +-
.../2015/11/27/flink-0.10.1-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 11 +-
.../index.html | 5 +-
.../2016/02/11/flink-0.10.2-released/index.html | 5 +-
.../03/08/announcing-apache-flink-1.0.0/index.html | 5 +-
content/2016/04/06/flink-1.0.1-released/index.html | 5 +-
.../index.html | 11 +-
.../index.html | 5 +-
content/2016/04/22/flink-1.0.2-released/index.html | 5 +-
content/2016/05/11/flink-1.0.3-released/index.html | 5 +-
.../index.html | 5 +-
.../08/04/announcing-apache-flink-1.1.0/index.html | 9 +-
content/2016/08/04/flink-1.1.1-released/index.html | 5 +-
.../index.html | 5 +-
.../09/05/apache-flink-1.1.2-released/index.html | 5 +-
.../10/12/apache-flink-1.1.3-released/index.html | 5 +-
.../apache-flink-in-2016-year-in-review/index.html | 5 +-
.../12/21/apache-flink-1.1.4-released/index.html | 5 +-
.../02/06/announcing-apache-flink-1.2.0/index.html | 5 +-
.../03/23/apache-flink-1.1.5-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../04/26/apache-flink-1.2.1-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../06/23/apache-flink-1.3.1-released/index.html | 5 +-
.../index.html | 5 +-
.../08/05/apache-flink-1.3.2-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../apache-flink-in-2017-year-in-review/index.html | 5 +-
.../index.html | 5 +-
.../02/15/apache-flink-1.4.1-released/index.html | 5 +-
.../index.html | 5 +-
.../03/08/apache-flink-1.4.2-released/index.html | 5 +-
.../03/15/apache-flink-1.3.3-released/index.html | 5 +-
.../index.html | 5 +-
.../07/12/apache-flink-1.5.1-released/index.html | 5 +-
.../07/31/apache-flink-1.5.2-released/index.html | 5 +-
.../index.html | 5 +-
.../08/21/apache-flink-1.5.3-released/index.html | 5 +-
.../09/20/apache-flink-1.5.4-released/index.html | 5 +-
.../09/20/apache-flink-1.6.1-released/index.html | 5 +-
.../10/29/apache-flink-1.5.5-released/index.html | 5 +-
.../10/29/apache-flink-1.6.2-released/index.html | 5 +-
.../index.html | 5 +-
.../12/21/apache-flink-1.7.1-released/index.html | 5 +-
.../12/22/apache-flink-1.6.3-released/index.html | 5 +-
.../12/26/apache-flink-1.5.6-released/index.html | 5 +-
.../index.html | 5 +-
.../02/15/apache-flink-1.7.2-released/index.html | 5 +-
.../index.html | 5 +-
.../02/25/apache-flink-1.6.4-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../03/when-flink-pulsar-come-together/index.html | 9 +-
.../index.html | 15 +-
.../index.html | 15 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../07/02/apache-flink-1.8.1-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../flink-community-update-september19/index.html | 5 +-
.../09/11/apache-flink-1.8.2-released/index.html | 5 +-
.../index.html | 5 +-
.../10/18/apache-flink-1.9.1-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 11 +-
.../12/11/apache-flink-1.8.3-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 9 +-
.../01/30/apache-flink-1.9.2-released/index.html | 5 +-
.../index.html | 29 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../30/flink-community-update-april20/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 9 +-
.../index.html | 5 +-
.../04/24/apache-flink-1.9.3-released/index.html | 5 +-
.../index.html | 5 +-
.../05/06/flink-community-update-may20/index.html | 5 +-
.../05/12/apache-flink-1.10.1-released/index.html | 5 +-
.../index.html | 7 +-
.../06/10/flink-community-update-june20/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../07/21/apache-flink-1.11.1-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../07/29/flink-community-update-july20/index.html | 5 +-
.../index.html | 7 +-
.../index.html | 5 +-
.../index.html | 15 +-
.../index.html | 5 +-
.../08/20/the-state-of-flink-on-docker/index.html | 5 +-
.../08/25/apache-flink-1.10.2-released/index.html | 5 +-
.../index.html | 5 +-
.../04/flink-community-update-august20/index.html | 5 +-
.../09/17/apache-flink-1.11.2-released/index.html | 5 +-
.../index.html | 7 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../12/18/apache-flink-1.11.3-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../01/19/apache-flink-1.12.1-released/index.html | 5 +-
.../01/29/apache-flink-1.10.3-released/index.html | 5 +-
.../index.html | 5 +-
.../03/03/apache-flink-1.12.2-released/index.html | 5 +-
.../index.html | 23 +-
.../index.html | 9 +-
.../04/29/apache-flink-1.12.3-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../05/21/apache-flink-1.12.4-released/index.html | 5 +-
.../05/28/apache-flink-1.13.1-released/index.html | 5 +-
.../index.html | 5 +-
.../08/06/apache-flink-1.12.5-released/index.html | 5 +-
.../08/06/apache-flink-1.13.2-released/index.html | 5 +-
.../08/09/apache-flink-1.11.4-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 11 +-
.../index.html | 5 +-
.../10/19/apache-flink-1.13.3-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../01/20/pravega-flink-connector-101/index.html | 11 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../02/22/scala-free-in-one-fifteen/index.html | 5 +-
.../index.html | 5 +-
.../the-generic-asynchronous-base-sink/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../08/regarding-akkas-licensing-change/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 17 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 144 ++++--
content/404.html | 3 +-
content/categories/index.html | 5 +-
content/community/index.html | 5 +-
.../flink-kubernetes-operator-master/index.html | 5 +-
.../flink-kubernetes-operator-stable/index.html | 5 +-
content/documentation/flink-master/index.html | 5 +-
content/documentation/flink-stable/index.html | 5 +-
.../flink-stateful-functions-master/index.html | 5 +-
.../flink-stateful-functions-stable/index.html | 5 +-
.../flink-table-store-master/index.html | 5 +-
.../flink-table-store-stable/index.html | 5 +-
content/documentation/flinkml-master/index.html | 5 +-
content/documentation/flinkml-stable/index.html | 5 +-
content/documentation/index.html | 5 +-
content/downloads/index.html | 5 +-
...2f643c81f3c8d94c73c03f91a221221f4724d197408.js} | 537 +++++++++++----------
...bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js} | 2 +-
content/en/sitemap.xml | 11 +-
content/flink-packages/index.html | 5 +-
content/getting-help/index.html | 5 +-
content/getting-started/index.html | 5 +-
content/getting-started/training-course/index.html | 5 +-
.../with-flink-kubernetes-operator/index.html | 5 +-
content/getting-started/with-flink-ml/index.html | 5 +-
.../with-flink-stateful-functions/index.html | 5 +-
.../with-flink-table-store/index.html | 5 +-
content/getting-started/with-flink/index.html | 5 +-
.../code-style-and-quality-common/index.html | 13 +-
.../code-style-and-quality-components/index.html | 5 +-
.../code-style-and-quality-formatting/index.html | 5 +-
.../code-style-and-quality-java/index.html | 5 +-
.../code-style-and-quality-preamble/index.html | 5 +-
.../index.html | 5 +-
.../code-style-and-quality-scala/index.html | 5 +-
.../how-to-contribute/contribute-code/index.html | 5 +-
.../contribute-documentation/index.html | 5 +-
.../documentation-style-guide/index.html | 5 +-
.../how-to-contribute/improve-website/index.html | 5 +-
content/how-to-contribute/index.html | 5 +-
content/how-to-contribute/overview/index.html | 5 +-
content/how-to-contribute/reviewing-prs/index.html | 5 +-
.../autoscaler_fig1.png | Bin 0 -> 168727 bytes
.../autoscaler_fig2.png | Bin 0 -> 181157 bytes
.../autoscaler_fig3.png | Bin 0 -> 178610 bytes
content/index.html | 19 +-
content/index.xml | 12 +-
content/material/index.html | 5 +-
.../02/27/release-kubernetes-operator-1.4.0.html | 10 +
content/posts/index.html | 71 ++-
content/posts/index.xml | 12 +-
content/posts/page/10/index.html | 59 ++-
content/posts/page/11/index.html | 59 ++-
content/posts/page/12/index.html | 65 +--
content/posts/page/13/index.html | 65 ++-
content/posts/page/14/index.html | 58 ++-
content/posts/page/15/index.html | 57 ++-
content/posts/page/16/index.html | 56 ++-
content/posts/page/17/index.html | 55 ++-
content/posts/page/18/index.html | 53 +-
content/posts/page/19/index.html | 50 +-
content/posts/page/2/index.html | 61 ++-
content/posts/page/20/index.html | 51 +-
content/posts/page/21/index.html | 33 +-
content/posts/page/3/index.html | 62 +--
content/posts/page/4/index.html | 72 +--
content/posts/page/5/index.html | 74 +--
content/posts/page/6/index.html | 69 +--
content/posts/page/7/index.html | 70 +--
content/posts/page/8/index.html | 66 +--
content/posts/page/9/index.html | 61 ++-
content/powered-by/index.html | 5 +-
content/roadmap/index.html | 5 +-
content/security/index.html | 5 +-
content/sitemap.xml | 2 +-
content/tags/index.html | 5 +-
content/use-cases/index.html | 5 +-
content/what-is-flink-ml/index.html | 5 +-
content/what-is-flink-table-store/index.html | 5 +-
.../what-is-flink/flink-applications/index.html | 13 +-
.../what-is-flink/flink-architecture/index.html | 5 +-
content/what-is-flink/flink-operations/index.html | 5 +-
content/what-is-flink/index.html | 5 +-
content/what-is-stateful-functions/index.html | 5 +-
.../index.html | 5 +-
...8820766134196a4f0b43f9ef28d7399d9df0eb8fa08.js} | 4 +-
...1c1bca3e4a11e71fbd20023ef15cc39d239e22a26a2.js} | 2 +-
content/zh/404.html | 3 +-
content/zh/categories/index.html | 5 +-
content/zh/community/index.html | 5 +-
.../flink-kubernetes-operator-master/index.html | 5 +-
.../flink-kubernetes-operator-stable/index.html | 5 +-
content/zh/documentation/flink-master/index.html | 5 +-
content/zh/documentation/flink-stable/index.html | 5 +-
.../flink-stateful-functions-master/index.html | 5 +-
.../flink-stateful-functions-stable/index.html | 5 +-
.../flink-table-store-master/index.html | 5 +-
.../flink-table-store-stable/index.html | 5 +-
content/zh/documentation/flinkml-master/index.html | 5 +-
content/zh/documentation/flinkml-stable/index.html | 5 +-
content/zh/documentation/index.html | 5 +-
content/zh/downloads/index.html | 5 +-
content/zh/flink-packages/index.html | 5 +-
content/zh/getting-help/index.html | 5 +-
content/zh/getting-started/index.html | 5 +-
.../zh/getting-started/training-course/index.html | 5 +-
.../with-flink-kubernetes-operator/index.html | 5 +-
.../zh/getting-started/with-flink-ml/index.html | 5 +-
.../with-flink-stateful-functions/index.html | 5 +-
.../with-flink-table-store/index.html | 5 +-
content/zh/getting-started/with-flink/index.html | 5 +-
.../code-style-and-quality-common/index.html | 13 +-
.../code-style-and-quality-components/index.html | 5 +-
.../code-style-and-quality-formatting/index.html | 5 +-
.../code-style-and-quality-java/index.html | 5 +-
.../code-style-and-quality-preamble/index.html | 5 +-
.../index.html | 5 +-
.../code-style-and-quality-scala/index.html | 5 +-
.../how-to-contribute/contribute-code/index.html | 5 +-
.../contribute-documentation/index.html | 5 +-
.../documentation-style-guide/index.html | 5 +-
.../how-to-contribute/improve-website/index.html | 5 +-
content/zh/how-to-contribute/index.html | 5 +-
content/zh/how-to-contribute/overview/index.html | 5 +-
.../zh/how-to-contribute/reviewing-prs/index.html | 5 +-
content/zh/index.html | 21 +-
content/zh/material/index.html | 5 +-
content/zh/powered-by/index.html | 5 +-
content/zh/roadmap/index.html | 5 +-
content/zh/security/index.html | 5 +-
content/zh/tags/index.html | 5 +-
content/zh/use-cases/index.html | 5 +-
content/zh/what-is-flink-ml/index.html | 5 +-
content/zh/what-is-flink-table-store/index.html | 5 +-
.../zh/what-is-flink/flink-applications/index.html | 13 +-
.../zh/what-is-flink/flink-architecture/index.html | 5 +-
.../zh/what-is-flink/flink-operations/index.html | 5 +-
content/zh/what-is-flink/index.html | 5 +-
content/zh/what-is-stateful-functions/index.html | 5 +-
.../index.html | 5 +-
...2023-02-27-release-kubernetes-operator-1.4.0.md | 103 ++++
.../autoscaler_fig1.png | Bin 0 -> 168727 bytes
.../autoscaler_fig2.png | Bin 0 -> 181157 bytes
.../autoscaler_fig3.png | Bin 0 -> 178610 bytes
353 files changed, 2345 insertions(+), 1612 deletions(-)
copy content/2023/{01/10/apache-flink-kubernetes-operator-1.3.1-release-announcement => 02/27/apache-flink-kubernetes-operator-1.4.0-release-announcement}/index.html (71%)
rename content/{en.search-data.min.f74046b726c67d0a9d373a886282e5421ed4698e80488f1cfdee3ce66c8ffd9d.js => en.search-data.min.6931d5558efb88aa02a322f643c81f3c8d94c73c03f91a221221f4724d197408.js} (97%)
rename content/{en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js => en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js} (84%)
create mode 100644 content/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig1.png
create mode 100644 content/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig2.png
create mode 100644 content/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig3.png
create mode 100644 content/news/2023/02/27/release-kubernetes-operator-1.4.0.html
rename content/{zh.search-data.min.81f5a15c5bab0196f2d21293726dc30abd11273fcf65abe6365dcbd75fbc91e6.js => zh.search-data.min.2791596a4008718f63ac18820766134196a4f0b43f9ef28d7399d9df0eb8fa08.js} (99%)
rename content/{zh.search.min.8065de7115e681b8cf1fb3d1702568825fd8449f56a13136ac78418dd2fe7868.js => zh.search.min.22d91e2463784db57e4951c1bca3e4a11e71fbd20023ef15cc39d239e22a26a2.js} (84%)
create mode 100644 docs/content/posts/2023-02-27-release-kubernetes-operator-1.4.0.md
create mode 100644 docs/static/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig1.png
create mode 100644 docs/static/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig2.png
create mode 100644 docs/static/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig3.png
[flink-web] 01/02: Kubernetes Operator 1.4.0 blogpost
Posted by gy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
gyfora pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/flink-web.git
commit 8a73da9ffd1f88dc11298dbb2efe68dfaee22cd9
Author: Gyula Fora <g_...@apple.com>
AuthorDate: Fri Feb 24 14:38:37 2023 +0100
Kubernetes Operator 1.4.0 blogpost
---
...2023-02-27-release-kubernetes-operator-1.4.0.md | 103 +++++++++++++++++++++
.../autoscaler_fig1.png | Bin 0 -> 168727 bytes
.../autoscaler_fig2.png | Bin 0 -> 181157 bytes
.../autoscaler_fig3.png | Bin 0 -> 178610 bytes
4 files changed, 103 insertions(+)
diff --git a/docs/content/posts/2023-02-27-release-kubernetes-operator-1.4.0.md b/docs/content/posts/2023-02-27-release-kubernetes-operator-1.4.0.md
new file mode 100644
index 000000000..007a0934a
--- /dev/null
+++ b/docs/content/posts/2023-02-27-release-kubernetes-operator-1.4.0.md
@@ -0,0 +1,103 @@
+---
+title: "Apache Flink Kubernetes Operator 1.4.0 Release Announcement"
+date: "2023-02-27T08:00:00.000Z"
+authors:
+- gyfora:
+ name: "Gyula Fora"
+ twitter: "GyulaFora"
+- mxm:
+ name: "Maximilian Michels"
+ twitter: "stadtlegende"
+- morhidi:
+ name: "Matyas Orhidi"
+ twitter: "matyasorhidi"
+aliases:
+- /news/2023/02/27/release-kubernetes-operator-1.4.0.html
+---
+
+We are proud to announce the latest stable release of the operator. In addition to the expected stability improvements and fixes, the 1.4.0 release introduces the first version of the long-awaited autoscaler module.
+
+## 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](https://cwiki.apache.org/confluence/display/FLINK/FLIP-271%3A+Autoscaling) 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](https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-release-1.4/docs/custom-resource/autoscaler/).
+
+### Overview
+
+The autoscaler uses Flink task metrics to effectively and independently scale the job vertices of the streaming pipeline. This removes backpressure from the job to ensure an optimal flow of data at the lowest possible resource usage. All kind of jobs, including SQL jobs, can be scaled with this method.
+
+The approach is based on [Three steps is all you need: fast, accurate, automatic scaling decisions for distributed streaming dataflows](https://www.usenix.org/system/files/osdi18-kalavri.pdf) by Kalavri et al. Shoutout to our fellow Flink community member and committer Vasiliki Kalavri!
+The used metrics include:
+Source metrics:
+- number of pending records (source only)
+- number of partitions (source only)
+- ingestion rate (source only)
+- processing rate
+- time spent processing (utilization)
+The algorithm starts from the sources and recursively computes the required processing capacity for each operator in the pipeline. At the source vertices, target data rate (processing capacity) is equal to the data rate in Kafka.
+
+For other operators we compute it as the sum of the input (upstream) operators output data rate.
+
+<p align="center">
+<img src="/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig1.png" width="70%" height="70%">
+</p>
+
+Users configure the target utilization percentage of the operators in the pipeline, e.g. keep the all operators between 60% - 80% busy. The autoscaler then finds a configuration such that the output rates of all operators match the input rates of all their downstream operators at the targeted utilization.
+
+In this example we see an upscale operation:
+
+<p align="center">
+<img src="/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig2.png" width="70%" height="70%">
+</p>
+
+Similarly as load decreases, the autoscaler adjusts individual operator parallelism levels to match the current rate over time.
+
+<p align="center">
+<img src="/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig3.png" width="70%" height="70%">
+</p>
+
+The operator reports detailed JobVertex level metrics about the evaluated Flink job metrics that are collected and used in the scaling decision.
+This includes:
+
+ * Utilization, input rate, target rate metrics
+ * Scaling thresholds
+ * Parallelism and max parallelism changes over time
+
+These metrics are reported under the Kubernetes Operator Resource metric group:
+
+```
+[resource_prefix].Autoscaler.[jobVertexID].[ScalingMetric].Current/Average
+```
+
+### Limitations
+
+While we are very happy with the progress we have made in the last few months, the autoscaler is still in an early stage of development.
+We rely on users to share feedback so we can improve and make this a very robust component.
+
+ - The autoscaler currently requires Flink 1.17
+ - Source scaling requires the standard connector metrics, currently works best with Kafka sources
+
+## Zookeeper HA Support
+
+Until now the operator only integrated with the Flink Kubernetes HA mechanism for last-state and other types of application upgrades. 1.4.0 adds support for the Zookeeper HA storage as well.
+
+While Zookeper is a slightly older solution, many users are still using it for HA metadata even in the Kubernetes world.
+
+## Release Resources
+The source artifacts and helm chart are available on the Downloads page of the Flink website. You can easily try out the new features shipped in the official 1.4.0 release by adding the Helm chart to your own local registry:
+
+```
+$ 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](https://hub.docker.com/r/apache/flink-kubernetes-operator).
+
+For more details, check the [updated documentation](https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-release-1.4/) 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
diff --git a/docs/static/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig1.png b/docs/static/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig1.png
new file mode 100644
index 000000000..5cb372220
Binary files /dev/null and b/docs/static/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig1.png differ
diff --git a/docs/static/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig2.png b/docs/static/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig2.png
new file mode 100644
index 000000000..9047e96c2
Binary files /dev/null and b/docs/static/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig2.png differ
diff --git a/docs/static/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig3.png b/docs/static/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig3.png
new file mode 100644
index 000000000..739c84f01
Binary files /dev/null and b/docs/static/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig3.png differ
[flink-web] 02/02: Rebuild website
Posted by gy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
gyfora pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/flink-web.git
commit cd4d41e72f5cc8a2fb756cec89bcf6230b9d2989
Author: Gyula Fora <g_...@apple.com>
AuthorDate: Mon Feb 27 16:24:30 2023 +0100
Rebuild website
---
.../08/26/apache-flink-0.6-available/index.html | 5 +-
.../09/26/apache-flink-0.6.1-available/index.html | 5 +-
content/2014/10/03/upcoming-events/index.html | 5 +-
.../11/04/apache-flink-0.7.0-available/index.html | 5 +-
.../11/18/hadoop-compatibility-in-flink/index.html | 11 +-
.../index.html | 5 +-
.../01/21/apache-flink-0.8.0-available/index.html | 5 +-
.../january-2015-in-the-flink-community/index.html | 5 +-
.../02/09/introducing-flink-streaming/index.html | 67 +--
.../index.html | 5 +-
.../index.html | 5 +-
.../march-2015-in-the-flink-community/index.html | 5 +-
.../index.html | 5 +-
.../05/11/juggling-with-bits-and-bytes/index.html | 5 +-
.../april-2015-in-the-flink-community/index.html | 5 +-
.../06/24/announcing-apache-flink-0.9.0/index.html | 5 +-
.../index.html | 15 +-
.../09/01/apache-flink-0.9.1-available/index.html | 5 +-
.../09/03/announcing-flink-forward-2015/index.html | 5 +-
.../index.html | 5 +-
.../16/announcing-apache-flink-0.10.0/index.html | 5 +-
.../2015/11/27/flink-0.10.1-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 11 +-
.../index.html | 5 +-
.../2016/02/11/flink-0.10.2-released/index.html | 5 +-
.../03/08/announcing-apache-flink-1.0.0/index.html | 5 +-
content/2016/04/06/flink-1.0.1-released/index.html | 5 +-
.../index.html | 11 +-
.../index.html | 5 +-
content/2016/04/22/flink-1.0.2-released/index.html | 5 +-
content/2016/05/11/flink-1.0.3-released/index.html | 5 +-
.../index.html | 5 +-
.../08/04/announcing-apache-flink-1.1.0/index.html | 9 +-
content/2016/08/04/flink-1.1.1-released/index.html | 5 +-
.../index.html | 5 +-
.../09/05/apache-flink-1.1.2-released/index.html | 5 +-
.../10/12/apache-flink-1.1.3-released/index.html | 5 +-
.../apache-flink-in-2016-year-in-review/index.html | 5 +-
.../12/21/apache-flink-1.1.4-released/index.html | 5 +-
.../02/06/announcing-apache-flink-1.2.0/index.html | 5 +-
.../03/23/apache-flink-1.1.5-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../04/26/apache-flink-1.2.1-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../06/23/apache-flink-1.3.1-released/index.html | 5 +-
.../index.html | 5 +-
.../08/05/apache-flink-1.3.2-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../apache-flink-in-2017-year-in-review/index.html | 5 +-
.../index.html | 5 +-
.../02/15/apache-flink-1.4.1-released/index.html | 5 +-
.../index.html | 5 +-
.../03/08/apache-flink-1.4.2-released/index.html | 5 +-
.../03/15/apache-flink-1.3.3-released/index.html | 5 +-
.../index.html | 5 +-
.../07/12/apache-flink-1.5.1-released/index.html | 5 +-
.../07/31/apache-flink-1.5.2-released/index.html | 5 +-
.../index.html | 5 +-
.../08/21/apache-flink-1.5.3-released/index.html | 5 +-
.../09/20/apache-flink-1.5.4-released/index.html | 5 +-
.../09/20/apache-flink-1.6.1-released/index.html | 5 +-
.../10/29/apache-flink-1.5.5-released/index.html | 5 +-
.../10/29/apache-flink-1.6.2-released/index.html | 5 +-
.../index.html | 5 +-
.../12/21/apache-flink-1.7.1-released/index.html | 5 +-
.../12/22/apache-flink-1.6.3-released/index.html | 5 +-
.../12/26/apache-flink-1.5.6-released/index.html | 5 +-
.../index.html | 5 +-
.../02/15/apache-flink-1.7.2-released/index.html | 5 +-
.../index.html | 5 +-
.../02/25/apache-flink-1.6.4-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../03/when-flink-pulsar-come-together/index.html | 9 +-
.../index.html | 15 +-
.../index.html | 15 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../07/02/apache-flink-1.8.1-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../flink-community-update-september19/index.html | 5 +-
.../09/11/apache-flink-1.8.2-released/index.html | 5 +-
.../index.html | 5 +-
.../10/18/apache-flink-1.9.1-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 11 +-
.../12/11/apache-flink-1.8.3-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 9 +-
.../01/30/apache-flink-1.9.2-released/index.html | 5 +-
.../index.html | 29 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../30/flink-community-update-april20/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 9 +-
.../index.html | 5 +-
.../04/24/apache-flink-1.9.3-released/index.html | 5 +-
.../index.html | 5 +-
.../05/06/flink-community-update-may20/index.html | 5 +-
.../05/12/apache-flink-1.10.1-released/index.html | 5 +-
.../index.html | 7 +-
.../06/10/flink-community-update-june20/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../07/21/apache-flink-1.11.1-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../07/29/flink-community-update-july20/index.html | 5 +-
.../index.html | 7 +-
.../index.html | 5 +-
.../index.html | 15 +-
.../index.html | 5 +-
.../08/20/the-state-of-flink-on-docker/index.html | 5 +-
.../08/25/apache-flink-1.10.2-released/index.html | 5 +-
.../index.html | 5 +-
.../04/flink-community-update-august20/index.html | 5 +-
.../09/17/apache-flink-1.11.2-released/index.html | 5 +-
.../index.html | 7 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../12/18/apache-flink-1.11.3-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../01/19/apache-flink-1.12.1-released/index.html | 5 +-
.../01/29/apache-flink-1.10.3-released/index.html | 5 +-
.../index.html | 5 +-
.../03/03/apache-flink-1.12.2-released/index.html | 5 +-
.../index.html | 23 +-
.../index.html | 9 +-
.../04/29/apache-flink-1.12.3-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../05/21/apache-flink-1.12.4-released/index.html | 5 +-
.../05/28/apache-flink-1.13.1-released/index.html | 5 +-
.../index.html | 5 +-
.../08/06/apache-flink-1.12.5-released/index.html | 5 +-
.../08/06/apache-flink-1.13.2-released/index.html | 5 +-
.../08/09/apache-flink-1.11.4-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 11 +-
.../index.html | 5 +-
.../10/19/apache-flink-1.13.3-released/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../01/20/pravega-flink-connector-101/index.html | 11 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../02/22/scala-free-in-one-fifteen/index.html | 5 +-
.../index.html | 5 +-
.../the-generic-asynchronous-base-sink/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../08/regarding-akkas-licensing-change/index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 17 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 5 +-
.../index.html | 144 ++++--
content/404.html | 3 +-
content/categories/index.html | 5 +-
content/community/index.html | 5 +-
.../flink-kubernetes-operator-master/index.html | 5 +-
.../flink-kubernetes-operator-stable/index.html | 5 +-
content/documentation/flink-master/index.html | 5 +-
content/documentation/flink-stable/index.html | 5 +-
.../flink-stateful-functions-master/index.html | 5 +-
.../flink-stateful-functions-stable/index.html | 5 +-
.../flink-table-store-master/index.html | 5 +-
.../flink-table-store-stable/index.html | 5 +-
content/documentation/flinkml-master/index.html | 5 +-
content/documentation/flinkml-stable/index.html | 5 +-
content/documentation/index.html | 5 +-
content/downloads/index.html | 5 +-
...2f643c81f3c8d94c73c03f91a221221f4724d197408.js} | 537 +++++++++++----------
...bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js} | 2 +-
content/en/sitemap.xml | 11 +-
content/flink-packages/index.html | 5 +-
content/getting-help/index.html | 5 +-
content/getting-started/index.html | 5 +-
content/getting-started/training-course/index.html | 5 +-
.../with-flink-kubernetes-operator/index.html | 5 +-
content/getting-started/with-flink-ml/index.html | 5 +-
.../with-flink-stateful-functions/index.html | 5 +-
.../with-flink-table-store/index.html | 5 +-
content/getting-started/with-flink/index.html | 5 +-
.../code-style-and-quality-common/index.html | 13 +-
.../code-style-and-quality-components/index.html | 5 +-
.../code-style-and-quality-formatting/index.html | 5 +-
.../code-style-and-quality-java/index.html | 5 +-
.../code-style-and-quality-preamble/index.html | 5 +-
.../index.html | 5 +-
.../code-style-and-quality-scala/index.html | 5 +-
.../how-to-contribute/contribute-code/index.html | 5 +-
.../contribute-documentation/index.html | 5 +-
.../documentation-style-guide/index.html | 5 +-
.../how-to-contribute/improve-website/index.html | 5 +-
content/how-to-contribute/index.html | 5 +-
content/how-to-contribute/overview/index.html | 5 +-
content/how-to-contribute/reviewing-prs/index.html | 5 +-
.../autoscaler_fig1.png | Bin 0 -> 168727 bytes
.../autoscaler_fig2.png | Bin 0 -> 181157 bytes
.../autoscaler_fig3.png | Bin 0 -> 178610 bytes
content/index.html | 19 +-
content/index.xml | 12 +-
content/material/index.html | 5 +-
.../02/27/release-kubernetes-operator-1.4.0.html | 10 +
content/posts/index.html | 71 ++-
content/posts/index.xml | 12 +-
content/posts/page/10/index.html | 59 ++-
content/posts/page/11/index.html | 59 ++-
content/posts/page/12/index.html | 65 +--
content/posts/page/13/index.html | 65 ++-
content/posts/page/14/index.html | 58 ++-
content/posts/page/15/index.html | 57 ++-
content/posts/page/16/index.html | 56 ++-
content/posts/page/17/index.html | 55 ++-
content/posts/page/18/index.html | 53 +-
content/posts/page/19/index.html | 50 +-
content/posts/page/2/index.html | 61 ++-
content/posts/page/20/index.html | 51 +-
content/posts/page/21/index.html | 33 +-
content/posts/page/3/index.html | 62 +--
content/posts/page/4/index.html | 72 +--
content/posts/page/5/index.html | 74 +--
content/posts/page/6/index.html | 69 +--
content/posts/page/7/index.html | 70 +--
content/posts/page/8/index.html | 66 +--
content/posts/page/9/index.html | 61 ++-
content/powered-by/index.html | 5 +-
content/roadmap/index.html | 5 +-
content/security/index.html | 5 +-
content/sitemap.xml | 2 +-
content/tags/index.html | 5 +-
content/use-cases/index.html | 5 +-
content/what-is-flink-ml/index.html | 5 +-
content/what-is-flink-table-store/index.html | 5 +-
.../what-is-flink/flink-applications/index.html | 13 +-
.../what-is-flink/flink-architecture/index.html | 5 +-
content/what-is-flink/flink-operations/index.html | 5 +-
content/what-is-flink/index.html | 5 +-
content/what-is-stateful-functions/index.html | 5 +-
.../index.html | 5 +-
...8820766134196a4f0b43f9ef28d7399d9df0eb8fa08.js} | 4 +-
...1c1bca3e4a11e71fbd20023ef15cc39d239e22a26a2.js} | 2 +-
content/zh/404.html | 3 +-
content/zh/categories/index.html | 5 +-
content/zh/community/index.html | 5 +-
.../flink-kubernetes-operator-master/index.html | 5 +-
.../flink-kubernetes-operator-stable/index.html | 5 +-
content/zh/documentation/flink-master/index.html | 5 +-
content/zh/documentation/flink-stable/index.html | 5 +-
.../flink-stateful-functions-master/index.html | 5 +-
.../flink-stateful-functions-stable/index.html | 5 +-
.../flink-table-store-master/index.html | 5 +-
.../flink-table-store-stable/index.html | 5 +-
content/zh/documentation/flinkml-master/index.html | 5 +-
content/zh/documentation/flinkml-stable/index.html | 5 +-
content/zh/documentation/index.html | 5 +-
content/zh/downloads/index.html | 5 +-
content/zh/flink-packages/index.html | 5 +-
content/zh/getting-help/index.html | 5 +-
content/zh/getting-started/index.html | 5 +-
.../zh/getting-started/training-course/index.html | 5 +-
.../with-flink-kubernetes-operator/index.html | 5 +-
.../zh/getting-started/with-flink-ml/index.html | 5 +-
.../with-flink-stateful-functions/index.html | 5 +-
.../with-flink-table-store/index.html | 5 +-
content/zh/getting-started/with-flink/index.html | 5 +-
.../code-style-and-quality-common/index.html | 13 +-
.../code-style-and-quality-components/index.html | 5 +-
.../code-style-and-quality-formatting/index.html | 5 +-
.../code-style-and-quality-java/index.html | 5 +-
.../code-style-and-quality-preamble/index.html | 5 +-
.../index.html | 5 +-
.../code-style-and-quality-scala/index.html | 5 +-
.../how-to-contribute/contribute-code/index.html | 5 +-
.../contribute-documentation/index.html | 5 +-
.../documentation-style-guide/index.html | 5 +-
.../how-to-contribute/improve-website/index.html | 5 +-
content/zh/how-to-contribute/index.html | 5 +-
content/zh/how-to-contribute/overview/index.html | 5 +-
.../zh/how-to-contribute/reviewing-prs/index.html | 5 +-
content/zh/index.html | 21 +-
content/zh/material/index.html | 5 +-
content/zh/powered-by/index.html | 5 +-
content/zh/roadmap/index.html | 5 +-
content/zh/security/index.html | 5 +-
content/zh/tags/index.html | 5 +-
content/zh/use-cases/index.html | 5 +-
content/zh/what-is-flink-ml/index.html | 5 +-
content/zh/what-is-flink-table-store/index.html | 5 +-
.../zh/what-is-flink/flink-applications/index.html | 13 +-
.../zh/what-is-flink/flink-architecture/index.html | 5 +-
.../zh/what-is-flink/flink-operations/index.html | 5 +-
content/zh/what-is-flink/index.html | 5 +-
content/zh/what-is-stateful-functions/index.html | 5 +-
.../index.html | 5 +-
349 files changed, 2242 insertions(+), 1612 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 0f2303e72..07aa0566d 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.
@@ -15,11 +15,12 @@ What is Flink? # Apache Flink is a general-purpose data processing engine for cl
<meta property="og:url" content="https://flink.apache.org/2014/08/26/apache-flink-0.6-available/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2014-08-26T10:00:00+00:00" />
<meta property="article:modified_time" content="2014-08-26T10:00:00+00:00" />
+
<title>Apache Flink 0.6 available | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 5a9f6c6b2..28310feee 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="We are happy to announce the availability of Flink 0.6.1.
@@ -17,11 +17,12 @@ Download the release today." />
<meta property="og:url" content="https://flink.apache.org/2014/09/26/apache-flink-0.6.1-available/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2014-09-26T10:00:00+00:00" />
<meta property="article:modified_time" content="2014-09-26T10:00:00+00:00" />
+
<title>Apache Flink 0.6.1 available | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/2014/10/03/upcoming-events/index.html b/content/2014/10/03/upcoming-events/index.html
index 1e8609eda..cdb8cef34 100644
--- a/content/2014/10/03/upcoming-events/index.html
+++ b/content/2014/10/03/upcoming-events/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="We are happy to announce several upcoming Flink events both in Europe and the US. Starting with a Flink hackathon in Stockholm (Oct 8-9) and a talk about Flink at the Stockholm Hadoop User Group (Oct 8). This is followed by the very first Flink Meetup in Berlin (Oct 15). In the US, there will be two Flink Meetup talks: the first one at the Pasadena Big Data User Group (Oct 29) and the second one at Silicon Valley Hands On Programming Events (Nov 4).">
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2014/10/03/upcoming-events/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2014-10-03T10:00:00+00:00" />
<meta property="article:modified_time" content="2014-10-03T10:00:00+00:00" />
+
<title>Upcoming Events | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 8df03ddcc..1fb89f0fc 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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!
@@ -19,11 +19,12 @@ Overview of major new features # Flink Streaming: The gem of the 0." />
<meta property="og:url" content="https://flink.apache.org/2014/11/04/apache-flink-0.7.0-available/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2014-11-04T10:00:00+00:00" />
<meta property="article:modified_time" content="2014-11-04T10:00:00+00:00" />
+
<title>Apache Flink 0.7.0 available | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 ee78d2400..fbcfc7392 100644
--- a/content/2014/11/18/hadoop-compatibility-in-flink/index.html
+++ b/content/2014/11/18/hadoop-compatibility-in-flink/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 in Java and Scala, which are very easy to use. Similar to Hadoop, Flink’s APIs provide interfaces for [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2014/11/18/hadoop-compatibility-in-flink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2014-11-18T10:00:00+00:00" />
<meta property="article:modified_time" content="2014-11-18T10:00:00+00:00" />
+
<title>Hadoop Compatibility in Flink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -936,8 +937,8 @@ https://github.com/alex-shpak/hugo-book
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">public</span> <span class="kd">class</span> <span class="nc">Counter</span> <span class="kd">implements</span> <span class="n">Reducer</span><span class="o"><</span><span class="n">Text</span><span class="o">,</span> <span class="n">LongWritable</span><span class="o">,</span> <span class="n">Text</span><span class="o">,</span> <span class="n">LongWritable</span><span class="o">></span> [...]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="o">{</span>
-</span></span><span class="line"><span class="cl"> <span class="kd">final</span> <span class="n">String</span> <span class="n">inputPath</span> <span class="o">=</span> <span class="n">args</span><span class="o">[</span><span class="mi">0</span><span class="o">];</span>
-</span></span><span class="line"><span class="cl"> <span class="kd">final</span> <span class="n">String</span> <span class="n">outputPath</span> <span class="o">=</span> <span class="n">args</span><span class="o">[</span><span class="mi">1</span><span class="o">];</span>
+</span></span><span class="line"><span class="cl"> <span class="kd">final</span> <span class="n">String</span> <span class="n">inputPath</span> <span class="o">=</span> <span class="n">args</span><span class="o">[</span><span class="n">0</span><span class="o">];</span>
+</span></span><span class="line"><span class="cl"> <span class="kd">final</span> <span class="n">String</span> <span class="n">outputPath</span> <span class="o">=</span> <span class="n">args</span><span class="o">[</span><span class="n">1</span><span class="o">];</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="kd">final</span> <span class="n">ExecutionEnvironment</span> <span class="n">env</span> <span class="o">=</span> <span class="n">ExecutionEnvironment</span><span class="o">.</span><span class="na">getExecutionEnvironment</span><span class="o">();</span>
</span></span><span class="line"><span class="cl">
@@ -952,7 +953,7 @@ https://github.com/alex-shpak/hugo-book
</span></span><span class="line"><span class="cl"> <span class="n">DataSet</span><span class="o"><</span><span class="n">Tuple2</span><span class="o"><</span><span class="n">Text</span><span class="o">,</span> <span class="n">LongWritable</span><span class="o">>></span> <span class="n">words</span> <span class="o">=</span> <span class="n">text</span>
</span></span><span class="line"><span class="cl"> <span class="c1">// Wrap Tokenizer Mapper function
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="o">.</span><span class="na">flatMap</span><span class="o">(</span><span class="k">new</span> <span class="n">HadoopMapFunction</span><span class="o"><</span><span class="n">LongWritable</span><span class="o">,</span> <span class="n">Text</span><span class="o">,</span> <span class="n">Text</span><span class="o">,</span> <span class="n">LongWritable</span><span class="o">>(</span><span c [...]
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">groupBy</span><span class="o">(</span><span class="mi">0</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">groupBy</span><span class="o">(</span><span class="n">0</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="c1">// Wrap Counter Reducer function (used as Reducer and Combiner)
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="o">.</span><span class="na">reduceGroup</span><span class="o">(</span><span class="k">new</span> <span class="n">HadoopReduceCombineFunction</span><span class="o"><</span><span class="n">Text</span><span class="o">,</span> <span class="n">LongWritable</span><span class="o">,</span> <span class="n">Text</span><span class="o">,</span> <span class="n">LongWritable</span><span class="o">>(</span>
</span></span><span class="line"><span class="cl"> <span class="k">new</span> <span class="n">Counter</span><span class="o">(),</span> <span class="k">new</span> <span class="n">Counter</span><span class="o">()));</span>
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 768aae57e..1764a7e20 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="This is the first blog post of a “newsletter” like series where we give a summary of the monthly activity in the Flink community. As the Flink project grows, this can serve as a “tl;dr” for people that are not following the Flink dev and user mailing lists, or those that are simply overwhelmed by the traffic.
@@ -15,11 +15,12 @@ Flink graduation # The biggest news is that the Apache board approved Flink as a
<meta property="og:url" content="https://flink.apache.org/2015/01/06/december-2014-in-the-flink-community/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-01-06T10:00:00+00:00" />
<meta property="article:modified_time" content="2015-01-06T10:00:00+00:00" />
+
<title>December 2014 in the Flink community | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 6f4bd7c23..8dc43acb8 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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!
@@ -19,11 +19,12 @@ Overview of major new features # Extended filesystem support: The former Distrib
<meta property="og:url" content="https://flink.apache.org/2015/01/21/apache-flink-0.8.0-available/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-01-21T10:00:00+00:00" />
<meta property="article:modified_time" content="2015-01-21T10:00:00+00:00" />
+
<title>Apache Flink 0.8.0 available | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 e60f8b910..9a305eb03 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Happy 2015! Here is a (hopefully digestible) summary of what happened last month in the Flink community.
@@ -19,11 +19,12 @@ Articles in the press # The Apache Software Foundation announced Flink as a Top-
<meta property="og:url" content="https://flink.apache.org/2015/02/04/january-2015-in-the-flink-community/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-02-04T10:00:00+00:00" />
<meta property="article:modified_time" content="2015-02-04T10:00:00+00:00" />
+
<title>January 2015 in the Flink community | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/2015/02/09/introducing-flink-streaming/index.html b/content/2015/02/09/introducing-flink-streaming/index.html
index e92851924..ab1d56b29 100644
--- a/content/2015/02/09/introducing-flink-streaming/index.html
+++ b/content/2015/02/09/introducing-flink-streaming/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.
@@ -15,11 +15,12 @@ In this post, we go through an example that uses the Flink Streaming API to comp
<meta property="og:url" content="https://flink.apache.org/2015/02/09/introducing-flink-streaming/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-02-09T12:00:00+00:00" />
<meta property="article:modified_time" content="2015-02-09T12:00:00+00:00" />
+
<title>Introducing Flink Streaming | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -986,23 +987,23 @@ found <a href="https://github.com/mbalassi/flink/blob/stockprices/flink-staging/
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="c1">//Read from a socket stream at map it to StockPrice objects
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span> <span class="n">socketStockStream</span> <span class="o">=</span> <span class="n">env</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">socketTextStream</span><span class="o">(</span><span class="s">"localhost"</span><span class="o">,</span> <span class="mi">9999</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">socketTextStream</span><span class="o">(</span><span class="s">"localhost"</span><span class="o">,</span> <span class="n">9999</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">map</span><span class="o">(</span><span class="k">new</span> <span class="n">MapFunction</span><span class="o"><</span><span class="n">String</span><span class="o">,</span> <span class="n">StockPrice</span><span class="o">>()</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="kd">private</span> <span class="n">String</span><span class="o">[]</span> <span class="n">tokens</span><span class="o">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="nd">@Override</span>
</span></span><span class="line"><span class="cl"> <span class="kd">public</span> <span class="n">StockPrice</span> <span class="nf">map</span><span class="o">(</span><span class="n">String</span> <span class="n">value</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">tokens</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="na">split</span><span class="o">(</span><span class="s">","</span><span class="o">);</span>
-</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="k">new</span> <span class="n">StockPrice</span><span class="o">(</span><span class="n">tokens</span><span class="o">[</span><span class="mi">0</span><span class="o">],</span>
-</span></span><span class="line"><span class="cl"> <span class="n">Double</span><span class="o">.</span><span class="na">parseDouble</span><span class="o">(</span><span class="n">tokens</span><span class="o">[</span><span class="mi">1</span><span class="o">]));</span>
+</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="k">new</span> <span class="n">StockPrice</span><span class="o">(</span><span class="n">tokens</span><span class="o">[</span><span class="n">0</span><span class="o">],</span>
+</span></span><span class="line"><span class="cl"> <span class="n">Double</span><span class="o">.</span><span class="na">parseDouble</span><span class="o">(</span><span class="n">tokens</span><span class="o">[</span><span class="n">1</span><span class="o">]));</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl"> <span class="o">});</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="c1">//Generate other stock streams
-</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span> <span class="n">SPX_stream</span> <span class="o">=</span> <span class="n">env</span><span class="o">.</span><span class="na">addSource</span><span class="o">(</span><span class="k">new</span> <span class="n">StockSource</span><span class="o">(</span><span class="s">"SPX"</span [...]
-</span></span><span class="line"><span class="cl"> <span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span> <span class="n">FTSE_stream</span> <span class="o">=</span> <span class="n">env</span><span class="o">.</span><span class="na">addSource</span><span class="o">(</span><span class="k">new</span> <span class="n">StockSource</span><span class="o">(</span><span class="s">"FTSE"</span><span class="o">,</span> <sp [...]
-</span></span><span class="line"><span class="cl"> <span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span> <span class="n">DJI_stream</span> <span class="o">=</span> <span class="n">env</span><span class="o">.</span><span class="na">addSource</span><span class="o">(</span><span class="k">new</span> <span class="n">StockSource</span><span class="o">(</span><span class="s">"DJI"</span><span class="o">,</span> <span [...]
-</span></span><span class="line"><span class="cl"> <span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span> <span class="n">BUX_stream</span> <span class="o">=</span> <span class="n">env</span><span class="o">.</span><span class="na">addSource</span><span class="o">(</span><span class="k">new</span> <span class="n">StockSource</span><span class="o">(</span><span class="s">"BUX"</span><span class="o">,</span> <span [...]
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span> <span class="n">SPX_stream</span> <span class="o">=</span> <span class="n">env</span><span class="o">.</span><span class="na">addSource</span><span class="o">(</span><span class="k">new</span> <span class="n">StockSource</span><span class="o">(</span><span class="s">"SPX"</span [...]
+</span></span><span class="line"><span class="cl"> <span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span> <span class="n">FTSE_stream</span> <span class="o">=</span> <span class="n">env</span><span class="o">.</span><span class="na">addSource</span><span class="o">(</span><span class="k">new</span> <span class="n">StockSource</span><span class="o">(</span><span class="s">"FTSE"</span><span class="o">,</span> <sp [...]
+</span></span><span class="line"><span class="cl"> <span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span> <span class="n">DJI_stream</span> <span class="o">=</span> <span class="n">env</span><span class="o">.</span><span class="na">addSource</span><span class="o">(</span><span class="k">new</span> <span class="n">StockSource</span><span class="o">(</span><span class="s">"DJI"</span><span class="o">,</span> <span [...]
+</span></span><span class="line"><span class="cl"> <span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span> <span class="n">BUX_stream</span> <span class="o">=</span> <span class="n">env</span><span class="o">.</span><span class="na">addSource</span><span class="o">(</span><span class="k">new</span> <span class="n">StockSource</span><span class="o">(</span><span class="s">"BUX"</span><span class="o">,</span> <span [...]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="c1">//Merge all stock streams together
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span> <span class="n">stockStream</span> <span class="o">=</span> <span class="n">socketStockStream</span>
@@ -1083,7 +1084,7 @@ of this example, the data streams are simply generated using the
</span></span><span class="line"><span class="cl"> <span class="k">while</span> <span class="o">(</span><span class="kc">true</span><span class="o">)</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">price</span> <span class="o">=</span> <span class="n">price</span> <span class="o">+</span> <span class="n">random</span><span class="o">.</span><span class="na">nextGaussian</span><span class="o">()</span> <span class="o">*</span> <span class="n">sigma</span><span class="o">;</span>
</span></span><span class="line"><span class="cl"> <span class="n">collector</span><span class="o">.</span><span class="na">collect</span><span class="o">(</span><span class="k">new</span> <span class="n">StockPrice</span><span class="o">(</span><span class="n">symbol</span><span class="o">,</span> <span class="n">price</span><span class="o">));</span>
-</span></span><span class="line"><span class="cl"> <span class="n">Thread</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="n">random</span><span class="o">.</span><span class="na">nextInt</span><span class="o">(</span><span class="mi">200</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl"> <span class="n">Thread</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="n">random</span><span class="o">.</span><span class="na">nextInt</span><span class="o">(</span><span class="n">200</span><span class="o">));</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span></span></span></code></pre></div>
@@ -1146,8 +1147,8 @@ performed on named fields of POJOs, making the code more readable.</p>
<div data-lang="java7" markdown="1">
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="c1">//Define the desired time window
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">WindowedDataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span> <span class="n">windowedStream</span> <span class="o">=</span> <span class="n">stockStream</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">window</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="mi">10</span><span class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="na">SECONDS</span><span class="o">))</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">every</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="mi">5</span><span class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="na">SECONDS</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">window</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="n">10</span><span class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="na">SECONDS</span><span class="o">))</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">every</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="n">5</span><span class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="na">SECONDS</span><span class="o">));</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">//Compute some simple statistics on a rolling window
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span> <span class="n">lowest</span> <span class="o">=</span> <span class="n">windowedStream</span><span class="o">.</span><span class="na">minBy</span><span class="o">(</span><span class="s">"price"</span><span class="o">).</span><span class="na">flatten</span><span class="o">();</span>
@@ -1160,8 +1161,8 @@ performed on named fields of POJOs, making the code more readable.</p>
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kd">public</span> <span class="kd">final</span> <span class="kd">static</span> <span class="kd">class</span> <span class="nc">WindowMean</span> <span class="kd">implements</span>
</span></span><span class="line"><span class="cl"> <span class="n">WindowMapFunction</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">,</span> <span class="n">StockPrice</span><span class="o">></span> <span class="o">{</span>
</span></span><span class="line"><span class="cl">
-</span></span><span class="line"><span class="cl"> <span class="kd">private</span> <span class="n">Double</span> <span class="n">sum</span> <span class="o">=</span> <span class="mf">0.0</span><span class="o">;</span>
-</span></span><span class="line"><span class="cl"> <span class="kd">private</span> <span class="n">Integer</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"> <span class="kd">private</span> <span class="n">Double</span> <span class="n">sum</span> <span class="o">=</span> <span class="n">0</span><span class="o">.</span><span class="na">0</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"> <span class="kd">private</span> <span class="n">Integer</span> <span class="n">count</span> <span class="o">=</span> <span class="n">0</span><span class="o">;</span>
</span></span><span class="line"><span class="cl"> <span class="kd">private</span> <span class="n">String</span> <span class="n">symbol</span> <span class="o">=</span> <span class="s">""</span><span class="o">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="nd">@Override</span>
@@ -1223,12 +1224,12 @@ every 30 seconds.</p>
</span></span><span class="line"><span class="cl"><span class="o">}</span></span></span></code></pre></div>
</div>
<div data-lang="java7" markdown="1">
-<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">Double</span> <span class="n">DEFAULT_PRICE</span> <span class="o">=</span> <span class="mf">1000.</span><span class="o">;</span>
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">Double</span> <span class="n">DEFAULT_PRICE</span> <span class="o">=</span> <span class="n">1000</span><span class="o">.;</span>
</span></span><span class="line"><span class="cl"><span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">StockPrice</span> <span class="n">DEFAULT_STOCK_PRICE</span> <span class="o">=</span> <span class="k">new</span> <span class="n">StockPrice</span><span class="o">(</span><span class="s">""</span><span class="o">,</span> <span class="n">DEFAULT_PRICE</span><span class="o">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">//Use delta policy to create price change warnings
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">String</span><span class="o">></span> <span class="n">priceWarnings</span> <span class="o">=</span> <span class="n">stockStream</span><span class="o">.</span><span class="na">groupBy</span><span class="o">(</span><span class="s">"symbol"</span><span class="o">)</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">window</span><span class="o">(</span><span class="n">Delta</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="mf">0.05</span><span class="o">,</span> <span class="k">new</span> <span class="n">DeltaFunction</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">>()</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">window</span><span class="o">(</span><span class="n">Delta</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="n">0</span><span class="o">.</span><span class="na">05</span><span class="o">,</span> <span class="k">new</span> <span class="n">DeltaFunction</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">>()</span> <span [...]
</span></span><span class="line"><span class="cl"> <span class="nd">@Override</span>
</span></span><span class="line"><span class="cl"> <span class="kd">public</span> <span class="kt">double</span> <span class="nf">getDelta</span><span class="o">(</span><span class="n">StockPrice</span> <span class="n">oldDataPoint</span><span class="o">,</span> <span class="n">StockPrice</span> <span class="n">newDataPoint</span><span class="o">)</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">Math</span><span class="o">.</span><span class="na">abs</span><span class="o">(</span><span class="n">oldDataPoint</span><span class="o">.</span><span class="na">price</span> <span class="o">-</span> <span class="n">newDataPoint</span><span class="o">.</span><span class="na">price</span><span class="o">);</span>
@@ -1240,9 +1241,9 @@ every 30 seconds.</p>
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">Count</span><span class="o">></span> <span class="n">warningsPerStock</span> <span class="o">=</span> <span class="n">priceWarnings</span><span class="o">.</span><span class="na">map</span><span class="o">(</span><span class="k">new</span> <span class="n">MapFunction</span><span class="o"><</span><span class="n">String</span><s [...]
</span></span><span class="line"><span class="cl"> <span class="nd">@Override</span>
</span></span><span class="line"><span class="cl"> <span class="kd">public</span> <span class="n">Count</span> <span class="nf">map</span><span class="o">(</span><span class="n">String</span> <span class="n">value</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
-</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="k">new</span> <span class="n">Count</span><span class="o">(</span><span class="n">value</span><span class="o">,</span> <span class="mi">1</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="k">new</span> <span class="n">Count</span><span class="o">(</span><span class="n">value</span><span class="o">,</span> <span class="n">1</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
-</span></span><span class="line"><span class="cl"><span class="o">}).</span><span class="na">groupBy</span><span class="o">(</span><span class="s">"symbol"</span><span class="o">).</span><span class="na">window</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="mi">30</span><span class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="na">SECONDS</span><span [...]
+</span></span><span class="line"><span class="cl"><span class="o">}).</span><span class="na">groupBy</span><span class="o">(</span><span class="s">"symbol"</span><span class="o">).</span><span class="na">window</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="n">30</span><span class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="na">SECONDS</span><span [...]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kd">static</span> <span class="kd">class</span> <span class="nc">Count</span> <span class="kd">implements</span> <span class="n">Serializable</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="kd">public</span> <span class="n">String</span> <span class="n">symbol</span><span class="o">;</span>
@@ -1336,9 +1337,9 @@ but for the sake of this example we generate dummy tweet data.</p>
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">Count</span><span class="o">></span> <span class="n">tweetsPerStock</span> <span class="o">=</span> <span class="n">mentionedSymbols</span><span class="o">.</span><span class="na">map</span><span class="o">(</span><span class="k">new</span> <span class="n">MapFunction</span><span class="o"><</span><span class="n">String</span>< [...]
</span></span><span class="line"><span class="cl"> <span class="nd">@Override</span>
</span></span><span class="line"><span class="cl"> <span class="kd">public</span> <span class="n">Count</span> <span class="nf">map</span><span class="o">(</span><span class="n">String</span> <span class="n">value</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
-</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="k">new</span> <span class="n">Count</span><span class="o">(</span><span class="n">value</span><span class="o">,</span> <span class="mi">1</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="k">new</span> <span class="n">Count</span><span class="o">(</span><span class="n">value</span><span class="o">,</span> <span class="n">1</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
-</span></span><span class="line"><span class="cl"><span class="o">}).</span><span class="na">groupBy</span><span class="o">(</span><span class="s">"symbol"</span><span class="o">).</span><span class="na">window</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="mi">30</span><span class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="na">SECONDS</span><span [...]
+</span></span><span class="line"><span class="cl"><span class="o">}).</span><span class="na">groupBy</span><span class="o">(</span><span class="s">"symbol"</span><span class="o">).</span><span class="na">window</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="n">30</span><span class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="na">SECONDS</span><span [...]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kd">static</span> <span class="kd">final</span> <span class="kd">class</span> <span class="nc">TweetSource</span> <span class="kd">implements</span> <span class="n">SourceFunction</span><span class="o"><</span><span class="n">String</span><span class="o">></span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">Random</span> <span class="n">random</span><span class="o">;</span>
@@ -1350,13 +1351,13 @@ but for the sake of this example we generate dummy tweet data.</p>
</span></span><span class="line"><span class="cl"> <span class="n">stringBuilder</span> <span class="o">=</span> <span class="k">new</span> <span class="n">StringBuilder</span><span class="o">();</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="k">while</span> <span class="o">(</span><span class="kc">true</span><span class="o">)</span> <span class="o">{</span>
-</span></span><span class="line"><span class="cl"> <span class="n">stringBuilder</span><span class="o">.</span><span class="na">setLength</span><span class="o">(</span><span class="mi">0</span><span class="o">);</span>
-</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">3</span><span class="o">;</span> <span class="n">i</span><span class="o">++)</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl"> <span class="n">stringBuilder</span><span class="o">.</span><span class="na">setLength</span><span class="o">(</span><span class="n">0</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="n">0</span><span class="o">;</span> <span class="n">i</span> <span class="o"><</span> <span class="n">3</span><span class="o">;</span> <span class="n">i</span><span class="o">++)</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">stringBuilder</span><span class="o">.</span><span class="na">append</span><span class="o">(</span><span class="s">" "</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="n">stringBuilder</span><span class="o">.</span><span class="na">append</span><span class="o">(</span><span class="n">SYMBOLS</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="n">random</span><span class="o">.</span><span class="na">nextInt</span><span class="o">(</span><span class="n">SYMBOLS</span><span class="o">.</span><span class="na">size</span><span class="o">( [...]
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl"> <span class="n">collector</span><span class="o">.</span><span class="na">collect</span><span class="o">(</span><span class="n">stringBuilder</span><span class="o">.</span><span class="na">toString</span><span class="o">());</span>
-</span></span><span class="line"><span class="cl"> <span class="n">Thread</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="mi">500</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl"> <span class="n">Thread</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="n">500</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
@@ -1407,7 +1408,7 @@ these data streams are potentially infinite, we apply the join on a
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="c1">//Join warnings and parsed tweets
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">Tuple2</span><span class="o"><</span><span class="n">Integer</span><span class="o">,</span> <span class="n">Integer</span><span class="o">>></span> <span class="n">tweetsAndWarning</span> <span class="o">=</span> <span class="n">warningsPerStock</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">join</span><span class="o">(</span><span class="n">tweetsPerStock</span><span class="o">)</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">onWindow</span><span class="o">(</span><span class="mi">30</span><span class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="na">SECONDS</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">onWindow</span><span class="o">(</span><span class="n">30</span><span class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="na">SECONDS</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">where</span><span class="o">(</span><span class="s">"symbol"</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">equalTo</span><span class="o">(</span><span class="s">"symbol"</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">with</span><span class="o">(</span><span class="k">new</span> <span class="n">JoinFunction</span><span class="o"><</span><span class="n">Count</span><span class="o">,</span> <span class="n">Count</span><span class="o">,</span> <span class="n">Tuple2</span><span class="o"><</span><span class="n">Integer</span><span class="o">,</span> <span class="n">Integer</span><span class="o">>>() [...]
@@ -1419,7 +1420,7 @@ these data streams are potentially infinite, we apply the join on a
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">//Compute rolling correlation
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">Double</span><span class="o">></span> <span class="n">rollingCorrelation</span> <span class="o">=</span> <span class="n">tweetsAndWarning</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">window</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="mi">30</span><span class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="na">SECONDS</span><span class="o">))</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">window</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="n">30</span><span class="o">,</span> <span class="n">TimeUnit</span><span class="o">.</span><span class="na">SECONDS</span><span class="o">))</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">mapWindow</span><span class="o">(</span><span class="k">new</span> <span class="n">WindowCorrelation</span><span class="o">());</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">rollingCorrelation</span><span class="o">.</span><span class="na">print</span><span class="o">();</span>
@@ -1442,13 +1443,13 @@ these data streams are potentially infinite, we apply the join on a
</span></span><span class="line"><span class="cl"> <span class="kd">public</span> <span class="kt">void</span> <span class="nf">mapWindow</span><span class="o">(</span><span class="n">Iterable</span><span class="o"><</span><span class="n">Tuple2</span><span class="o"><</span><span class="n">Integer</span><span class="o">,</span> <span class="n">Integer</span><span class="o">>></span> <span class="n">values</span><span class="o">,</span> <span class="n">Collector</span><spa [...]
</span></span><span class="line"><span class="cl"> <span class="kd">throws</span> <span class="n">Exception</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl">
-</span></span><span class="line"><span class="cl"> <span class="n">leftSum</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span>
-</span></span><span class="line"><span class="cl"> <span class="n">rightSum</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span>
-</span></span><span class="line"><span class="cl"> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"> <span class="n">leftSum</span> <span class="o">=</span> <span class="n">0</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"> <span class="n">rightSum</span> <span class="o">=</span> <span class="n">0</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"> <span class="n">count</span> <span class="o">=</span> <span class="n">0</span><span class="o">;</span>
</span></span><span class="line"><span class="cl">
-</span></span><span class="line"><span class="cl"> <span class="n">cov</span> <span class="o">=</span> <span class="mf">0.</span><span class="o">;</span>
-</span></span><span class="line"><span class="cl"> <span class="n">leftSd</span> <span class="o">=</span> <span class="mf">0.</span><span class="o">;</span>
-</span></span><span class="line"><span class="cl"> <span class="n">rightSd</span> <span class="o">=</span> <span class="mf">0.</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"> <span class="n">cov</span> <span class="o">=</span> <span class="n">0</span><span class="o">.;</span>
+</span></span><span class="line"><span class="cl"> <span class="n">leftSd</span> <span class="o">=</span> <span class="n">0</span><span class="o">.;</span>
+</span></span><span class="line"><span class="cl"> <span class="n">rightSd</span> <span class="o">=</span> <span class="n">0</span><span class="o">.;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="c1">//compute mean for both sides, save count
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="k">for</span> <span class="o">(</span><span class="n">Tuple2</span><span class="o"><</span><span class="n">Integer</span><span class="o">,</span> <span class="n">Integer</span><span class="o">></span> <span class="n">pair</span> <span class="o">:</span> <span class="n">values</span><span class="o">)</span> <span class="o">{</span>
@@ -1466,8 +1467,8 @@ these data streams are potentially infinite, we apply the join on a
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="o">(</span><span class="n">Tuple2</span><span class="o"><</span><span class="n">Integer</span><span class="o">,</span> <span class="n">Integer</span><span class="o">></span> <span class="n">pair</span> <span class="o">:</span> <span class="n">values</span><span class="o">)</span> <span class="o">{</span>
-</span></span><span class="line"><span class="cl"> <span class="n">leftSd</span> <span class="o">+=</span> <span class="n">Math</span><span class="o">.</span><span class="na">pow</span><span class="o">(</span><span class="n">pair</span><span class="o">.</span><span class="na">f0</span> <span class="o">-</span> <span class="n">leftMean</span><span class="o">,</span> <span class="mi">2</span><span class="o">)</span> <span class="o">/</span> <span class="n">count</span><span clas [...]
-</span></span><span class="line"><span class="cl"> <span class="n">rightSd</span> <span class="o">+=</span> <span class="n">Math</span><span class="o">.</span><span class="na">pow</span><span class="o">(</span><span class="n">pair</span><span class="o">.</span><span class="na">f1</span> <span class="o">-</span> <span class="n">rightMean</span><span class="o">,</span> <span class="mi">2</span><span class="o">)</span> <span class="o">/</span> <span class="n">count</span><span cl [...]
+</span></span><span class="line"><span class="cl"> <span class="n">leftSd</span> <span class="o">+=</span> <span class="n">Math</span><span class="o">.</span><span class="na">pow</span><span class="o">(</span><span class="n">pair</span><span class="o">.</span><span class="na">f0</span> <span class="o">-</span> <span class="n">leftMean</span><span class="o">,</span> <span class="n">2</span><span class="o">)</span> <span class="o">/</span> <span class="n">count</span><span class [...]
+</span></span><span class="line"><span class="cl"> <span class="n">rightSd</span> <span class="o">+=</span> <span class="n">Math</span><span class="o">.</span><span class="na">pow</span><span class="o">(</span><span class="n">pair</span><span class="o">.</span><span class="na">f1</span> <span class="o">-</span> <span class="n">rightMean</span><span class="o">,</span> <span class="n">2</span><span class="o">)</span> <span class="o">/</span> <span class="n">count</span><span cla [...]
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl"> <span class="n">leftSd</span> <span class="o">=</span> <span class="n">Math</span><span class="o">.</span><span class="na">sqrt</span><span class="o">(</span><span class="n">leftSd</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="n">rightSd</span> <span class="o">=</span> <span class="n">Math</span><span class="o">.</span><span class="na">sqrt</span><span class="o">(</span><span class="n">rightSd</span><span class="o">);</span>
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 89196476d..7b9cdd3d4 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="February might be the shortest month of the year, but this does not mean that the Flink community has not been busy adding features to the system and fixing bugs. Here’s a rundown of the activity in the Flink community last month.
@@ -17,11 +17,12 @@ New committer # Max Michels has been voted a committer by the Flink PMC." />
<meta property="og:url" content="https://flink.apache.org/2015/03/02/february-2015-in-the-flink-community/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-03-02T10:00:00+00:00" />
<meta property="article:modified_time" content="2015-03-02T10:00:00+00:00" />
+
<title>February 2015 in the Flink community | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 f7694be44..7f268b84e 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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, join processing serves as a good example to discuss the salient design points and implementation details of a data processi [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2015/03/13/peeking-into-apache-flinks-engine-room/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-03-13T10:00:00+00:00" />
<meta property="article:modified_time" content="2015-03-13T10:00:00+00:00" />
+
<title>Peeking into Apache Flink's Engine Room | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 dedd86dba..4d8e707fc 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="March has been a busy month in the Flink community.
@@ -17,11 +17,12 @@ Learn about the internals of Flink # The community has started an effort to bett
<meta property="og:url" content="https://flink.apache.org/2015/04/07/march-2015-in-the-flink-community/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-04-07T10:00:00+00:00" />
<meta property="article:modified_time" content="2015-04-07T10:00:00+00:00" />
+
<title>March 2015 in the Flink community | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 f532d9644..c129a1ed7 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is pleased to announce the availability of the 0.9.0-milestone-1 release. The release is a preview of the upcoming 0.9.0 release. It contains many new features which will be available in the upcoming 0.9 release. Interested users are encouraged to try it out and give feedback. As the version number indicates, this release is a preview release that contains known issues.
@@ -15,11 +15,12 @@ You can download the release here and check out the latest documentation here."
<meta property="og:url" content="https://flink.apache.org/2015/04/13/announcing-flink-0.9.0-milestone1-preview-release/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-04-13T10:00:00+00:00" />
<meta property="article:modified_time" content="2015-04-13T10:00:00+00:00" />
+
<title>Announcing Flink 0.9.0-milestone1 preview release | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 bad32ee09..739dbe02e 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 data analysis engines face is to store large amounts of data in memory - both for caching and for effic [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2015/05/11/juggling-with-bits-and-bytes/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-05-11T10:00:00+00:00" />
<meta property="article:modified_time" content="2015-05-11T10:00:00+00:00" />
+
<title>Juggling with Bits and Bytes | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 8f538d54f..854cb721d 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="April was an packed month for Apache Flink.
@@ -17,11 +17,12 @@ Flink 0." />
<meta property="og:url" content="https://flink.apache.org/2015/05/14/april-2015-in-the-flink-community/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-05-14T10:00:00+00:00" />
<meta property="article:modified_time" content="2015-05-14T10:00:00+00:00" />
+
<title>April 2015 in the Flink community | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 de3190ac7..0738dbd23 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.
@@ -15,11 +15,12 @@ Download the release and check out the documentation. Feedback through the Flink
<meta property="og:url" content="https://flink.apache.org/2015/06/24/announcing-apache-flink-0.9.0/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-06-24T14:00:00+00:00" />
<meta property="article:modified_time" content="2015-06-24T14:00:00+00:00" />
+
<title>Announcing Apache Flink 0.9.0 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 520a6b1dc..35c8294df 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="This blog post introduces Gelly, Apache Flink’s graph-processing API and library. Flink’s native support for iterations makes it a suitable platform for large-scale graph analytics. By leveraging delta iterations, Gelly is able to map various graph processing models such as vertex-centric or gather-sum-apply to Flink dataflows.
@@ -15,11 +15,12 @@ Gelly allows Flink users to perform end-to-end data analysis in a single system.
<meta property="og:url" content="https://flink.apache.org/2015/08/24/introducing-gelly-graph-processing-with-apache-flink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-08-24T00:00:00+00:00" />
<meta property="article:modified_time" content="2015-08-24T00:00:00+00:00" />
+
<title>Introducing Gelly: Graph Processing with Apache Flink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -1187,7 +1188,7 @@ playlist, we use a coGroup function to filter out the mismatches.</p>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// read the mismatches dataset and extract the songIDs
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">DataSet</span><span class="o"><</span><span class="n">Tuple3</span><span class="o"><</span><span class="n">String</span><span class="o">,</span> <span class="n">String</span><span class="o">,</span> <span class="n">Integer</span><span class="o">>></span> <span class="n">validTriplets</span> <span class="o">=</span> <span class="n">triplets</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">coGroup</span><span class="o">(</span><span class="n">mismatches</span><span class="o">).</span><span class="na">where</span><span class="o">(</span><span class="mi">1</span><span class="o">).</span><span class="na">equalTo</span><span class="o">(</span><span class="mi">0</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">coGroup</span><span class="o">(</span><span class="n">mismatches</span><span class="o">).</span><span class="na">where</span><span class="o">(</span><span class="n">1</span><span class="o">).</span><span class="na">equalTo</span><span class="o">(</span><span class="n">0</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">with</span><span class="o">(</span><span class="k">new</span> <span class="n">CoGroupFunction</span><span class="o">()</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="kt">void</span> <span class="nf">coGroup</span><span class="o">(</span><span class="n">Iterable</span> <span class="n">triplets</span><span class="o">,</span> <span class="n">Iterable</span> <span class="n">invalidSongs</span><span class="o">,</span> <span class="n">Collector</span> <span class="n">out</span><span class="o">)</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="o">(!</span><span class="n">invalidSongs</span><span class="o">.</span><span class="na">iterator</span><span class="o">().</span><span class="na">hasNext</span><span class="o">())</span> <span class="o">{</span>
@@ -1225,7 +1226,7 @@ basically iterate through the edge value and collect the target (song) of the ma
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">GetTopSongPerUser</span> <span class="kd">implements</span> <span class="n">EdgesFunctionWithVertexValue</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="kt">void</span> <span class="nf">iterateEdges</span><span class="o">(</span><span class="n">Vertex</span> <span class="n">vertex</span><span class="o">,</span> <span class="n">Iterable</span><span class="o"><</span><span class="n">Edge</span><span class="o">></span> <span class="n">edges</span><span class="o">)</span> <span class="o">{</span>
-</span></span><span class="line"><span class="cl"> <span class="kt">int</span> <span class="n">maxPlaycount</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"> <span class="kt">int</span> <span class="n">maxPlaycount</span> <span class="o">=</span> <span class="n">0</span><span class="o">;</span>
</span></span><span class="line"><span class="cl"> <span class="n">String</span> <span class="n">topSong</span> <span class="o">=</span> <span class="s">""</span><span class="o">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="o">(</span><span class="n">Edge</span> <span class="n">edge</span> <span class="o">:</span> <span class="n">edges</span><span class="o">)</span> <span class="o">{</span>
@@ -1265,14 +1266,14 @@ straightforward as a call to the <code>Graph.fromDataSet()</code> method.</p>
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="o">(</span><span class="n">edge</span><span class="o">.</span><span class="na">getValue</span><span class="o">()</span> <span class="o">></span> <span class="n">playcountThreshold</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl"> <span class="o">})</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">groupBy</span><span class="o">(</span><span class="mi">1</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">groupBy</span><span class="o">(</span><span class="n">1</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">reduceGroup</span><span class="o">(</span><span class="k">new</span> <span class="n">GroupReduceFunction</span><span class="o">()</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="kt">void</span> <span class="nf">reduce</span><span class="o">(</span><span class="n">Iterable</span><span class="o"><</span><span class="n">Edge</span><span class="o">></span> <span class="n">edges</span><span class="o">,</span> <span class="n">Collector</span><span class="o"><</span><span class="n">Edge</span><span class="o">></span> <span class="n">out</span><span class="o">)</span> <span class= [...]
</span></span><span class="line"><span class="cl"> <span class="n">List</span> <span class="n">users</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ArrayList</span><span class="o">();</span>
</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="o">(</span><span class="n">Edge</span> <span class="n">edge</span> <span class="o">:</span> <span class="n">edges</span><span class="o">)</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">users</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">edge</span><span class="o">.</span><span class="na">getSource</span><span class="o">());</span>
-</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o"><</span> <span class="n">users</span><span class="o">.</span><span class="na">size</span><span class="o">()</span> <span class="o">-</span> <span class="mi">1</span><span class="o">;</span> <span [...]
-</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="o">;</span> <span class="n">j</span> <span class="o"><</span> <span class="n">users</span><span class="o">.</span><span class="na">size</span><span class="o">()</span> <span class="o">-</span> <sp [...]
+</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="n">0</span><span class="o">;</span> <span class="n">i</span> <span class="o"><</span> <span class="n">users</span><span class="o">.</span><span class="na">size</span><span class="o">()</span> <span class="o">-</span> <span class="n">1</span><span class="o">;</span> <span c [...]
+</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="n">i</span><span class="o">+</span><span class="n">1</span><span class="o">;</span> <span class="n">j</span> <span class="o"><</span> <span class="n">users</span><span class="o">.</span><span class="na">size</span><span class="o">()</span> <span class="o">-</span> <spa [...]
</span></span><span class="line"><span class="cl"> <span class="n">out</span><span class="o">.</span><span class="na">collect</span><span class="o">(</span><span class="k">new</span> <span class="n">Edge</span><span class="o">(</span><span class="n">users</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="n">i</span><span class="o">),</span> <span class="n">users</span><span class="o">.</span><span class="na">get</ [...]
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
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 a14c61677..4f6ce4087 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Flink community is happy to announce that Flink 0.9.1 is now available.
@@ -19,11 +19,12 @@ The following issues were fixed for this release:" />
<meta property="og:url" content="https://flink.apache.org/2015/09/01/apache-flink-0.9.1-available/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-09-01T08:00:00+00:00" />
<meta property="article:modified_time" content="2015-09-01T08:00:00+00:00" />
+
<title>Apache Flink 0.9.1 available | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 7d9d70ad5..26944f8b5 100644
--- a/content/2015/09/03/announcing-flink-forward-2015/index.html
+++ b/content/2015/09/03/announcing-flink-forward-2015/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Flink Forward 2015 is the first conference with Flink at its center that aims to bring together the Apache Flink community in a single place. The organizers are starting this conference in October 12 and 13 from Berlin, the place where Apache Flink started.
@@ -15,11 +15,12 @@ The conference program has been announced by the organizers and a program commit
<meta property="og:url" content="https://flink.apache.org/2015/09/03/announcing-flink-forward-2015/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-09-03T08:00:00+00:00" />
<meta property="article:modified_time" content="2015-09-03T08:00:00+00:00" />
+
<title>Announcing Flink Forward 2015 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 52e88caab..816efe00d 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Running data-intensive code in the JVM and making it well-behaved is tricky. Systems that put billions of data objects naively onto the JVM heap face unpredictable OutOfMemoryErrors and Garbage Collection stalls. Of course, you still want to to keep your data in memory as much as possible, for speed and responsiveness of the processing applications. In that context, “off-heap” has become almost something like a magic word to solve these problems.">
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2015/09/16/off-heap-memory-in-apache-flink-and-the-curious-jit-compiler/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-09-16T08:00:00+00:00" />
<meta property="article:modified_time" content="2015-09-16T08:00:00+00:00" />
+
<title>Off-heap Memory in Apache Flink and the curious JIT compiler | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 be947ea71..d348f996b 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is pleased to announce the availability of the 0.10.0 release. The community put significant effort into improving and extending Apache Flink since the last release, focusing on data stream processing and operational features. About 80 contributors provided bug fixes, improvements, and new features such that in total more than 400 JIRA issues could be resolved.
@@ -15,11 +15,12 @@ For Flink 0.10.0, the focus of the community was to graduate the DataStream API
<meta property="og:url" content="https://flink.apache.org/2015/11/16/announcing-apache-flink-0.10.0/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-11-16T08:00:00+00:00" />
<meta property="article:modified_time" content="2015-11-16T08:00:00+00:00" />
+
<title>Announcing Apache Flink 0.10.0 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 6819a3795..9c4c1d5bf 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Today, the Flink community released the first bugfix release of the 0.10 series of Flink.
@@ -17,11 +17,12 @@ Issues fixed # [FLINK-2879] - Links in documentation are broken [FLINK-2938] - S
<meta property="og:url" content="https://flink.apache.org/2015/11/27/flink-0.10.1-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-11-27T08:00:00+00:00" />
<meta property="article:modified_time" content="2015-11-27T08:00:00+00:00" />
+
<title>Flink 0.10.1 released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 c6a7f6c1e..b1921de88 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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”/”exactly-once” processing). This shift and the new terminology can be quite confusing for people being new to the space of strea [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2015/12/04/introducing-stream-windows-in-apache-flink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-12-04T10:00:00+00:00" />
<meta property="article:modified_time" content="2015-12-04T10:00:00+00:00" />
+
<title>Introducing Stream Windows in Apache Flink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 167f98ce4..f46135e6e 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 Eclipse open-source license, it became popular very quickly. Only shortly afterwards, Twitter acquired Backtype. Since then, Storm has been growing in popularity, is used in production at many big companies, [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2015/12/11/storm-compatibility-in-apache-flink-how-to-run-existing-storm-topologies-on-flink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-12-11T10:00:00+00:00" />
<meta property="article:modified_time" content="2015-12-11T10:00:00+00:00" />
+
<title>Storm Compatibility in Apache Flink: How to run existing Storm topologies on Flink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -998,16 +999,16 @@ As Storm is type agnostic, it is required to specify the output type of embedded
</span></span><span class="line"><span class="cl"> <span class="c1">// specify output type manually
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">TypeExtractor</span><span class="o">.</span><span class="na">getForObject</span><span class="o">(</span><span class="k">new</span> <span class="n">Tuple1</span><span class="o"><</span><span class="n">String</span><span class="o">>(</span><span class="s">""</span><span class="o">)));</span>
</span></span><span class="line"><span class="cl"><span class="c1">// FileSpout cannot be parallelized
-</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">Tuple1</span><span class="o"><</span><span class="n">String</span><span class="o">>></span> <span class="n">text</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="na">setParallelism</span><span class="o">(</span><span class="mi">1</span><span class="o">);</span>
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">Tuple1</span><span class="o"><</span><span class="n">String</span><span class="o">>></span> <span class="n">text</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="na">setParallelism</span><span class="o">(</span><span class="n">1</span><span class="o">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// further processing with Flink
-</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">Tuple2</span><span class="o"><</span><span class="n">String</span><span class="o">,</span><span class="n">Integer</span><span class="o">></span> <span class="n">tokens</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="na">flatMap</span><span class="o">(</span><span class="k">new</sp [...]
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">Tuple2</span><span class="o"><</span><span class="n">String</span><span class="o">,</span><span class="n">Integer</span><span class="o">></span> <span class="n">tokens</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="na">flatMap</span><span class="o">(</span><span class="k">new</sp [...]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// use Bolt for counting
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">Tuple2</span><span class="o"><</span><span class="n">String</span><span class="o">,</span><span class="n">Integer</span><span class="o">></span> <span class="n">counts</span> <span class="o">=</span>
</span></span><span class="line"><span class="cl"> <span class="n">tokens</span><span class="o">.</span><span class="na">transform</span><span class="o">(</span><span class="s">"Counter"</span><span class="o">,</span>
</span></span><span class="line"><span class="cl"> <span class="c1">// specify output type manually
-</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">TypeExtractor</span><span class="o">.</span><span class="na">getForObject</span><span class="o">(</span><span class="k">new</span> <span class="n">Tuple2</span><span class="o"><</span><span class="n">String</span><span class="o">,</span><span class="n">Integer</span><span class="o">>(</span><span class="s">""</span><span class="o">,</span><span class="mi">0</s [...]
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">TypeExtractor</span><span class="o">.</span><span class="na">getForObject</span><span class="o">(</span><span class="k">new</span> <span class="n">Tuple2</span><span class="o"><</span><span class="n">String</span><span class="o">,</span><span class="n">Integer</span><span class="o">>(</span><span class="s">""</span><span class="o">,</span><span class="n">0</sp [...]
</span></span><span class="line"><span class="cl"> <span class="c1">// Flink provided wrapper including original Bolt
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="k">new</span> <span class="n">BoltWrapper</span><span class="o"><</span><span class="n">String</span><span class="o">,</span><span class="n">Tuple2</span><span class="o"><</span><span class="n">String</span><span class="o">,</span><span class="n">Integer</span><span class="o">>>(</span><span class="k">new</span> <span class="n">BoltCounter</span><span class="o">()) [...]
</span></span><span class="line"><span class="cl">
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 d70a1339c..f59cb7c7b 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="With 2015 ending, we thought that this would be good time to reflect on the amazing work done by the Flink community over this past year, and how much this community has grown.
@@ -15,11 +15,12 @@ Overall, we have seen Flink grow in terms of functionality from an engine to one
<meta property="og:url" content="https://flink.apache.org/2015/12/18/flink-2015-a-year-in-review-and-a-lookout-to-2016/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2015-12-18T10:00:00+00:00" />
<meta property="article:modified_time" content="2015-12-18T10:00:00+00:00" />
+
<title>Flink 2015: A year in review, and a lookout to 2016 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 5211adecc..820f6cef0 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Today, the Flink community released Flink version 0.10.2, the second bugfix release of the 0.10 series.
@@ -17,11 +17,12 @@ Issues fixed # FLINK-3242: Adjust StateBackendITCase for 0.10 signatures of stat
<meta property="og:url" content="https://flink.apache.org/2016/02/11/flink-0.10.2-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2016-02-11T08:00:00+00:00" />
<meta property="article:modified_time" content="2016-02-11T08:00:00+00:00" />
+
<title>Flink 0.10.2 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 fe1edb486..ce4c5f428 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is pleased to announce the availability of the 1.0.0 release. The community put significant effort into improving and extending Apache Flink since the last release, focusing on improving the experience of writing and executing data stream processing pipelines in production.
@@ -15,11 +15,12 @@ Flink version 1.0.0 marks the beginning of the 1.X.X series of releases, which w
<meta property="og:url" content="https://flink.apache.org/2016/03/08/announcing-apache-flink-1.0.0/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2016-03-08T13:00:00+00:00" />
<meta property="article:modified_time" content="2016-03-08T13:00:00+00:00" />
+
<title>Announcing Apache Flink 1.0.0 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 65039b7d0..e374990c8 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Today, the Flink community released Flink version 1.0.1, the first bugfix release of the 1.0 series.
@@ -17,11 +17,12 @@ Fixed Issues # Bug [FLINK-3179] - Combiner is not injected if Reduce or GroupRed
<meta property="og:url" content="https://flink.apache.org/2016/04/06/flink-1.0.1-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2016-04-06T08:00:00+00:00" />
<meta property="article:modified_time" content="2016-04-06T08:00:00+00:00" />
+
<title>Flink 1.0.1 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 89892d283..91e7510e0 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 factor for a company’s success or failure. A key problem in real time processing is the detection of event patterns in data streams.">
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2016/04/06/introducing-complex-event-processing-cep-with-apache-flink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2016-04-06T10:00:00+00:00" />
<meta property="article:modified_time" content="2016-04-06T10:00:00+00:00" />
+
<title>Introducing Complex Event Processing (CEP) with Apache Flink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -992,7 +993,7 @@ This event has to follow directly the first matching event in order for the whol
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">next</span><span class="o">(</span><span class="s">"Second Event"</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">subtype</span><span class="o">(</span><span class="n">TemperatureEvent</span><span class="o">.</span><span class="na">class</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">where</span><span class="o">(</span><span class="n">evt</span> <span class="o">-></span> <span class="n">evt</span><span class="o">.</span><span class="na">getTemperature</span><span class="o">()</span> <span class="o">>=</span> <span class="n">TEMPERATURE_THRESHOLD</span><span class="o">)</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">within</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">seconds</span><span class="o">(</span><span class="mi">10</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">within</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">seconds</span><span class="o">(</span><span class="n">10</span><span class="o">));</span>
</span></span></code></pre></div><p>The final pattern definition also contains the <code>within</code> API call which defines that two consecutive <code>TemperatureEvents</code> have to occur within a time interval of 10 seconds for the pattern to match.
Depending on the time characteristic setting, this can either be processing, ingestion or event time.</p>
<p>Having defined the event pattern, we can now apply it on the <code>inputEventStream</code>.</p>
@@ -1019,7 +1020,7 @@ Our pattern select function generates for each matching pattern a <code>Temperat
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="k">new</span> <span class="n">TemperatureWarning</span><span class="o">(</span>
</span></span><span class="line"><span class="cl"> <span class="n">first</span><span class="o">.</span><span class="na">getRackID</span><span class="o">(),</span>
-</span></span><span class="line"><span class="cl"> <span class="o">(</span><span class="n">first</span><span class="o">.</span><span class="na">getTemperature</span><span class="o">()</span> <span class="o">+</span> <span class="n">second</span><span class="o">.</span><span class="na">getTemperature</span><span class="o">())</span> <span class="o">/</span> <span class="mi">2</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl"> <span class="o">(</span><span class="n">first</span><span class="o">.</span><span class="na">getTemperature</span><span class="o">()</span> <span class="o">+</span> <span class="n">second</span><span class="o">.</span><span class="na">getTemperature</span><span class="o">())</span> <span class="o">/</span> <span class="n">2</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="o">);</span>
</span></span></code></pre></div><p>Now we have generated a new complex event stream <code>DataStream<TemperatureWarning> warnings</code> from the initial monitoring event stream.
@@ -1033,7 +1034,7 @@ The <code>TemperatureAlerts</code> have the following definition:</p>
</span></span></code></pre></div><p>At first, we have to define our alert event pattern:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">Pattern</span><span class="o"><</span><span class="n">TemperatureWarning</span><span class="o">,</span> <span class="o">?></span> <span class="n">alertPattern</span> <span class="o">=</span> <span class="n">Pattern</span><span class="o">.<</span><span class="n">TemperatureWarning</span><span class="o">></span><span class="n"> [...]
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">next</span><span class="o">(</span><span class="s">"Second Event"</span><span class="o">)</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">within</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">seconds</span><span class="o">(</span><span class="mi">20</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">within</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">seconds</span><span class="o">(</span><span class="n">20</span><span class="o">));</span>
</span></span></code></pre></div><p>This definition says that we want to see two <code>TemperatureWarnings</code> within 20 seconds.
The first event has the name <code>“First Event”</code> and the second consecutive event has the name <code>“Second Event”</code>.
The individual events don’t have a where clause assigned, because we need access to both events in order to decide whether the temperature is increasing.
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 01c74cd8f..7ec7b81da 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="We are happy to announce that the call for submissions for Flink Forward 2016 is now open! The conference will take place September 12-14, 2016 in Berlin, Germany, bringing together the open source stream processing community. Most Apache Flink committers will attend the conference, making it the ideal venue to learn more about the project and its roadmap and connect with the community.
@@ -15,11 +15,12 @@ The conference welcomes submissions on everything Flink-related, including exper
<meta property="og:url" content="https://flink.apache.org/2016/04/14/flink-forward-2016-call-for-submissions-is-now-open/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2016-04-14T10:00:00+00:00" />
<meta property="article:modified_time" content="2016-04-14T10:00:00+00:00" />
+
<title>Flink Forward 2016 Call for Submissions Is Now Open | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 7bff0bbbf..c935cbc1f 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Today, the Flink community released Flink version 1.0.2, the second bugfix release of the 1.0 series.
@@ -17,11 +17,12 @@ Fixed Issues # Bug # [FLINK-3657] [dataSet] Change access of DataSetUtils.countE
<meta property="og:url" content="https://flink.apache.org/2016/04/22/flink-1.0.2-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2016-04-22T08:00:00+00:00" />
<meta property="article:modified_time" content="2016-04-22T08:00:00+00:00" />
+
<title>Flink 1.0.2 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 5a8fcb4a7..7f9de917d 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Today, the Flink community released Flink version 1.0.3, the third bugfix release of the 1.0 series.
@@ -17,11 +17,12 @@ Fixed Issues # Bug # [FLINK-3790] [streaming] Use proper hadoop config in rollin
<meta property="og:url" content="https://flink.apache.org/2016/05/11/flink-1.0.3-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2016-05-11T08:00:00+00:00" />
<meta property="article:modified_time" content="2016-05-11T08:00:00+00:00" />
+
<title>Flink 1.0.3 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 eaa4e079d..f1cf44210 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 rather low-level APIs. Since then, several new systems emerged and pushed the state of the art of open source stream processing in several dimensions. Today, use [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2016/05/24/stream-processing-for-everyone-with-sql-and-apache-flink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2016-05-24T10:00:00+00:00" />
<meta property="article:modified_time" content="2016-05-24T10:00:00+00:00" />
+
<title>Stream Processing for Everyone with SQL and Apache Flink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 85e63c773..91bb29a23 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 announce the availability of Flink 1.1.0.
@@ -15,11 +15,12 @@ This release is the first major release in the 1.X.X series of releases, which m
<meta property="og:url" content="https://flink.apache.org/2016/08/04/announcing-apache-flink-1.1.0/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2016-08-04T13:00:00+00:00" />
<meta property="article:modified_time" content="2016-08-04T13:00:00+00:00" />
+
<title>Announcing Apache Flink 1.1.0 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -947,7 +948,7 @@ https://github.com/alex-shpak/hugo-book
</span></span><span class="line"><span class="cl"> <span class="n">textInputFormat</span><span class="o">,</span>
</span></span><span class="line"><span class="cl"> <span class="s">"hdfs:///file-path"</span><span class="o">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">FileProcessingMode</span><span class="o">.</span><span class="na">PROCESS_CONTINUOUSLY</span><span class="o">,</span>
-</span></span><span class="line"><span class="cl"> <span class="mi">5000</span><span class="o">,</span> <span class="c1">// monitoring interval (millis)
+</span></span><span class="line"><span class="cl"> <span class="n">5000</span><span class="o">,</span> <span class="c1">// monitoring interval (millis)
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">FilePathFilter</span><span class="o">.</span><span class="na">createDefaultFilter</span><span class="o">());</span> <span class="c1">// file path filter
</span></span></span></code></pre></div><p>This will monitor <code>hdfs:///file-path</code> every <code>5000</code> milliseconds. Check out the <a href="//nightlies.apache.org/flinkflink-docs-release-1.1/apis/streaming/index.html#data-sources">DataSource documentation for more details</a>.</p>
<h3 id="kinesis-source-and-sink">
@@ -993,7 +994,7 @@ https://github.com/alex-shpak/hugo-book
<img src="/img/blog/session-windows.svg" style="height:400px">
</center>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">input</span><span class="o">.</span><span class="na">keyBy</span><span class="o">(<</span><span class="n">key</span> <span class="n">selector</span><span class="o">>)</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">window</span><span class="o">(</span><span class="n">EventTimeSessionWindows</span><span class="o">.</span><span class="na">withGap</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">minutes</span><span class="o">(</span><span class="mi">10</span><span class="o">)))</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">window</span><span class="o">(</span><span class="n">EventTimeSessionWindows</span><span class="o">.</span><span class="na">withGap</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">minutes</span><span class="o">(</span><span class="n">10</span><span class="o">)))</span>
</span></span><span class="line"><span class="cl"> <span class="o">.<</span><span class="n">windowed</span> <span class="n">transformation</span><span class="o">>(<</span><span class="n">window</span> <span class="n">function</span><span class="o">>);</span>
</span></span></code></pre></div><h3 id="support-for-late-elements">
Support for Late Elements
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 e9f040f70..56cfd7590 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Today, the Flink community released Flink version 1.1.1.
@@ -17,11 +17,12 @@ This was fixed with this release and we highly recommend all users to use this v
<meta property="og:url" content="https://flink.apache.org/2016/08/04/flink-1.1.1-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2016-08-04T09:00:00+00:00" />
<meta property="article:modified_time" content="2016-08-04T09:00:00+00:00" />
+
<title>Flink 1.1.1 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 e517c0214..8f8134214 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="An update for the Flink community: the Flink Forward 2016 schedule is now available online. This year's event will include 2 days of talks from stream processing experts at Google, MapR, Alibaba, Netflix, Cloudera, and more. Following the talks is a full day of hands-on Flink training.
@@ -15,11 +15,12 @@ Ted Dunning has been announced as a keynote speaker at the event. Ted is the VP
<meta property="og:url" content="https://flink.apache.org/2016/08/24/flink-forward-2016-announcing-schedule-keynotes-and-panel-discussion/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2016-08-24T09:00:00+00:00" />
<meta property="article:modified_time" content="2016-08-24T09:00:00+00:00" />
+
<title>Flink Forward 2016: Announcing Schedule, Keynotes, and Panel Discussion | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 e8582e3bd..6b8b12cda 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released another bugfix version of the Apache Flink 1.1. series.
@@ -19,11 +19,12 @@ Release Notes - Flink - Version 1.1.2 [FLINK-4236] - Flink Dashboard stops showi
<meta property="og:url" content="https://flink.apache.org/2016/09/05/apache-flink-1.1.2-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2016-09-05T09:00:00+00:00" />
<meta property="article:modified_time" content="2016-09-05T09:00:00+00:00" />
+
<title>Apache Flink 1.1.2 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 7388369ca..5153adf2a 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the next bugfix version of the Apache Flink 1.1. series.
@@ -19,11 +19,12 @@ Note for RocksDB Backend Users # It is highly recommended to use the “full
<meta property="og:url" content="https://flink.apache.org/2016/10/12/apache-flink-1.1.3-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2016-10-12T09:00:00+00:00" />
<meta property="article:modified_time" content="2016-10-12T09:00:00+00:00" />
+
<title>Apache Flink 1.1.3 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 cee3a545a..d6ce75c08 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="2016 was an exciting year for the Apache Flink® community, and the release of Flink 1.0 in March marked the first time in Flink’s history that the community guaranteed API backward compatibility for all versions in a series. This step forward for Flink was followed by many new and exciting production deployments in organizations of all shapes and sizes, all around the globe.
@@ -15,11 +15,12 @@ In this post, we’ll look back on the project’s progress over the course of 2
<meta property="og:url" content="https://flink.apache.org/2016/12/19/apache-flink-in-2016-year-in-review/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2016-12-19T09:00:00+00:00" />
<meta property="article:modified_time" content="2016-12-19T09:00:00+00:00" />
+
<title>Apache Flink in 2016: Year in Review | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 197fea412..d3727ea49 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the next bugfix version of the Apache Flink 1.1 series.
@@ -19,11 +19,12 @@ Note for RocksDB Backend Users # We updated Flink’s RocksDB dependency ver
<meta property="og:url" content="https://flink.apache.org/2016/12/21/apache-flink-1.1.4-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2016-12-21T09:00:00+00:00" />
<meta property="article:modified_time" content="2016-12-21T09:00:00+00:00" />
+
<title>Apache Flink 1.1.4 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 ec0f44d9d..94aa43cc5 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is pleased to announce the 1.2.0 release. Over the past months, the Flink community has been working hard to resolve 650 issues. See the complete changelog for more detail.
@@ -17,11 +17,12 @@ We encourage everyone to download the release and check out the documentation."
<meta property="og:url" content="https://flink.apache.org/2017/02/06/announcing-apache-flink-1.2.0/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2017-02-06T12:00:00+00:00" />
<meta property="article:modified_time" content="2017-02-06T12:00:00+00:00" />
+
<title>Announcing Apache Flink 1.2.0 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 75db30b4e..bbcd42c81 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the next bugfix version of the Apache Flink 1.1 series.
@@ -17,11 +17,12 @@ This release includes critical fixes for HA recovery robustness, fault tolerance
<meta property="og:url" content="https://flink.apache.org/2017/03/23/apache-flink-1.1.5-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2017-03-23T18:00:00+00:00" />
<meta property="article:modified_time" content="2017-03-23T18:00:00+00:00" />
+
<title>Apache Flink 1.1.5 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 c13a0c23e..366907ca2 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 business logic can deliver a competitive advantage.
@@ -15,11 +15,12 @@ Flink’s DataStream abstraction is a powerful API which lets you flexibly d
<meta property="og:url" content="https://flink.apache.org/2017/03/29/from-streams-to-tables-and-back-again-an-update-on-flinks-table-sql-api/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2017-03-29T12:00:00+00:00" />
<meta property="article:modified_time" content="2017-03-29T12:00:00+00:00" />
+
<title>From Streams to Tables and Back Again: An Update on Flink's Table & SQL API | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 09a4dedc8..cc23ec801 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Analyzing Data Streams with SQL # More and more companies are adopting stream processing and are migrating existing batch applications to streaming or implementing streaming solutions for new use cases. Many of those applications focus on analyzing streaming data. The data streams that are analyzed come from a wide variety of sources such as database transactions, clicks, sensor measurements, or IoT devices.
@@ -15,11 +15,12 @@ Apache Flink is very well suited to power streaming analytics applications becau
<meta property="og:url" content="https://flink.apache.org/2017/03/30/continuous-queries-on-dynamic-tables/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2017-03-30T12:00:00+00:00" />
<meta property="article:modified_time" content="2017-03-30T12:00:00+00:00" />
+
<title>Continuous Queries on Dynamic Tables | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 a64e34f3e..5e75b312d 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the first bugfix version of the Apache Flink 1.2 series.
@@ -21,11 +21,12 @@ FLINK-6353 Restoring using CheckpointedRestoring does not work from 1.2 to 1.2 F
<meta property="og:url" content="https://flink.apache.org/2017/04/26/apache-flink-1.2.1-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2017-04-26T18:00:00+00:00" />
<meta property="article:modified_time" content="2017-04-26T18:00:00+00:00" />
+
<title>Apache Flink 1.2.1 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 2775b7342..a4b7e79e7 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 the Docker community.
@@ -15,11 +15,12 @@ A community-maintained way to run Apache Flink on Docker and other container run
<meta property="og:url" content="https://flink.apache.org/2017/05/16/introducing-docker-images-for-apache-flink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2017-05-16T09:00:00+00:00" />
<meta property="article:modified_time" content="2017-05-16T09:00:00+00:00" />
+
<title>Introducing Docker Images for Apache Flink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 5ad072567..3bef9119c 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is pleased to announce the 1.3.0 release. Over the past 4 months, the Flink community has been working hard to resolve more than 680 issues. See the complete changelog for more detail.
@@ -17,11 +17,12 @@ Users can expect Flink releases now in a 4 month cycle." />
<meta property="og:url" content="https://flink.apache.org/2017/06/01/apache-flink-1.3.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2017-06-01T12:00:00+00:00" />
<meta property="article:modified_time" content="2017-06-01T12:00:00+00:00" />
+
<title>Apache Flink 1.3.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 50b656200..4ae08880c 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the first bugfix version of the Apache Flink 1.3 series.
@@ -19,11 +19,12 @@ We highly recommend all users to upgrade to Flink 1.3.1.
<meta property="og:url" content="https://flink.apache.org/2017/06/23/apache-flink-1.3.1-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2017-06-23T16:00:00+00:00" />
<meta property="article:modified_time" content="2017-06-23T16:00:00+00:00" />
+
<title>Apache Flink 1.3.1 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 4c8a150b6..f7cbd27a7 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Apache Flink 1.2.0, released in February 2017, introduced support for rescalable state. This post provides a detailed overview of stateful stream processing and rescalable state in Flink. {% toc %}
@@ -17,11 +17,12 @@ In contrast, operators in stateless stream processing only consider their curren
<meta property="og:url" content="https://flink.apache.org/2017/07/04/a-deep-dive-into-rescalable-state-in-apache-flink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2017-07-04T09:00:00+00:00" />
<meta property="article:modified_time" content="2017-07-04T09:00:00+00:00" />
+
<title>A Deep Dive into Rescalable State in Apache Flink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 8ae01b349..de137093f 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the second bugfix version of the Apache Flink 1.3 series.
@@ -19,11 +19,12 @@ Important Notice: A user reported a bug in the FlinkKafkaConsumer (FLINK-7143) t
<meta property="og:url" content="https://flink.apache.org/2017/08/05/apache-flink-1.3.2-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2017-08-05T09:00:00+00:00" />
<meta property="article:modified_time" content="2017-08-05T09:00:00+00:00" />
+
<title>Apache Flink 1.3.2 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 d07a56107..a836c91e1 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 save for 1.5.0.
@@ -15,11 +15,12 @@ Both releases include ambitious features that we believe will move Flink to an e
<meta property="og:url" content="https://flink.apache.org/2017/11/21/looking-ahead-to-apache-flink-1.4.0-and-1.5.0/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2017-11-21T10:00:00+00:00" />
<meta property="article:modified_time" content="2017-11-21T10:00:00+00:00" />
+
<title>Looking Ahead to Apache Flink 1.4.0 and 1.5.0 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 a99b14f99..696754220 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.
@@ -17,11 +17,12 @@ We encourage everyone to download the release and check out the documentation."
<meta property="og:url" content="https://flink.apache.org/2017/12/12/apache-flink-1.4.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2017-12-12T10:00:00+00:00" />
<meta property="article:modified_time" content="2017-12-12T10:00:00+00:00" />
+
<title>Apache Flink 1.4.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 392218fb3..7358763f3 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 innovative production deployments, redefining what is possible with a modern stream processing framework like Flink.">
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2017/12/21/apache-flink-in-2017-year-in-review/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2017-12-21T09:00:00+00:00" />
<meta property="article:modified_time" content="2017-12-21T09:00:00+00:00" />
+
<title>Apache Flink in 2017: Year in Review | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 560053339..41839eec2 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Apache Flink was purpose-built for stateful stream processing. However, what is state in a stream processing application? I defined state and stateful stream processing in a previous blog post, and in case you need a refresher, state is defined as memory in an application’s operators that stores information about previously-seen events that you can use to influence the processing of future events.
@@ -15,11 +15,12 @@ State is a fundamental, enabling concept in stream processing required for a maj
<meta property="og:url" content="https://flink.apache.org/2018/01/30/managing-large-state-in-apache-flink-an-intro-to-incremental-checkpointing/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-01-30T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-01-30T12:00:00+00:00" />
+
<title>Managing Large State in Apache Flink: An Intro to Incremental Checkpointing | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 87903d257..c8bdb2243 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the first bugfix version of the Apache Flink 1.4 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2018/02/15/apache-flink-1.4.1-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-02-15T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-02-15T12:00:00+00:00" />
+
<title>Apache Flink 1.4.1 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 e1b2c17a5..775b09f98 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="This post is an adaptation of Piotr Nowojski’s presentation from Flink Forward Berlin 2017. You can find the slides and a recording of the presentation on the Flink Forward Berlin website.
@@ -15,11 +15,12 @@ Apache Flink 1.4.0, released in December 2017, introduced a significant mileston
<meta property="og:url" content="https://flink.apache.org/2018/02/28/an-overview-of-end-to-end-exactly-once-processing-in-apache-flink-with-apache-kafka-too/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-02-28T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-02-28T12:00:00+00:00" />
+
<title>An Overview of End-to-End Exactly-Once Processing in Apache Flink (with Apache Kafka, too!) | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 9dcf487e1..c9df6108e 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the second bugfix version of the Apache Flink 1.4 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2018/03/08/apache-flink-1.4.2-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-03-08T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-03-08T12:00:00+00:00" />
+
<title>Apache Flink 1.4.2 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 1f503b7e2..77287b6ee 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the third bugfix version of the Apache Flink 1.3 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2018/03/15/apache-flink-1.3.3-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-03-15T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-03-15T12:00:00+00:00" />
+
<title>Apache Flink 1.3.3 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 60c0017a5..2d0e80d21 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is thrilled to announce the 1.5.0 release. Over the past 5 months, the Flink community has been working hard to resolve more than 780 issues. Please check the complete changelog for more detail.
@@ -17,11 +17,12 @@ We encourage everyone to download the release and check out the documentation."
<meta property="og:url" content="https://flink.apache.org/2018/05/18/apache-flink-1.5.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-05-18T10:00:00+00:00" />
<meta property="article:modified_time" content="2018-05-18T10:00:00+00:00" />
+
<title>Apache Flink 1.5.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 81eeb789b..aec21ab5f 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the first bugfix version of the Apache Flink 1.5 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2018/07/12/apache-flink-1.5.1-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-07-12T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-07-12T12:00:00+00:00" />
+
<title>Apache Flink 1.5.1 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 d89257ec5..3723f811e 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the second bugfix version of the Apache Flink 1.5 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2018/07/31/apache-flink-1.5.2-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-07-31T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-07-31T12:00:00+00:00" />
+
<title>Apache Flink 1.5.2 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 974a903bc..f88a58706 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is proud to announce the 1.6.0 release. Over the past 2 months, the Flink community has worked hard to resolve more than 360 issues. Please check the complete changelog for more details.
@@ -17,11 +17,12 @@ We encourage everyone to download the release and check out the documentation."
<meta property="og:url" content="https://flink.apache.org/2018/08/09/apache-flink-1.6.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-08-09T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-08-09T12:00:00+00:00" />
+
<title>Apache Flink 1.6.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 e31294265..f11c130dd 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the third bugfix version of the Apache Flink 1.5 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2018/08/21/apache-flink-1.5.3-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-08-21T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-08-21T12:00:00+00:00" />
+
<title>Apache Flink 1.5.3 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 50dfa9163..d74e50881 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the fourth bugfix version of the Apache Flink 1.5 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2018/09/20/apache-flink-1.5.4-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-09-20T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-09-20T12:00:00+00:00" />
+
<title>Apache Flink 1.5.4 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 0cfc7146a..0fe44cc55 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the first bugfix version of the Apache Flink 1.6 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2018/09/20/apache-flink-1.6.1-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-09-20T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-09-20T12:00:00+00:00" />
+
<title>Apache Flink 1.6.1 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 1bc09803c..4eb4d7b5e 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the fifth bugfix version of the Apache Flink 1.5 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2018/10/29/apache-flink-1.5.5-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-10-29T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-10-29T12:00:00+00:00" />
+
<title>Apache Flink 1.5.5 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 69a99563e..ff3b73158 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the second bugfix version of the Apache Flink 1.6 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2018/10/29/apache-flink-1.6.2-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-10-29T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-10-29T12:00:00+00:00" />
+
<title>Apache Flink 1.6.2 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 f25664738..e9687e331 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is pleased to announce Apache Flink 1.7.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 changelog for more details.
@@ -15,11 +15,12 @@ Flink 1.7.0 is API-compatible with previous 1.x.y releases for APIs annotated wi
<meta property="og:url" content="https://flink.apache.org/2018/11/30/apache-flink-1.7.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-11-30T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-11-30T12:00:00+00:00" />
+
<title>Apache Flink 1.7.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 e05eae9ac..8a2fcd94a 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the first bugfix version of the Apache Flink 1.7 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2018/12/21/apache-flink-1.7.1-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-12-21T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-12-21T12:00:00+00:00" />
+
<title>Apache Flink 1.7.1 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 ebbf9e5b5..9698a0d74 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the third bugfix version of the Apache Flink 1.6 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2018/12/22/apache-flink-1.6.3-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-12-22T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-12-22T12:00:00+00:00" />
+
<title>Apache Flink 1.6.3 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 a4c36163d..4a34021bc 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the sixth and last bugfix version of the Apache Flink 1.5 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2018/12/26/apache-flink-1.5.6-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2018-12-26T12:00:00+00:00" />
<meta property="article:modified_time" content="2018-12-26T12:00:00+00:00" />
+
<title>Apache Flink 1.5.6 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 6cc895aed..408dacad6 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Last week, we broke the news that Alibaba decided to contribute its Flink-fork, called Blink, back to the Apache Flink project. Why is that a big thing for Flink, what will it mean for users and the community, and how does it fit into Flink’s overall vision? Let’s take a step back to understand this better…
@@ -15,11 +15,12 @@ A Unified Approach to Batch and Streaming # Since its early days, Apache Flink h
<meta property="og:url" content="https://flink.apache.org/2019/02/13/batch-as-a-special-case-of-streaming-and-alibabas-contribution-of-blink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-02-13T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-02-13T12:00:00+00:00" />
+
<title>Batch as a Special Case of Streaming and Alibaba's contribution of Blink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 2de52ee5a..c6993cc56 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the second bugfix version of the Apache Flink 1.7 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2019/02/15/apache-flink-1.7.2-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-02-15T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-02-15T12:00:00+00:00" />
+
<title>Apache Flink 1.7.2 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 0be9d6cf5..6583ce1b1 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="This blog post provides an introduction to Apache Flink’s built-in monitoring and metrics system, that allows developers to effectively monitor their Flink jobs. Oftentimes, the task of picking the relevant metrics to monitor a Flink application can be overwhelming for a DevOps team that is just starting with stream processing and Apache Flink. Having worked with many organizations that deploy Flink at scale, I would like to share my experience and some [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2019/02/21/monitoring-apache-flink-applications-101/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-02-21T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-02-21T12:00:00+00:00" />
+
<title>Monitoring Apache Flink Applications 101 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 37e490012..66f4300d9 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the fourth bugfix version of the Apache Flink 1.6 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2019/02/25/apache-flink-1.6.4-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-02-25T00:00:00+00:00" />
<meta property="article:modified_time" content="2019-02-25T00:00:00+00:00" />
+
<title>Apache Flink 1.6.4 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 ccea19385..0f1af1ff3 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 sessions and exciting use cases that were put into production with Flink. The event will take place on April 1-2, 2019 at Hotel Nikko in San Francisco.">
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2019/03/06/what-to-expect-from-flink-forward-san-francisco-2019/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-03-06T11:00:00+00:00" />
<meta property="article:modified_time" content="2019-03-06T11:00:00+00:00" />
+
<title>What to expect from Flink Forward San Francisco 2019 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 e95c4642d..0786406f7 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="This blog post describes how developers can leverage Apache Flink’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 will cover some basic Prometheus concepts and why it is a great fit for monitoring Apache Flink stream processing jobs. There is also an example to showcase how you can utilize Prometh [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2019/03/11/flink-and-prometheus-cloud-native-monitoring-of-streaming-applications/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-03-11T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-03-11T12:00:00+00:00" />
+
<title>Flink and Prometheus: Cloud-native monitoring of streaming applications | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 278251291..51a1ea6a4 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 changelog for more details.
@@ -15,11 +15,12 @@ Flink 1.8.0 is API-compatible with previous 1.x.y releases for APIs annotated wi
<meta property="og:url" content="https://flink.apache.org/2019/04/09/apache-flink-1.8.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-04-09T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-04-09T12:00:00+00:00" />
+
<title>Apache Flink 1.8.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 201778ba5..db7efaabe 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 contributors to collaborate on our documentation, we would like to take this chance to work with one or two technical writers to extend and re [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2019/04/17/apache-flinks-application-to-season-of-docs/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-04-17T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-04-17T12:00:00+00:00" />
+
<title>Apache Flink's Application to Season of Docs | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 4db3db552..0d12bf423 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 short introduction to Apache Pulsar and its differentiating elements from other messaging systems and describe [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2019/05/03/when-flink-pulsar-come-together/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-05-03T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-05-03T12:00:00+00:00" />
+
<title>When Flink & Pulsar Come Together | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -988,11 +989,11 @@ https://github.com/alex-shpak/hugo-book
</span></span><span class="line"><span class="cl"><span class="c1">// perform computation on DataStream (here a simple WordCount)
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">WordWithCount</span><span class="o">></span> <span class="n">wc</span> <span class="o">=</span> <span class="n">words</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">flatMap</span><span class="o">((</span><span class="n">FlatMapFunction</span><span class="o"><</span><span class="n">String</span><span class="o">,</span> <span class="n">WordWithCount</span><span class="o">>)</span> <span class="o">(</span><span class="n">word</span><span class="o">,</span> <span class="n">collector</span><span class="o">)</span> <span class="o">-></span> <span class=" [...]
-</span></span><span class="line"><span class="cl"> <span class="n">collector</span><span class="o">.</span><span class="na">collect</span><span class="o">(</span><span class="k">new</span> <span class="n">WordWithCount</span><span class="o">(</span><span class="n">word</span><span class="o">,</span> <span class="mi">1</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl"> <span class="n">collector</span><span class="o">.</span><span class="na">collect</span><span class="o">(</span><span class="k">new</span> <span class="n">WordWithCount</span><span class="o">(</span><span class="n">word</span><span class="o">,</span> <span class="n">1</span><span class="o">));</span>
</span></span><span class="line"><span class="cl"> <span class="o">})</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">returns</span><span class="o">(</span><span class="n">WordWithCount</span><span class="o">.</span><span class="na">class</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">keyBy</span><span class="o">(</span><span class="s">"word"</span><span class="o">)</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">timeWindow</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">seconds</span><span class="o">(</span><span class="mi">5</span><span class="o">))</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">timeWindow</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">seconds</span><span class="o">(</span><span class="n">5</span><span class="o">))</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">reduce</span><span class="o">((</span><span class="n">ReduceFunction</span><span class="o"><</span><span class="n">WordWithCount</span><span class="o">>)</span> <span class="o">(</span><span class="n">c1</span><span class="o">,</span> <span class="n">c2</span><span class="o">)</span> <span class="o">-></span>
</span></span><span class="line"><span class="cl"> <span class="k">new</span> <span class="n">WordWithCount</span><span class="o">(</span><span class="n">c1</span><span class="o">.</span><span class="na">word</span><span class="o">,</span> <span class="n">c1</span><span class="o">.</span><span class="na">count</span> <span class="o">+</span> <span class="n">c2</span><span class="o">.</span><span class="na">count</span><span class="o">));</span>
</span></span><span class="line"><span class="cl">
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 d58b87851..a9e057fe6 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 this as part of the application logic, often hurting the length of the development lifecycle as well as the maintainability of the code.">
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2019/05/14/flux-capacitor-huh-temporal-tables-and-joins-in-streaming-sql/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-05-14T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-05-14T12:00:00+00:00" />
+
<title>Flux capacitor, huh? Temporal Tables and Joins in Streaming SQL | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -947,11 +948,11 @@ https://github.com/alex-shpak/hugo-book
</span></span><span class="line"><span class="cl"><span class="c1">// Provide a sample static data set of the rates history table.
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">List</span> <span class="o"><</span><span class="n">Tuple2</span><span class="o"><</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">>></span><span class="n">ratesHistoryData</span> <span class="o">=</span><span class="k">new</span> <span class="n">ArrayList</span><span class="o"><>();</span>
</span></span><span class="line"><span class="cl">
-</span></span><span class="line"><span class="cl"><span class="n">ratesHistoryData</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">Tuple2</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="s">"USD"</span><span class="o">,</span> <span class="mi">102L</span><span class="o">));</span>
-</span></span><span class="line"><span class="cl"><span class="n">ratesHistoryData</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">Tuple2</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="s">"EUR"</span><span class="o">,</span> <span class="mi">114L</span><span class="o">));</span>
-</span></span><span class="line"><span class="cl"><span class="n">ratesHistoryData</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">Tuple2</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="s">"YEN"</span><span class="o">,</span> <span class="mi">1L</span><span class="o">));</span>
-</span></span><span class="line"><span class="cl"><span class="n">ratesHistoryData</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">Tuple2</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="s">"EUR"</span><span class="o">,</span> <span class="mi">116L</span><span class="o">));</span>
-</span></span><span class="line"><span class="cl"><span class="n">ratesHistoryData</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">Tuple2</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="s">"USD"</span><span class="o">,</span> <span class="mi">105L</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl"><span class="n">ratesHistoryData</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">Tuple2</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="s">"USD"</span><span class="o">,</span> <span class="n">102L</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl"><span class="n">ratesHistoryData</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">Tuple2</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="s">"EUR"</span><span class="o">,</span> <span class="n">114L</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl"><span class="n">ratesHistoryData</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">Tuple2</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="s">"YEN"</span><span class="o">,</span> <span class="n">1L</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl"><span class="n">ratesHistoryData</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">Tuple2</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="s">"EUR"</span><span class="o">,</span> <span class="n">116L</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl"><span class="n">ratesHistoryData</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">Tuple2</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="s">"USD"</span><span class="o">,</span> <span class="n">105L</span><span class="o">));</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Create and register an example table using the sample data set.
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">Tuple2</span><span class="o"><</span><span class="n">String</span><span class="o">,</span> <span class="n">Long</span><span class="o">>></span> <span class="n">ratesHistoryStream</span> <span class="o">=</span> <span class="n">env</span><span class="o">.</span><span class="na">fromCollection</span><span class="o">(</span><sp [...]
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 dd5de624c..f71889bb1 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 regulations like the GDPR). The state time-to-live (TTL) feature was initiated in Flink 1.6.0 and enabled application state cleanup and efficient state size management in Apache Flink.
@@ -15,11 +15,12 @@ In this post, we motivate the State TTL feature and discuss its use cases." />
<meta property="og:url" content="https://flink.apache.org/2019/05/17/state-ttl-in-flink-1.8.0-how-to-automatically-cleanup-application-state-in-apache-flink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-05-17T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-05-17T12:00:00+00:00" />
+
<title>State TTL in Flink 1.8.0: How to Automatically Cleanup Application State in Apache Flink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -951,7 +952,7 @@ Recent developments around data privacy regulations, such as the General Data Pr
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">org.apache.flink.api.common.state.ValueStateDescriptor</span><span class="o">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">StateTtlConfig</span> <span class="n">ttlConfig</span> <span class="o">=</span> <span class="n">StateTtlConfig</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">newBuilder</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">days</span><span class="o">(</span><span class="mi">7</span><span class="o">))</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">newBuilder</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">days</span><span class="o">(</span><span class="n">7</span><span class="o">))</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">setUpdateType</span><span class="o">(</span><span class="n">StateTtlConfig</span><span class="o">.</span><span class="na">UpdateType</span><span class="o">.</span><span class="na">OnCreateAndWrite</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">setStateVisibility</span><span class="o">(</span><span class="n">StateTtlConfig</span><span class="o">.</span><span class="na">StateVisibility</span><span class="o">.</span><span class="na">NeverReturnExpired</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">build</span><span class="o">();</span>
@@ -989,7 +990,7 @@ With Flink 1.8.0, users can only define a state TTL in terms of processing time.
</h2>
<p>Flink 1.6.0 already supported automatic eviction of the expired state when a full snapshot for a checkpoint or savepoint is taken. Note that state eviction is not applied for incremental checkpoints. State eviction on full snapshots must be explicitly enabled as shown in the following example:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">StateTtlConfig</span> <span class="n">ttlConfig</span> <span class="o">=</span> <span class="n">StateTtlConfig</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">newBuilder</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">days</span><span class="o">(</span><span class="mi">7</span><span class="o">))</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">newBuilder</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">days</span><span class="o">(</span><span class="n">7</span><span class="o">))</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">cleanupFullSnapshot</span><span class="o">()</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">build</span><span class="o">();</span>
</span></span></code></pre></div><p>The local storage stays untouched but the size of the stored snapshot is reduced. The local state of an operator will only be cleaned up when the operator reloads its state from a snapshot, i.e. in case of recovery or when starting from a savepoint.</p>
@@ -1000,9 +1001,9 @@ With Flink 1.8.0, users can only define a state TTL in terms of processing time.
</h2>
<p>This approach is specific to the Heap state backends (FSStateBackend and MemoryStateBackend). The idea is that the storage backend keeps a lazy global iterator over all state entries. Certain events, for instance state access, trigger an incremental cleanup. Every time an incremental cleanup is triggered, the iterator is advanced. The traversed state entries are checked and expired once are removed. The following code example shows how to enable incremental cleanup:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">StateTtlConfig</span> <span class="n">ttlConfig</span> <span class="o">=</span> <span class="n">StateTtlConfig</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">newBuilder</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">days</span><span class="o">(</span><span class="mi">7</span><span class="o">))</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">newBuilder</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">days</span><span class="o">(</span><span class="n">7</span><span class="o">))</span>
</span></span><span class="line"><span class="cl"> <span class="c1">// check 10 keys for every state access
-</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="o">.</span><span class="na">cleanupIncrementally</span><span class="o">(</span><span class="mi">10</span><span class="o">,</span> <span class="kc">false</span><span class="o">)</span>
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="o">.</span><span class="na">cleanupIncrementally</span><span class="o">(</span><span class="n">10</span><span class="o">,</span> <span class="kc">false</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">build</span><span class="o">();</span>
</span></span></code></pre></div><p>If enabled, every state access triggers a cleanup step. For every clean up step, a certain number of state entries are checked for expiration. There are two tuning parameters. The first defines the number of state entries to check for each cleanup step. The second parameter is a flag to trigger a cleanup step after each processed record, additionally to each state access.</p>
<p>There are two important caveats about this approach:</p>
@@ -1017,7 +1018,7 @@ With Flink 1.8.0, users can only define a state TTL in terms of processing time.
<p>If your application uses the RocksDB state backend, you can enable another cleanup strategy which is based on a Flink specific compaction filter. RocksDB periodically runs asynchronous compactions to merge state updates and reduce storage. The Flink compaction filter checks the expiration timestamp of state entries with TTL and discards all expired values.</p>
<p>The first step to activate this feature is to configure the RocksDB state backend by setting the following Flink configuration option: <code>state.backend.rocksdb.ttl.compaction.filter.enabled</code>. Once the RocksDB state backend is configured, the compaction cleanup strategy is enabled for a state as shown in the following code example:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">StateTtlConfig</span> <span class="n">ttlConfig</span> <span class="o">=</span> <span class="n">StateTtlConfig</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">newBuilder</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">days</span><span class="o">(</span><span class="mi">7</span><span class="o">))</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">newBuilder</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">days</span><span class="o">(</span><span class="n">7</span><span class="o">))</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">cleanupInRocksdbCompactFilter</span><span class="o">()</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">build</span><span class="o">();</span>
</span></span></code></pre></div><p>Keep in mind that calling the Flink TTL filter slows down the RocksDB compaction.</p>
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 ff23ef106..149dd2de7 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 as well as latency you observe. In contrast to the coordination channels between TaskManagers and JobManagers which are [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2019/06/05/a-deep-dive-into-flinks-network-stack/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-06-05T08:45:00+00:00" />
<meta property="article:modified_time" content="2019-06-05T08:45:00+00:00" />
+
<title>A Deep-Dive into Flink's Network Stack | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 8bc044168..95aa5c0d2 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Since version 1.5.0, Apache Flink features a new type of state which is called Broadcast State. In this post, we explain what Broadcast State is, and show an example of how it can be applied to an application that evaluates dynamic patterns on an event stream. We walk you through the processing steps and the source code to implement this application in practice.
@@ -15,11 +15,12 @@ What is Broadcast State? # The Broadcast State can be used to combine and jointl
<meta property="og:url" content="https://flink.apache.org/2019/06/26/a-practical-guide-to-broadcast-state-in-apache-flink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-06-26T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-06-26T12:00:00+00:00" />
+
<title>A Practical Guide to Broadcast State in Apache Flink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 0faf322d2..dd0021b11 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the first bugfix version of the Apache Flink 1.8 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2019/07/02/apache-flink-1.8.1-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-07-02T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-07-02T12:00:00+00:00" />
+
<title>Apache Flink 1.8.1 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 bc827d552..b442b1cf3 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 to identify effects such as backpressure or bottlenecks in throughput and latency. Although this post briefly covers what to do with backpressure, the topic of tuning the network stack will be fu [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2019/07/23/flink-network-stack-vol.-2-monitoring-metrics-and-that-backpressure-thing/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-07-23T15:30:00+00:00" />
<meta property="article:modified_time" content="2019-07-23T15:30:00+00:00" />
+
<title>Flink Network Stack Vol. 2: Monitoring, Metrics, and that Backpressure Thing | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 6e0df043d..7536f4c3a 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is proud to announce the release of Apache Flink 1.9.0.
@@ -15,11 +15,12 @@ The Apache Flink project’s goal is to develop a stream processing system t
<meta property="og:url" content="https://flink.apache.org/2019/08/22/apache-flink-1.9.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-08-22T02:30:00+00:00" />
<meta property="article:modified_time" content="2019-08-22T02:30:00+00:00" />
+
<title>Apache Flink 1.9.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 a28fee801..511654f59 100644
--- a/content/2019/09/05/flink-community-update-september19/index.html
+++ b/content/2019/09/05/flink-community-update-september19/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="This has been an exciting, fast-paced year for the Apache Flink community. But with over 10k messages across the mailing lists, 3k Jira tickets and 2k pull requests, it is not easy to keep up with the latest state of the project. Plus everything happening around it. With that in mind, we want to bring back regular community updates to the Flink blog.
@@ -15,11 +15,12 @@ The first post in the series takes you on an little detour across the year, to f
<meta property="og:url" content="https://flink.apache.org/2019/09/05/flink-community-update-september19/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-09-05T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-09-05T12:00:00+00:00" />
+
<title>Flink Community Update - September'19 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 c53df5c2f..1ad9aac57 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the second bugfix version of the Apache Flink 1.8 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2019/09/11/apache-flink-1.8.2-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-09-11T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-09-11T12:00:00+00:00" />
+
<title>Apache Flink 1.8.2 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 5c4cae83d..b8aba71e8 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Whether you are running Apache FlinkⓇ in production or evaluated Flink as a computation framework in the past, you’ve probably found yourself asking the question: How can I access, write or update state in a Flink savepoint? Ask no more! Apache Flink 1.9.0 introduces the State Processor API, a powerful extension of the DataSet API that allows reading, writing and modifying state in Flink’s savepoints and checkpoints.
@@ -15,11 +15,12 @@ In this post, we explain why this feature is a big step for Flink, what you can
<meta property="og:url" content="https://flink.apache.org/2019/09/13/the-state-processor-api-how-to-read-write-and-modify-the-state-of-flink-applications/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-09-13T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-09-13T12:00:00+00:00" />
+
<title>The State Processor API: How to Read, write and modify the state of Flink applications | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 5a4d3af0a..b1690d854 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the first bugfix version of the Apache Flink 1.9 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2019/10/18/apache-flink-1.9.1-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-10-18T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-10-18T12:00:00+00:00" />
+
<title>Apache Flink 1.9.1 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 4d3723615..505d54e94 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 Operator pattern provides an extension mechanism to Kubernetes that captures human operator knowledge about an application, like Flink [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2019/11/06/running-apache-flink-on-kubernetes-with-kudo/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-11-06T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-11-06T12:00:00+00:00" />
+
<title>Running Apache Flink on Kubernetes with KUDO | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 d63e68328..da8a20fb3 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="In a previous story on the Flink blog, we explained the different ways that Apache Flink and Apache Pulsar can integrate to provide elastic data processing at large scale. This blog post discusses the new developments and integrations between the two frameworks and showcases how you can leverage Pulsar’s built-in schema to query Pulsar streams in real time using Apache Flink.
@@ -15,11 +15,12 @@ A short intro to Apache Pulsar # Apache Pulsar is a flexible pub/sub messaging s
<meta property="og:url" content="https://flink.apache.org/2019/11/25/how-to-query-pulsar-streams-using-apache-flink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-11-25T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-11-25T12:00:00+00:00" />
+
<title>How to query Pulsar Streams using Apache Flink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -941,12 +942,12 @@ https://github.com/alex-shpak/hugo-book
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="c1">// perform computation on DataStream (here a simple WordCount)
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">WordWithCount</span><span class="o">></span> <span class="n">wc</span> <span class="o">=</span> <span class="n">words</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">flatmap</span><span class="o">((</span><span class="n">FlatMapFunction</span><span class="o"><</span><span class="n">String</span><span class="o">,</span> <span class="n">WordWithCount</span><span class="o">>)</span> <span class="o">(</span><span class="n">word</span><span class="o">,</span> <span class="n">collector</span><span class="o">)</span> <span class="o">-></span> <span class="o [...]
-</span></span><span class="line"><span class="cl"> <span class="n">collector</span><span class="o">.</span><span class="na">collect</span><span class="o">(</span><span class="k">new</span> <span class="n">WordWithCount</span><span class="o">(</span><span class="n">word</span><span class="o">,</span> <span class="mi">1</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl"> <span class="n">collector</span><span class="o">.</span><span class="na">collect</span><span class="o">(</span><span class="k">new</span> <span class="n">WordWithCount</span><span class="o">(</span><span class="n">word</span><span class="o">,</span> <span class="n">1</span><span class="o">));</span>
</span></span><span class="line"><span class="cl"> <span class="o">})</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">returns</span><span class="o">(</span><span class="n">WordWithCount</span><span class="o">.</span><span class="na">class</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">keyBy</span><span class="o">(</span><span class="s">"word"</span><span class="o">)</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">timeWindow</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">seconds</span><span class="o">(</span><span class="mi">5</span><span class="o">))</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">timeWindow</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">seconds</span><span class="o">(</span><span class="n">5</span><span class="o">))</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">reduce</span><span class="o">((</span><span class="n">ReduceFunction</span><span class="o"><</span><span class="n">WordWithCount</span><span class="o">>)</span> <span class="o">(</span><span class="n">c1</span><span class="o">,</span> <span class="n">c2</span><span class="o">)</span> <span class="o">-></span>
</span></span><span class="line"><span class="cl"> <span class="k">new</span> <span class="n">WordWithCount</span><span class="o">(</span><span class="n">c1</span><span class="o">.</span><span class="na">word</span><span class="o">,</span> <span class="n">c1</span><span class="o">.</span><span class="na">count</span> <span class="o">+</span> <span class="n">c2</span><span class="o">.</span><span class="na">count</span><span class="o">));</span>
</span></span></code></pre></div><p>…and then get emitted back to Pulsar (used now as a sink), sending one’s computation results downstream, back to a Pulsar topic:</p>
@@ -975,7 +976,7 @@ https://github.com/alex-shpak/hugo-book
</span></span><span class="line"><span class="cl"><span class="n">producer</span><span class="o">.</span><span class="na">newMessage</span><span class="o">()</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">value</span><span class="o">(</span><span class="n">User</span><span class="o">.</span><span class="na">builder</span><span class="o">()</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">userName</span><span class="o">(</span><span class="err">“</span><span class="n">pulsar</span><span class="o">-</span><span class="n">user</span><span class="err">”</span><span class="o">)</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">userId</span><span class="o">(</span><span class="mi">1L</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">userId</span><span class="o">(</span><span class="n">1L</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">build</span><span class="o">())</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">send</span><span class="o">();</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="c1">// Create consumer with Struct schema and receive messages
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 a40bba6c2..b712d6de0 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the third bugfix version of the Apache Flink 1.8 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2019/12/11/apache-flink-1.8.3-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2019-12-11T12:00:00+00:00" />
<meta property="article:modified_time" content="2019-12-11T12:00:00+00:00" />
+
<title>Apache Flink 1.8.3 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 a26452222..a0e4ce73d 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="In this series of blog posts you will learn about three powerful Flink patterns for building streaming applications:
@@ -17,11 +17,12 @@ Dynamic updates of application logic allow Flink jobs to change at runtime, with
<meta property="og:url" content="https://flink.apache.org/2020/01/15/advanced-flink-application-patterns-vol.1-case-study-of-a-fraud-detection-system/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-01-15T12:00:00+00:00" />
<meta property="article:modified_time" content="2020-01-15T12:00:00+00:00" />
+
<title>Advanced Flink Application Patterns Vol.1: Case Study of a Fraud Detection System | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 9cc0d9425..c7f6616ea 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Introduction # With stateful stream-processing becoming the norm for complex event-driven applications and real-time analytics, Apache Flink is often the backbone for running business logic and managing an organization’s most valuable asset — its data — as application state in Flink.
@@ -15,11 +15,12 @@ In order to provide a state-of-the-art experience to Flink developers, the Apach
<meta property="og:url" content="https://flink.apache.org/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-01-29T12:00:00+00:00" />
<meta property="article:modified_time" content="2020-01-29T12:00:00+00:00" />
+
<title>State Unlocked: Interacting with State in Apache Flink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -1028,7 +1029,7 @@ https://github.com/alex-shpak/hugo-book
<p>When serializing out the snapshot, the snapshot configuration will write two pieces of information; the current snapshot configuration version and the serializer configuration.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"> <span class="nd">@Override</span>
</span></span><span class="line"><span class="cl"> <span class="kd">public</span> <span class="kt">int</span> <span class="nf">getCurrentVersion</span><span class="o">()</span> <span class="o">{</span>
-</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="mi">1</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">1</span><span class="o">;</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="err"></span>
</span></span><span class="line"><span class="cl"> <span class="nd">@Override</span>
@@ -1042,7 +1043,7 @@ https://github.com/alex-shpak/hugo-book
</span></span><span class="line"><span class="cl"> <span class="n">DataInputView</span> <span class="n">in</span><span class="o">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">ClassLoader</span> <span class="n">userCodeClassLoader</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">IOException</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl">
-</span></span><span class="line"><span class="cl"> <span class="k">assert</span> <span class="n">readVersion</span> <span class="o">==</span> <span class="mi">1</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"> <span class="k">assert</span> <span class="n">readVersion</span> <span class="o">==</span> <span class="n">1</span><span class="o">;</span>
</span></span><span class="line"><span class="cl"> <span class="kd">final</span> <span class="n">String</span> <span class="n">previousSchemaDefinition</span> <span class="o">=</span> <span class="n">in</span><span class="o">.</span><span class="na">readUTF</span><span class="o">();</span>
</span></span><span class="line"><span class="cl"> <span class="k">this</span><span class="o">.</span><span class="na">previousSchema</span> <span class="o">=</span> <span class="n">parseAvroSchema</span><span class="o">(</span><span class="n">previousSchemaDefinition</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="k">this</span><span class="o">.</span><span class="na">runtimeType</span> <span class="o">=</span> <span class="n">findClassOrFallbackToGeneric</span><span class="o">(</span>
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 a08dc643f..6e90cc348 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the second bugfix version of the Apache Flink 1.9 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2020/01/30/apache-flink-1.9.2-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-01-30T12:00:00+00:00" />
<meta property="article:modified_time" content="2020-01-30T12:00:00+00:00" />
+
<title>Apache Flink 1.9.2 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 2383480d8..05be7a57e 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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-time data processing system. In the following sections, we provide a guide for unit testing of Apache Flink applications.">
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2020/02/03/a-guide-for-unit-testing-in-apache-flink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-02-03T12:00:00+00:00" />
<meta property="article:modified_time" content="2020-02-03T12:00:00+00:00" />
+
<title>A Guide for Unit Testing in Apache Flink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -1023,22 +1024,22 @@ Apache Flink provides a robust unit testing framework to make sure your applicat
</span></span><span class="line"><span class="cl"> <span class="n">testHarness</span><span class="o">.</span><span class="na">open</span><span class="o">();</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="c1">// test first record
-</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">testHarness</span><span class="o">.</span><span class="na">processElement</span><span class="o">(</span><span class="s">"world"</span><span class="o">,</span> <span class="mi">10</span><span class="o">);</span>
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">testHarness</span><span class="o">.</span><span class="na">processElement</span><span class="o">(</span><span class="s">"world"</span><span class="o">,</span> <span class="n">10</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="n">ValueState</span><span class="o"><</span><span class="n">String</span><span class="o">></span> <span class="n">previousInput</span> <span class="o">=</span>
</span></span><span class="line"><span class="cl"> <span class="n">statefulFlatMap</span><span class="o">.</span><span class="na">getRuntimeContext</span><span class="o">().</span><span class="na">getState</span><span class="o">(</span>
</span></span><span class="line"><span class="cl"> <span class="k">new</span> <span class="n">ValueStateDescriptor</span><span class="o"><>(</span><span class="s">"previousInput"</span><span class="o">,</span> <span class="n">Types</span><span class="o">.</span><span class="na">STRING</span><span class="o">));</span>
</span></span><span class="line"><span class="cl"> <span class="n">String</span> <span class="n">stateValue</span> <span class="o">=</span> <span class="n">previousInput</span><span class="o">.</span><span class="na">value</span><span class="o">();</span>
</span></span><span class="line"><span class="cl"> <span class="n">Assert</span><span class="o">.</span><span class="na">assertEquals</span><span class="o">(</span>
-</span></span><span class="line"><span class="cl"> <span class="n">Lists</span><span class="o">.</span><span class="na">newArrayList</span><span class="o">(</span><span class="k">new</span> <span class="n">StreamRecord</span><span class="o"><>(</span><span class="s">"hello world"</span><span class="o">,</span> <span class="mi">10</span><span class="o">)),</span>
+</span></span><span class="line"><span class="cl"> <span class="n">Lists</span><span class="o">.</span><span class="na">newArrayList</span><span class="o">(</span><span class="k">new</span> <span class="n">StreamRecord</span><span class="o"><>(</span><span class="s">"hello world"</span><span class="o">,</span> <span class="n">10</span><span class="o">)),</span>
</span></span><span class="line"><span class="cl"> <span class="n">testHarness</span><span class="o">.</span><span class="na">extractOutputStreamRecords</span><span class="o">());</span>
</span></span><span class="line"><span class="cl"> <span class="n">Assert</span><span class="o">.</span><span class="na">assertEquals</span><span class="o">(</span><span class="s">"world"</span><span class="o">,</span> <span class="n">stateValue</span><span class="o">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="c1">// test second record
-</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">testHarness</span><span class="o">.</span><span class="na">processElement</span><span class="o">(</span><span class="s">"parallel"</span><span class="o">,</span> <span class="mi">20</span><span class="o">);</span>
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">testHarness</span><span class="o">.</span><span class="na">processElement</span><span class="o">(</span><span class="s">"parallel"</span><span class="o">,</span> <span class="n">20</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="n">Assert</span><span class="o">.</span><span class="na">assertEquals</span><span class="o">(</span>
</span></span><span class="line"><span class="cl"> <span class="n">Lists</span><span class="o">.</span><span class="na">newArrayList</span><span class="o">(</span>
-</span></span><span class="line"><span class="cl"> <span class="k">new</span> <span class="n">StreamRecord</span><span class="o"><>(</span><span class="s">"hello world"</span><span class="o">,</span> <span class="mi">10</span><span class="o">),</span>
-</span></span><span class="line"><span class="cl"> <span class="k">new</span> <span class="n">StreamRecord</span><span class="o"><>(</span><span class="s">"hello parallel world"</span><span class="o">,</span> <span class="mi">20</span><span class="o">)),</span>
+</span></span><span class="line"><span class="cl"> <span class="k">new</span> <span class="n">StreamRecord</span><span class="o"><>(</span><span class="s">"hello world"</span><span class="o">,</span> <span class="n">10</span><span class="o">),</span>
+</span></span><span class="line"><span class="cl"> <span class="k">new</span> <span class="n">StreamRecord</span><span class="o"><>(</span><span class="s">"hello parallel world"</span><span class="o">,</span> <span class="n">20</span><span class="o">)),</span>
</span></span><span class="line"><span class="cl"> <span class="n">testHarness</span><span class="o">.</span><span class="na">extractOutputStreamRecords</span><span class="o">());</span>
</span></span><span class="line"><span class="cl"> <span class="n">Assert</span><span class="o">.</span><span class="na">assertEquals</span><span class="o">(</span><span class="s">"parallel"</span><span class="o">,</span> <span class="n">previousInput</span><span class="o">.</span><span class="na">value</span><span class="o">());</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
@@ -1059,7 +1060,7 @@ However, you need to take care of another aspect, which is providing timestamps
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="kd">public</span> <span class="kd">class</span> <span class="nc">MyProcessFunction</span> <span class="kd">extends</span> <span class="n">KeyedProcessFunction</span><span class="o"><</span><span class="n">String</span><span class="o">,</span> <span class="n">String</span><span class="o">,</span> <span class="n">String</span><span class=" [...]
</span></span><span class="line"><span class="cl"> <span class="nd">@Override</span>
</span></span><span class="line"><span class="cl"> <span class="kd">public</span> <span class="kt">void</span> <span class="nf">processElement</span><span class="o">(</span><span class="n">String</span> <span class="n">in</span><span class="o">,</span> <span class="n">Context</span> <span class="n">context</span><span class="o">,</span> <span class="n">Collector</span><span class="o"><</span><span class="n">String</span><span class="o">></span> <span class="n">collector</span><spa [...]
-</span></span><span class="line"><span class="cl"> <span class="n">context</span><span class="o">.</span><span class="na">timerService</span><span class="o">().</span><span class="na">registerProcessingTimeTimer</span><span class="o">(</span><span class="mi">50</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl"> <span class="n">context</span><span class="o">.</span><span class="na">timerService</span><span class="o">().</span><span class="na">registerProcessingTimeTimer</span><span class="o">(</span><span class="n">50</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="n">String</span> <span class="n">out</span> <span class="o">=</span> <span class="s">"hello "</span> <span class="o">+</span> <span class="n">in</span><span class="o">;</span>
</span></span><span class="line"><span class="cl"> <span class="n">collector</span><span class="o">.</span><span class="na">collect</span><span class="o">(</span><span class="n">out</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
@@ -1080,10 +1081,10 @@ However, you need to take care of another aspect, which is providing timestamps
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="c1">// Function time is initialized to 0
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">testHarness</span><span class="o">.</span><span class="na">open</span><span class="o">();</span>
-</span></span><span class="line"><span class="cl"> <span class="n">testHarness</span><span class="o">.</span><span class="na">processElement</span><span class="o">(</span><span class="s">"world"</span><span class="o">,</span> <span class="mi">10</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl"> <span class="n">testHarness</span><span class="o">.</span><span class="na">processElement</span><span class="o">(</span><span class="s">"world"</span><span class="o">,</span> <span class="n">10</span><span class="o">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="n">Assert</span><span class="o">.</span><span class="na">assertEquals</span><span class="o">(</span>
-</span></span><span class="line"><span class="cl"> <span class="n">Lists</span><span class="o">.</span><span class="na">newArrayList</span><span class="o">(</span><span class="k">new</span> <span class="n">StreamRecord</span><span class="o"><>(</span><span class="s">"hello world"</span><span class="o">,</span> <span class="mi">10</span><span class="o">)),</span>
+</span></span><span class="line"><span class="cl"> <span class="n">Lists</span><span class="o">.</span><span class="na">newArrayList</span><span class="o">(</span><span class="k">new</span> <span class="n">StreamRecord</span><span class="o"><>(</span><span class="s">"hello world"</span><span class="o">,</span> <span class="n">10</span><span class="o">)),</span>
</span></span><span class="line"><span class="cl"> <span class="n">testHarness</span><span class="o">.</span><span class="na">extractOutputStreamRecords</span><span class="o">());</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="cl">
@@ -1095,14 +1096,14 @@ However, you need to take care of another aspect, which is providing timestamps
</span></span><span class="line"><span class="cl"> <span class="k">new</span> <span class="n">KeyedProcessOperator</span><span class="o"><>(</span><span class="n">myProcessFunction</span><span class="o">),</span> <span class="n">x</span> <span class="o">-></span> <span class="s">"1"</span><span class="o">,</span> <span class="n">Types</span><span class="o">.</span><span class="na">STRING</span><span class="o">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="n">testHarness</span><span class="o">.</span><span class="na">open</span><span class="o">();</span>
-</span></span><span class="line"><span class="cl"> <span class="n">testHarness</span><span class="o">.</span><span class="na">processElement</span><span class="o">(</span><span class="s">"world"</span><span class="o">,</span> <span class="mi">10</span><span class="o">);</span>
-</span></span><span class="line"><span class="cl"> <span class="n">Assert</span><span class="o">.</span><span class="na">assertEquals</span><span class="o">(</span><span class="mi">1</span><span class="o">,</span> <span class="n">testHarness</span><span class="o">.</span><span class="na">numProcessingTimeTimers</span><span class="o">());</span>
+</span></span><span class="line"><span class="cl"> <span class="n">testHarness</span><span class="o">.</span><span class="na">processElement</span><span class="o">(</span><span class="s">"world"</span><span class="o">,</span> <span class="n">10</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl"> <span class="n">Assert</span><span class="o">.</span><span class="na">assertEquals</span><span class="o">(</span><span class="n">1</span><span class="o">,</span> <span class="n">testHarness</span><span class="o">.</span><span class="na">numProcessingTimeTimers</span><span class="o">());</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="c1">// Function time is set to 50
-</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">testHarness</span><span class="o">.</span><span class="na">setProcessingTime</span><span class="o">(</span><span class="mi">50</span><span class="o">);</span>
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">testHarness</span><span class="o">.</span><span class="na">setProcessingTime</span><span class="o">(</span><span class="n">50</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="n">Assert</span><span class="o">.</span><span class="na">assertEquals</span><span class="o">(</span>
</span></span><span class="line"><span class="cl"> <span class="n">Lists</span><span class="o">.</span><span class="na">newArrayList</span><span class="o">(</span>
-</span></span><span class="line"><span class="cl"> <span class="k">new</span> <span class="n">StreamRecord</span><span class="o"><>(</span><span class="s">"hello world"</span><span class="o">,</span> <span class="mi">10</span><span class="o">),</span>
+</span></span><span class="line"><span class="cl"> <span class="k">new</span> <span class="n">StreamRecord</span><span class="o"><>(</span><span class="s">"hello world"</span><span class="o">,</span> <span class="n">10</span><span class="o">),</span>
</span></span><span class="line"><span class="cl"> <span class="k">new</span> <span class="n">StreamRecord</span><span class="o"><>(</span><span class="s">"Timer triggered at timestamp 50"</span><span class="o">)),</span>
</span></span><span class="line"><span class="cl"> <span class="n">testHarness</span><span class="o">.</span><span class="na">extractOutputStreamRecords</span><span class="o">());</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
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 90dd0b98f..e85992cd4 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 preview of native Kubernetes integration and great advances in Python support (PyFlink).
@@ -15,11 +15,12 @@ Flink 1.10 also marks the completion of the Blink integration, hardening streami
<meta property="og:url" content="https://flink.apache.org/2020/02/11/apache-flink-1.10.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-02-11T02:30:00+00:00" />
<meta property="article:modified_time" content="2020-02-11T02:30:00+00:00" />
+
<title>Apache Flink 1.10.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 be163e645..2ea277f15 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Introduction # The recent Apache Flink 1.10 release includes many exciting features. In particular, it marks the end of the community’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 allows Flink to offer a truly unified interface over batch and streaming and makes stream processing accessible to a broad audience of developers and a [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2020/02/20/no-java-required-configuring-sources-and-sinks-in-sql/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-02-20T12:00:00+00:00" />
<meta property="article:modified_time" content="2020-02-20T12:00:00+00:00" />
+
<title>No Java Required: Configuring Sources and Sinks in SQL | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 6175cb103..2a0880e03 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Note: This blog post is based on the talk “Beam on Flink: How Does It Actually Work?”.
@@ -15,11 +15,12 @@ Apache Flink and Apache Beam are open-source frameworks for parallel, distribute
<meta property="og:url" content="https://flink.apache.org/2020/02/22/apache-beam-how-beam-runs-on-top-of-flink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-02-22T12:00:00+00:00" />
<meta property="article:modified_time" content="2020-02-22T12:00:00+00:00" />
+
<title>Apache Beam: How Beam Runs on Top of Flink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 7da5b7b1d..5c1a6e867 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 using a hardcoded KeysExtractor implementation.
@@ -15,11 +15,12 @@ We intentionally omitted details of how the applied rules are initialized and wh
<meta property="og:url" content="https://flink.apache.org/2020/03/24/advanced-flink-application-patterns-vol.2-dynamic-updates-of-application-logic/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-03-24T12:00:00+00:00" />
<meta property="article:modified_time" content="2020-03-24T12:00:00+00:00" />
+
<title>Advanced Flink Application Patterns Vol.2: Dynamic Updates of Application Logic | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 0ef4c3a75..543b63dd2 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.
@@ -21,11 +21,12 @@ Firstly, today’s business is shifting to a more real-time fashion, and thus de
<meta property="og:url" content="https://flink.apache.org/2020/03/27/flink-as-unified-engine-for-modern-data-warehousing-production-ready-hive-integration/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-03-27T02:30:00+00:00" />
<meta property="article:modified_time" content="2020-03-27T02:30:00+00:00" />
+
<title>Flink as Unified Engine for Modern Data Warehousing: Production-Ready Hive Integration | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 7e00258e4..0ba277104 100644
--- a/content/2020/03/30/flink-community-update-april20/index.html
+++ b/content/2020/03/30/flink-community-update-april20/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.
@@ -15,11 +15,12 @@ And since now it’s more important than ever to keep up the spirits, we’d
<meta property="og:url" content="https://flink.apache.org/2020/03/30/flink-community-update-april20/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-03-30T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-03-30T08:00:00+00:00" />
+
<title>Flink Community Update - April'20 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 a646d9c38..5863382fa 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 database that is built on Apache Flink.
@@ -15,11 +15,12 @@ Stateful Functions 2.0 makes it possible to combine StateFun’s powerful approa
<meta property="og:url" content="https://flink.apache.org/2020/04/07/stateful-functions-2.0-an-event-driven-database-on-apache-flink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-04-07T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-04-07T08:00:00+00:00" />
+
<title>Stateful Functions 2.0 - An Event-driven Database on Apache Flink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 14550e46d..fb95cadff 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.9, preventing them from extending the system’s built-in functionality.
@@ -15,11 +15,12 @@ In Flink 1.10, the community further extended the support for Python by adding P
<meta property="og:url" content="https://flink.apache.org/2020/04/09/pyflink-introducing-python-support-for-udfs-in-flinks-table-api/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-04-09T12:00:00+00:00" />
<meta property="article:modified_time" content="2020-04-09T12:00:00+00:00" />
+
<title>PyFlink: Introducing Python Support for UDFs in Flink's Table API | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 50c6e110b..d5ac22bf9 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 based on a local embedded RocksDB instance which is implemented in native C++ code and thus also needs transformation into bytes on every state access.">
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2020/04/15/flink-serialization-tuning-vol.-1-choosing-your-serializer-if-you-can/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-04-15T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-04-15T08:00:00+00:00" />
+
<title>Flink Serialization Tuning Vol. 1: Choosing your Serializer — if you can | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -1126,8 +1127,8 @@ Please note that `ProtobufSerializer` can be registered as a default Kryo serial
</span></span><span class="line"><span class="cl"> <span class="kd">protected</span> <span class="n">String</span> <span class="n">name</span><span class="o">;</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span></code></pre></div><p>This is mapped to tuples, rows, Avro specific records, Thrift and Protobuf representations appropriately and sent through a simple Flink job at parallelism 4 where the data type is used during network communication like this:</p>
-<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">env</span><span class="o">.</span><span class="na">setParallelism</span><span class="o">(</span><span class="mi">4</span><span class="o">);</span>
-</span></span><span class="line"><span class="cl"><span class="n">env</span><span class="o">.</span><span class="na">addSource</span><span class="o">(</span><span class="k">new</span> <span class="n">PojoSource</span><span class="o">(</span><span class="n">RECORDS_PER_INVOCATION</span><span class="o">,</span> <span class="mi">10</span><span class="o">))</span>
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">env</span><span class="o">.</span><span class="na">setParallelism</span><span class="o">(</span><span class="n">4</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl"><span class="n">env</span><span class="o">.</span><span class="na">addSource</span><span class="o">(</span><span class="k">new</span> <span class="n">PojoSource</span><span class="o">(</span><span class="n">RECORDS_PER_INVOCATION</span><span class="o">,</span> <span class="n">10</span><span class="o">))</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">rebalance</span><span class="o">()</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">addSink</span><span class="o">(</span><span class="k">new</span> <span class="n">DiscardingSink</span><span class="o"><>());</span>
</span></span></code></pre></div><p>After running this through the <a href="http://openjdk.java.net/projects/code-tools/jmh/">jmh</a> micro-benchmarks defined in <a href="https://github.com/dataArtisans/flink-benchmarks/blob/master/src/main/java/org/apache/flink/benchmark/full/SerializationFrameworkAllBenchmarks.java">SerializationFrameworkAllBenchmarks.java</a>, I retrieved the following performance results for Flink 1.10 on my machine (in number of operations per millisecond):
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 05d3b38c9..92073b7c9 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Apache Flink 1.10 comes with significant changes to the memory model of the Task Managers and configuration options for your Flink applications. These recently-introduced changes make Flink more adaptable to all kinds of deployment environments (e.g. Kubernetes, Yarn, Mesos), providing strict control over its memory consumption. In this post, we describe Flink’s memory model, as it stands in Flink 1.10, how to set up and manage memory consumption of your [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2020/04/21/memory-management-improvements-with-apache-flink-1.10/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-04-21T12:00:00+00:00" />
<meta property="article:modified_time" content="2020-04-21T12:00:00+00:00" />
+
<title>Memory Management Improvements with Apache Flink 1.10 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 3cf6472f1..ede80e273 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the third bugfix version of the Apache Flink 1.9 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2020/04/24/apache-flink-1.9.3-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-04-24T12:00:00+00:00" />
<meta property="article:modified_time" content="2020-04-24T12:00:00+00:00" />
+
<title>Apache Flink 1.9.3 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 601f1249f..b0a4486c5 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 over 40 projects, including some other cool Apache Software Foundation (ASF) members like Apache Airflow and Apache Cassandra.">
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2020/05/04/applying-to-google-season-of-docs-2020/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-05-04T06:00:00+00:00" />
<meta property="article:modified_time" content="2020-05-04T06:00:00+00:00" />
+
<title>Applying to Google Season of Docs 2020 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 874a2901f..0c0c6b8ec 100644
--- a/content/2020/05/06/flink-community-update-may20/index.html
+++ b/content/2020/05/06/flink-community-update-may20/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Can you smell it? It’s release month! It took a while, but now that we’re all caught up with the past, the Community Update is here to stay. This time around, we’re warming up for Flink 1.11 and peeping back to the month of April in the Flink community — with the release of Stateful Functions 2.0, a new self-paced Flink training and some efforts to improve the Flink documentation experience.">
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2020/05/06/flink-community-update-may20/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-05-06T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-05-06T08:00:00+00:00" />
+
<title>Flink Community Update - May'20 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 3cd1454d0..e72394a22 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the first bugfix version of the Apache Flink 1.10 series.
@@ -19,11 +19,12 @@ Note FLINK-16684 changed the builders of the StreamingFileSink to make them comp
<meta property="og:url" content="https://flink.apache.org/2020/05/12/apache-flink-1.10.1-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-05-12T12:00:00+00:00" />
<meta property="article:modified_time" content="2020-05-12T12:00:00+00:00" />
+
<title>Apache Flink 1.10.1 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 0b9cad89f..db186694a 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 community around StateFun grows, the release cycle will follow this pattern of smaller and more frequent releases to incorporate user feedb [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2020/06/09/stateful-functions-2.1.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-06-09T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-06-09T08:00:00+00:00" />
+
<title>Stateful Functions 2.1.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -939,7 +940,7 @@ https://github.com/alex-shpak/hugo-book
</span></span><span class="line"><span class="cl"><span class="n">PersistedValue</span><span class="o"><</span><span class="n">Integer</span><span class="o">></span> <span class="n">table</span> <span class="o">=</span> <span class="n">PersistedValue</span><span class="o">.</span><span class="na">of</span><span class="o">(</span>
</span></span><span class="line"><span class="cl"> <span class="s">"my-value"</span><span class="o">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">Integer</span><span class="o">.</span><span class="na">class</span><span class="o">,</span>
-</span></span><span class="line"><span class="cl"> <span class="n">Expiration</span><span class="o">.</span><span class="na">expireAfterWriting</span><span class="o">(</span><span class="n">Duration</span><span class="o">.</span><span class="na">ofHours</span><span class="o">(</span><span class="mi">1</span><span class="o">)));</span>
+</span></span><span class="line"><span class="cl"> <span class="n">Expiration</span><span class="o">.</span><span class="na">expireAfterWriting</span><span class="o">(</span><span class="n">Duration</span><span class="o">.</span><span class="na">ofHours</span><span class="o">(</span><span class="n">1</span><span class="o">)));</span>
</span></span></code></pre></div><p>For <a href="//nightlies.apache.org/flinkflink-statefun-docs-release-2.1/concepts/distributed_architecture.html#remote-functions">remote functions</a> using e.g. the Python SDK, users can configure State TTL in their <code>module.yaml</code>:</p>
<pre tabindex="0"><code>functions:
- function:
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 7fa8ce8cc..8e1bf3585 100644
--- a/content/2020/06/10/flink-community-update-june20/index.html
+++ b/content/2020/06/10/flink-community-update-june20/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="And suddenly it’s June. The previous month has been calm on the surface, but quite hectic underneath — the final testing phase for Flink 1.11 is moving at full speed, Stateful Functions 2.1 is out in the wild and Flink has made it into Google Season of Docs 2020.
@@ -15,11 +15,12 @@ To top it off, a piece of good news: Flink Forward is back on October 19-22 as a
<meta property="og:url" content="https://flink.apache.org/2020/06/10/flink-community-update-june20/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-06-10T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-06-10T08:00:00+00:00" />
+
<title>Flink Community Update - June'20 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 5845c1df9..7c465737d 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The latest release of Apache Zeppelin comes with a redesigned interpreter for Apache Flink (version Flink 1.10+ is only supported moving forward) that allows developers to use Flink directly on Zeppelin notebooks for interactive data analysis. I wrote 2 posts about how to use Flink in Zeppelin. This is part-1 where I explain how the Flink interpreter in Zeppelin works, and provide a tutorial for running Streaming ETL with Flink on Zeppelin.">
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2020/06/15/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-1/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-06-15T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-06-15T08:00:00+00:00" />
+
<title>Flink on Zeppelin Notebooks for Interactive Data Analysis - Part 1 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 17844a576..87a24c752 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 “Flink on Zeppelin” series of posts, I will share how to perform streaming data visualization via Flink on Zeppelin and how to use Apache Flink UDFs in Zeppelin.
@@ -15,11 +15,12 @@ Streaming Data Visualization # With Zeppelin, you can build a real time streamin
<meta property="og:url" content="https://flink.apache.org/2020/06/23/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-2/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-06-23T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-06-23T08:00:00+00:00" />
+
<title>Flink on Zeppelin Notebooks for Interactive Data Analysis - Part 2 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 1cbfa5b9f..6a505524e 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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’re particularly excited about are:
@@ -15,11 +15,12 @@ The core engine is introducing unaligned checkpoints, a major change to Flink&rs
<meta property="og:url" content="https://flink.apache.org/2020/07/06/apache-flink-1.11.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-07-06T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-07-06T08:00:00+00:00" />
+
<title>Apache Flink 1.11.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 3dc073f07..bcbfb58fe 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="With the rise of stream processing and real-time analytics as a critical tool for modern businesses, an increasing number of organizations build platforms with Apache Flink at their core and offer it internally as a service. Many talks with related topics from companies like Uber, Netflix and Alibaba in the latest editions of Flink Forward further illustrate this trend.
@@ -15,11 +15,12 @@ These platforms aim at simplifying application submission internally by lifting
<meta property="og:url" content="https://flink.apache.org/2020/07/14/application-deployment-in-flink-current-state-and-the-new-application-mode/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-07-14T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-07-14T08:00:00+00:00" />
+
<title>Application Deployment in Flink: Current State and the new Application Mode | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 aba500cf8..0aac86f55 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the first bugfix version of the Apache Flink 1.11 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2020/07/21/apache-flink-1.11.1-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-07-21T18:00:00+00:00" />
<meta property="article:modified_time" content="2020-07-21T18:00:00+00:00" />
+
<title>Apache Flink 1.11.1 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 ac64be3f9..947b4a7e1 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="With an ever-growing number of people working with data, it’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 becomes a crucial aspect. Without it, users often work blindly, spending too much time searching for datasets and their loc [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2020/07/23/sharing-is-caring-catalogs-in-flink-sql/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-07-23T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-07-23T08:00:00+00:00" />
+
<title>Sharing is caring - Catalogs in Flink SQL | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 2f5ae0fa6..15e190add 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.
@@ -15,11 +15,12 @@ In the following sections, we describe how to integrate Kafka, MySQL, Elasticsea
<meta property="og:url" content="https://flink.apache.org/2020/07/28/flink-sql-demo-building-an-end-to-end-streaming-application/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-07-28T12:00:00+00:00" />
<meta property="article:modified_time" content="2020-07-28T12:00:00+00:00" />
+
<title>Flink SQL Demo: Building an End-to-End Streaming Application | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 e7e473299..78ea2b615 100644
--- a/content/2020/07/29/flink-community-update-july20/index.html
+++ b/content/2020/07/29/flink-community-update-july20/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.
@@ -19,11 +19,12 @@ The Past Month in Flink # Flink Releases # Flink 1." />
<meta property="og:url" content="https://flink.apache.org/2020/07/29/flink-community-update-july20/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-07-29T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-07-29T08:00:00+00:00" />
+
<title>Flink Community Update - July'20 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 f4a70070d..a8fdf211d 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 configuration at runtime among the relevant operators. Following up directly where we left the discussion of the end-to-end solution last time, in this article we will describe how yo [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2020/07/30/advanced-flink-application-patterns-vol.3-custom-window-processing/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-07-30T12:00:00+00:00" />
<meta property="article:modified_time" content="2020-07-30T12:00:00+00:00" />
+
<title>Advanced Flink Application Patterns Vol.3: Custom Window Processing | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -1216,7 +1217,7 @@ outline of the implementation:</p>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="c1">// Register timers to ensure state cleanup
-</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="kt">long</span> <span class="n">cleanupTime</span> <span class="o">=</span> <span class="o">(</span><span class="n">currentEventTime</span> <span class="o">/</span> <span class="mi">1000</span><span class="o">)</span> <span class="o">*</span> <span class="mi">1000</span><span class="o">;</span> <span class="c1">// <--- (6)
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="kt">long</span> <span class="n">cleanupTime</span> <span class="o">=</span> <span class="o">(</span><span class="n">currentEventTime</span> <span class="o">/</span> <span class="n">1000</span><span class="o">)</span> <span class="o">*</span> <span class="n">1000</span><span class="o">;</span> <span class="c1">// <--- (6)
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">ctx</span><span class="o">.</span><span class="na">timerService</span><span class="o">().</span><span class="na">registerEventTimeTimer</span><span class="o">(</span><span class="n">cleanupTime</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span></code></pre></div><br/>
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 2cea00e9f..86de17cf5 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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, Pandas, and Scikit-learn that have gained additional popularity due to their flexibility or powerful functionalities.
@@ -15,11 +15,12 @@ Pic source: VanderPlas 2017, slide 52." />
<meta property="og:url" content="https://flink.apache.org/2020/08/04/pyflink-the-integration-of-pandas-into-pyflink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-08-04T00:00:00+00:00" />
<meta property="article:modified_time" content="2020-08-04T00:00:00+00:00" />
+
<title>PyFlink: The integration of Pandas into PyFlink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 0a4222b09..655b93545 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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, we will take GPU as an example and show how it affects Flink applications in the AI field. Other external resources (e.g. RDMA and SSD) can also be supported in a pluggabl [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2020/08/06/accelerating-your-workload-with-gpu-and-other-external-resources/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-08-06T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-08-06T08:00:00+00:00" />
+
<title>Accelerating your workload with GPU and other external resources | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -990,13 +991,13 @@ to call the native Cuda API. The prediction logic of the <a href="https://github
</span></span><span class="line"><span class="cl"> <span class="nd">@Override</span>
</span></span><span class="line"><span class="cl"> <span class="kd">public</span> <span class="n">Integer</span> <span class="nf">map</span><span class="o">(</span><span class="n">List</span><span class="o"><</span><span class="n">Float</span><span class="o">></span> <span class="n">value</span><span class="o">)</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="c1">// Performs multiplication using JCublas. The matrixPointer points to our pre-trained model.
-</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">JCublas</span><span class="o">.</span><span class="na">cublasSgemv</span><span class="o">(</span><span class="sc">'n'</span><span class="o">,</span> <span class="n">DIMENSIONS</span><span class="o">.</span><span class="na">f1</span><span class="o">,</span> <span class="n">DIMENSIONS</span><span class="o">.</span><span class="na">f0</span><span class="o">,</span> <span class="mf [...]
-</span></span><span class="line"><span class="cl"> <span class="n">matrixPointer</span><span class="o">,</span> <span class="n">DIMENSIONS</span><span class="o">.</span><span class="na">f1</span><span class="o">,</span> <span class="n">inputPointer</span><span class="o">,</span> <span class="mi">1</span><span class="o">,</span> <span class="mf">0.0f</span><span class="o">,</span> <span class="n">outputPointer</span><span class="o">,</span> <span class="mi">1</span><span cla [...]
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">JCublas</span><span class="o">.</span><span class="na">cublasSgemv</span><span class="o">(</span><span class="sc">'n'</span><span class="o">,</span> <span class="n">DIMENSIONS</span><span class="o">.</span><span class="na">f1</span><span class="o">,</span> <span class="n">DIMENSIONS</span><span class="o">.</span><span class="na">f0</span><span class="o">,</span> <span class="n" [...]
+</span></span><span class="line"><span class="cl"> <span class="n">matrixPointer</span><span class="o">,</span> <span class="n">DIMENSIONS</span><span class="o">.</span><span class="na">f1</span><span class="o">,</span> <span class="n">inputPointer</span><span class="o">,</span> <span class="n">1</span><span class="o">,</span> <span class="n">0</span><span class="o">.</span><span class="na">0f</span><span class="o">,</span> <span class="n">outputPointer</span><span class="o [...]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="c1">// Read the result back from GPU.
-</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">JCublas</span><span class="o">.</span><span class="na">cublasGetVector</span><span class="o">(</span><span class="n">DIMENSIONS</span><span class="o">.</span><span class="na">f1</span><span class="o">,</span> <span class="n">Sizeof</span><span class="o">.</span><span class="na">FLOAT</span><span class="o">,</span> <span class="n">outputPointer</span><span class="o">,</span> <span class [...]
-</span></span><span class="line"><span class="cl"> <span class="kt">int</span> <span class="n">result</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span>
-</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o"><</span> <span class="n">DIMENSIONS</span><span class="o">.</span><span class="na">f1</span><span class="o">;</span> <span class="o">++</span><span class="n">i</span><span class="o">)</span> <span class="o">{</span>
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">JCublas</span><span class="o">.</span><span class="na">cublasGetVector</span><span class="o">(</span><span class="n">DIMENSIONS</span><span class="o">.</span><span class="na">f1</span><span class="o">,</span> <span class="n">Sizeof</span><span class="o">.</span><span class="na">FLOAT</span><span class="o">,</span> <span class="n">outputPointer</span><span class="o">,</span> <span class [...]
+</span></span><span class="line"><span class="cl"> <span class="kt">int</span> <span class="n">result</span> <span class="o">=</span> <span class="n">0</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="n">0</span><span class="o">;</span> <span class="n">i</span> <span class="o"><</span> <span class="n">DIMENSIONS</span><span class="o">.</span><span class="na">f1</span><span class="o">;</span> <span class="o">++</span><span class="n">i</span><span class="o">)</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">result</span> <span class="o">=</span> <span class="n">output</span><span class="o">[</span><span class="n">i</span><span class="o">]</span> <span class="o">></span> <span class="n">output</span><span class="o">[</span><span class="n">result</span><span class="o">]</span> <span class="o">?</span> <span class="n">i</span> <span class="o">:</span> <span class="n">result</span><span class="o">;</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">result</span><span class="o">;</span>
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 a8c6eb826..1767d02f9 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="In this blog post, we’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)).
@@ -15,11 +15,12 @@ IoT networks are composed of many individual, but interconnected components, whi
<meta property="og:url" content="https://flink.apache.org/2020/08/18/monitoring-and-controlling-networks-of-iot-devices-with-flink-stateful-functions/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-08-18T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-08-18T08:00:00+00:00" />
+
<title>Monitoring and Controlling Networks of IoT Devices with Flink Stateful Functions | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 99b60aef8..e7880e8e2 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="With over 50 million downloads from Docker Hub, the Flink docker images are a very popular deployment option.
@@ -19,11 +19,12 @@ Reduce confusion: Flink used to have 2 Dockerfiles and a 3rd file maintained out
<meta property="og:url" content="https://flink.apache.org/2020/08/20/the-state-of-flink-on-docker/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-08-20T00:00:00+00:00" />
<meta property="article:modified_time" content="2020-08-20T00:00:00+00:00" />
+
<title>The State of Flink on Docker | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 51f9c7ed5..884af3f33 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the second bugfix version of the Apache Flink 1.10 series.
@@ -19,11 +19,12 @@ Note After FLINK-18242, the deprecated `OptionsFactory` and `ConfigurableOptions
<meta property="og:url" content="https://flink.apache.org/2020/08/25/apache-flink-1.10.2-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-08-25T00:00:00+00:00" />
<meta property="article:modified_time" content="2020-08-25T00:00:00+00:00" />
+
<title>Apache Flink 1.10.2 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 f98ac1c76..3ce2f26c3 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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), providing better control over its memory consumption.
@@ -15,11 +15,12 @@ The previous blog post focused on the memory model of the TaskManagers and how i
<meta property="og:url" content="https://flink.apache.org/2020/09/01/memory-management-improvements-for-flinks-jobmanager-in-apache-flink-1.11/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-09-01T15:30:00+00:00" />
<meta property="article:modified_time" content="2020-09-01T15:30:00+00:00" />
+
<title>Memory Management improvements for Flink’s JobManager in Apache Flink 1.11 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 6df9f83e7..f4cdecfd5 100644
--- a/content/2020/09/04/flink-community-update-august20/index.html
+++ b/content/2020/09/04/flink-community-update-august20/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Ah, so much for a quiet August month. This time around, we bring you some new Flink Improvement Proposals (FLIPs), a preview of the upcoming Flink Stateful Functions 2.2 release and a look into how far Flink has come in comparison to 2019.
@@ -17,11 +17,12 @@ The Past Month in Flink # Flink Releases # Getting Ready for Flink Stateful Func
<meta property="og:url" content="https://flink.apache.org/2020/09/04/flink-community-update-august20/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-09-04T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-09-04T08:00:00+00:00" />
+
<title>Flink Community Update - August'20 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 be8789728..5818d0e3f 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the second bugfix version of the Apache Flink 1.11 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2020/09/17/apache-flink-1.11.2-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-09-17T00:00:00+00:00" />
<meta property="article:modified_time" content="2020-09-17T00:00:00+00:00" />
+
<title>Apache Flink 1.11.2 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 131bf34fd..2c7c7b818 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 DataStream job. Moreover, we’ve also included important changes that improve out-of-the-box stability for common workloads, as [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2020/09/28/stateful-functions-2.2.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-09-28T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-09-28T08:00:00+00:00" />
+
<title>Stateful Functions 2.2.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -968,7 +969,7 @@ This allows serving StateFun functions with Python web frameworks that support a
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">functions</span> <span class="o">=</span> <span class="n">StatefulFunctions</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
-</span></span><span class="line"><span class="cl"><span class="nd">@functions.bind</span><span class="p">(</span><span class="s2">"example/greeter"</span><span class="p">)</span>
+</span></span><span class="line"><span class="cl"><span class="nd">@functions</span><span class="o">.</span><span class="n">bind</span><span class="p">(</span><span class="s2">"example/greeter"</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">greeter</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="n">message</span><span class="p">):</span>
</span></span><span class="line"><span class="cl"> <span class="n">html</span> <span class="o">=</span> <span class="k">await</span> <span class="n">fetch</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="s1">'http://....'</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"> <span class="n">context</span><span class="o">.</span><span class="n">pack_and_reply</span><span class="p">(</span><span class="n">SomeProtobufMessage</span><span class="p">(</span><span class="n">html</span><span class="p">))</span>
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 dab4edf30..2f7125fb3 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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’s cloud-native architectures and popular event-driven FaaS platforms. Typical StateFun applications consist of functions deployed behind simple services using these modern platforms, wi [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2020/10/13/stateful-functions-internals-behind-the-scenes-of-stateful-serverless/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-10-13T00:00:00+00:00" />
<meta property="article:modified_time" content="2020-10-13T00:00:00+00:00" />
+
<title>Stateful Functions Internals: Behind the scenes of Stateful Serverless | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 4dd6feb60..7b8965b57 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Apache Flink’s checkpoint-based fault tolerance mechanism is one of its defining features. Because of that design, Flink unifies batch and stream processing, can easily scale to both very small and extremely large scenarios and provides support for many operational features like stateful upgrades with state evolution or roll-backs and time-travel.
@@ -15,11 +15,12 @@ Despite all these great properties, Flink’s checkpointing method has an Ac
<meta property="og:url" content="https://flink.apache.org/2020/10/15/from-aligned-to-unaligned-checkpoints-part-1-checkpoints-alignment-and-backpressure/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-10-15T03:00:00+00:00" />
<meta property="article:modified_time" content="2020-10-15T03:00:00+00:00" />
+
<title>From Aligned to Unaligned Checkpoints - Part 1: Checkpoints, Alignment, and Backpressure | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 c5a8b144e..7ff15572e 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the first bugfix release of the Stateful Functions (StateFun) 2.2 series, version 2.2.1.
@@ -17,11 +17,12 @@ We strongly recommend all users to upgrade to 2." />
<meta property="og:url" content="https://flink.apache.org/2020/11/11/stateful-functions-2.2.1-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-11-11T00:00:00+00:00" />
<meta property="article:modified_time" content="2020-11-11T00:00:00+00:00" />
+
<title>Stateful Functions 2.2.1 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 ca2825fbd..6b0449a6d 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 processes such as task scheduling. In this blogpost, we’ll take a closer look at how far the community has come in improving scheduling for batch workloads, why this matters and what you can expec [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2020/12/02/improvements-in-task-scheduling-for-batch-workloads-in-apache-flink-1.12/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-12-02T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-12-02T08:00:00+00:00" />
+
<title>Improvements in task scheduling for batch workloads in Apache Flink 1.12 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 f36028140..3ef19df71 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is excited to announce the release of Flink 1.12.0! Close to 300 contributors worked on over 1k threads to bring significant improvements to usability as well as new features that simplify (and unify) Flink handling across the API stack.
@@ -17,11 +17,12 @@ The community has added support for efficient batch execution in the DataStream
<meta property="og:url" content="https://flink.apache.org/2020/12/10/apache-flink-1.12.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-12-10T08:00:00+00:00" />
<meta property="article:modified_time" content="2020-12-10T08:00:00+00:00" />
+
<title>Apache Flink 1.12.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 c34fbdc61..b31a2bbca 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the third bugfix version of the Apache Flink 1.11 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2020/12/18/apache-flink-1.11.3-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-12-18T00:00:00+00:00" />
<meta property="article:modified_time" content="2020-12-18T00:00:00+00:00" />
+
<title>Apache Flink 1.11.3 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 7d1e5424f..ffef3d719 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the second bugfix release of the Stateful Functions (StateFun) 2.2 series, version 2.2.2.
@@ -15,11 +15,12 @@ The most important change of this bugfix release is upgrading Apache Flink to ve
<meta property="og:url" content="https://flink.apache.org/2021/01/02/stateful-functions-2.2.2-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-01-02T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-01-02T00:00:00+00:00" />
+
<title>Stateful Functions 2.2.2 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 382f3ee60..7bd6eb4bb 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 at the computing and API layers, very little work has been done at the data messaging and storage layers. In reality, data is segregate [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2021/01/07/whats-new-in-the-pulsar-flink-connector-2.7.0/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-01-07T08:00:00+00:00" />
<meta property="article:modified_time" content="2021-01-07T08:00:00+00:00" />
+
<title>What's New in the Pulsar Flink Connector 2.7.0 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 e91052200..efbab8823 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="{% toc %}
@@ -17,11 +17,12 @@ Processing efficiency is not the only parameter users of data processing systems
<meta property="og:url" content="https://flink.apache.org/2021/01/11/exploring-fine-grained-recovery-of-bounded-data-sets-on-flink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-01-11T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-01-11T00:00:00+00:00" />
+
<title>Exploring fine-grained recovery of bounded data sets on Flink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 daaca0d1f..679a34220 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Stream processing applications are often stateful, “remembering” information from processed events and using it to influence further event processing. In Flink, the remembered information, i.e., state, is stored locally in the configured state backend. To prevent data loss in case of failures, the state backend periodically persists a snapshot of its contents to a pre-configured durable storage. The RocksDB state backend (i.e., RocksDBStateBackend) is on [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2021/01/18/using-rocksdb-state-backend-in-apache-flink-when-and-how/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-01-18T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-01-18T00:00:00+00:00" />
+
<title>Using RocksDB State Backend in Apache Flink: When and How | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 ecf66e7c9..5511da569 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the first bugfix version of the Apache Flink 1.12 series.
@@ -19,11 +19,12 @@ Attention: Using unaligned checkpoints in Flink 1.12.0 combined with two/multipl
<meta property="og:url" content="https://flink.apache.org/2021/01/19/apache-flink-1.12.1-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-01-19T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-01-19T00:00:00+00:00" />
+
<title>Apache Flink 1.12.1 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 3f29fb9af..49522ffa3 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the third bugfix version of the Apache Flink 1.10 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2021/01/29/apache-flink-1.10.3-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-01-29T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-01-29T00:00:00+00:00" />
+
<title>Apache Flink 1.10.3 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 5e129ef6d..0d6e9ca63 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Flink has supported resource management systems like YARN and Mesos since the early days; however, these were not designed for the fast-moving cloud-native architectures that are increasingly gaining popularity these days, or the growing need to support complex, mixed workloads (e.g. batch, streaming, deep learning, web services). For these reasons, more and more users are using Kubernetes to automate the deployment, scaling and management of their Flink [...]
@@ -15,11 +15,12 @@ From release to release, the Flink community has made significant progress in in
<meta property="og:url" content="https://flink.apache.org/2021/02/10/how-to-natively-deploy-flink-on-kubernetes-with-high-availability-ha/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-02-10T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-02-10T00:00:00+00:00" />
+
<title>How to natively deploy Flink on Kubernetes with High-Availability (HA) | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 84b4dad85..436d75fd9 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the next bugfix version of the Apache Flink 1.12 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2021/03/03/apache-flink-1.12.2-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-03-03T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-03-03T00:00:00+00:00" />
+
<title>Apache Flink 1.12.2 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 62d5785aa..202c69417 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="{% toc %}
@@ -15,11 +15,12 @@ Flink has been following the mantra that Batch is a Special Case of Streaming si
<meta property="og:url" content="https://flink.apache.org/2021/03/11/a-rundown-of-batch-execution-mode-in-the-datastream-api/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-03-11T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-03-11T00:00:00+00:00" />
+
<title>A Rundown of Batch Execution Mode in the DataStream API | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -994,23 +995,23 @@ in a given currency. We derive the number in 1-day windows. We read the input da
</span></span><span class="line"><span class="cl"> <span class="n">SingleOutputStreamOperator</span><span class="o"><</span><span class="n">Tuple4</span><span class="o"><</span><span class="n">String</span><span class="o">,</span> <span class="n">Integer</span><span class="o">,</span> <span class="n">String</span><span class="o">,</span> <span class="n">String</span><span class="o">>></span> <span class="n">dataStream</span> <span class="o">=</span> <span class="n">env</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">fromSource</span><span class="o">(</span>
</span></span><span class="line"><span class="cl"> <span class="n">FileSource</span><span class="o">.</span><span class="na">forRecordStreamFormat</span><span class="o">(</span><span class="k">new</span> <span class="n">TsvFormat</span><span class="o">(),</span> <span class="n">path</span><span class="o">).</span><span class="na">build</span><span class="o">(),</span>
-</span></span><span class="line"><span class="cl"> <span class="n">WatermarkStrategy</span><span class="o">.<</span><span class="n">String</span><span class="o">[]></span><span class="n">forBoundedOutOfOrderness</span><span class="o">(</span><span class="n">Duration</span><span class="o">.</span><span class="na">ofDays</span><span class="o">(</span><span class="mi">1</span><span class="o">))</span>
+</span></span><span class="line"><span class="cl"> <span class="n">WatermarkStrategy</span><span class="o">.<</span><span class="n">String</span><span class="o">[]></span><span class="n">forBoundedOutOfOrderness</span><span class="o">(</span><span class="n">Duration</span><span class="o">.</span><span class="na">ofDays</span><span class="o">(</span><span class="n">1</span><span class="o">))</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">withTimestampAssigner</span><span class="o">(</span><span class="k">new</span> <span class="n">OrderTimestampAssigner</span><span class="o">()),</span>
</span></span><span class="line"><span class="cl"> <span class="s">"Text file"</span>
</span></span><span class="line"><span class="cl"> <span class="o">)</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">keyBy</span><span class="o">(</span><span class="n">value</span> <span class="o">-></span> <span class="n">value</span><span class="o">[</span><span class="mi">4</span><span class="o">])</span> <span class="c1">// group by currency
-</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="o">.</span><span class="na">window</span><span class="o">(</span><span class="n">TumblingEventTimeWindows</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">days</span><span class="o">(</span><span class="mi">1</span><span class="o">)))</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">keyBy</span><span class="o">(</span><span class="n">value</span> <span class="o">-></span> <span class="n">value</span><span class="o">[</span><span class="n">4</span><span class="o">])</span> <span class="c1">// group by currency
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="o">.</span><span class="na">window</span><span class="o">(</span><span class="n">TumblingEventTimeWindows</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">days</span><span class="o">(</span><span class="n">1</span><span class="o">)))</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">sideOutputLateData</span><span class="o">(</span><span class="n">LATE_DATA</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">aggregate</span><span class="o">(</span>
</span></span><span class="line"><span class="cl"> <span class="k">new</span> <span class="n">CountFunction</span><span class="o">(),</span> <span class="c1">// count number of orders in a given currency
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="k">new</span> <span class="n">CombineWindow</span><span class="o">());</span>
</span></span><span class="line"><span class="cl">
-</span></span><span class="line"><span class="cl"> <span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"> <span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="n">0</span><span class="o">;</span>
</span></span><span class="line"><span class="cl"> <span class="n">DataStream</span><span class="o"><</span><span class="n">String</span><span class="o">[]></span> <span class="n">lateData</span> <span class="o">=</span> <span class="n">dataStream</span><span class="o">.</span><span class="na">getSideOutput</span><span class="o">(</span><span class="n">LATE_DATA</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="k">try</span> <span class="o">(</span><span class="n">CloseableIterator</span><span class="o"><</span><span class="n">String</span><span class="o">[]></span> <span class="n">results</span> <span class="o">=</span> <span class="n">lateData</span><span class="o">.</span><span class="na">executeAndCollect</span><span class="o">())</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">while</span> <span class="o">(</span><span class="n">results</span><span class="o">.</span><span class="na">hasNext</span><span class="o">())</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">String</span><span class="o">[]</span> <span class="n">late</span> <span class="o">=</span> <span class="n">results</span><span class="o">.</span><span class="na">next</span><span class="o">();</span>
-</span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="o">(</span><span class="n">i</span> <span class="o"><</span> <span class="mi">100</span><span class="o">)</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="o">(</span><span class="n">i</span> <span class="o"><</span> <span class="n">100</span><span class="o">)</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="n">Arrays</span><span class="o">.</span><span class="na">toString</span><span class="o">(</span><span class="n">late</span><span class="o">));</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl"> <span class="n">i</span><span class="o">++;</span>
@@ -1075,7 +1076,7 @@ Number of late records: 1514
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">fromSource</span><span class="o">(</span>
</span></span><span class="line"><span class="cl"> <span class="n">FileSource</span><span class="o">.</span><span class="na">forRecordStreamFormat</span><span class="o">(</span><span class="k">new</span> <span class="n">TsvFormat</span><span class="o">(),</span> <span class="n">ordersPath</span><span class="o">).</span><span class="na">build</span><span class="o">(),</span>
</span></span><span class="line"><span class="cl"> <span class="n">WatermarkStrategy</span><span class="o">.<</span><span class="n">String</span><span class="o">[]></span><span class="n">noWatermarks</span><span class="o">()</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">withTimestampAssigner</span><span class="o">((</span><span class="n">record</span><span class="o">,</span> <span class="n">previous</span><span class="o">)</span> <span class="o">-></span> <span class="o">-</span><span class="mi">1</span><span class="o">),</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">withTimestampAssigner</span><span class="o">((</span><span class="n">record</span><span class="o">,</span> <span class="n">previous</span><span class="o">)</span> <span class="o">-></span> <span class="o">-</span><span class="n">1</span><span class="o">),</span>
</span></span><span class="line"><span class="cl"> <span class="s">"Text file"</span>
</span></span><span class="line"><span class="cl"> <span class="o">);</span>
</span></span><span class="line"><span class="cl">
@@ -1084,14 +1085,14 @@ Number of late records: 1514
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">fromSource</span><span class="o">(</span>
</span></span><span class="line"><span class="cl"> <span class="n">FileSource</span><span class="o">.</span><span class="na">forRecordStreamFormat</span><span class="o">(</span><span class="k">new</span> <span class="n">TsvFormat</span><span class="o">(),</span> <span class="n">customersPath</span><span class="o">).</span><span class="na">build</span><span class="o">(),</span>
</span></span><span class="line"><span class="cl"> <span class="n">WatermarkStrategy</span><span class="o">.<</span><span class="n">String</span><span class="o">[]></span><span class="n">noWatermarks</span><span class="o">()</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">withTimestampAssigner</span><span class="o">((</span><span class="n">record</span><span class="o">,</span> <span class="n">previous</span><span class="o">)</span> <span class="o">-></span> <span class="o">-</span><span class="mi">1</span><span class="o">),</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">withTimestampAssigner</span><span class="o">((</span><span class="n">record</span><span class="o">,</span> <span class="n">previous</span><span class="o">)</span> <span class="o">-></span> <span class="o">-</span><span class="n">1</span><span class="o">),</span>
</span></span><span class="line"><span class="cl"> <span class="s">"Text file"</span>
</span></span><span class="line"><span class="cl"> <span class="o">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">DataStream</span><span class="o"><</span><span class="n">Tuple2</span><span class="o"><</span><span class="n">String</span><span class="o">,</span> <span class="n">String</span><span class="o">>></span> <span class="n">dataStream</span> <span class="o">=</span> <span class="n">orders</span><span class="o">.</span><span class="na">join</span><span class="o">(</span><span class="n">customers</span><span class="o" [...]
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">where</span><span class="o">(</span><span class="n">order</span> <span class="o">-></span> <span class="n">order</span><span class="o">[</span><span class="mi">1</span><span class="o">]).</span><span class="na">equalTo</span><span class="o">(</span><span class="n">customer</span> <span class="o">-></span> <span class="n">customer</span><span class="o">[</span><span class="mi">0</span><spa [...]
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">where</span><span class="o">(</span><span class="n">order</span> <span class="o">-></span> <span class="n">order</span><span class="o">[</span><span class="n">1</span><span class="o">]).</span><span class="na">equalTo</span><span class="o">(</span><span class="n">customer</span> <span class="o">-></span> <span class="n">customer</span><span class="o">[</span><span class="n">0</span><span [...]
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="o">.</span><span class="na">window</span><span class="o">(</span><span class="n">GlobalWindows</span><span class="o">.</span><span class="na">create</span><span class="o">())</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">trigger</span><span class="o">(</span><span class="n">ContinuousProcessingTimeTrigger</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">seconds</span><span class="o">(</span><span class="mi">5</span><span class="o">)))</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">trigger</span><span class="o">(</span><span class="n">ContinuousProcessingTimeTrigger</span><span class="o">.</span><span class="na">of</span><span class="o">(</span><span class="n">Time</span><span class="o">.</span><span class="na">seconds</span><span class="o">(</span><span class="n">5</span><span class="o">)))</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">apply</span><span class="o">(</span><span class="k">new</span> <span class="n">ProjectFunction</span><span class="o">());</span>
</span></span></code></pre></div><p>You might notice the <code>ContinuousProcessingTimeTrigger</code>. It is there for the application to produce results in a <em>streaming</em> mode. In a <em>streaming</em> application the <code>GlobalWindow</code> never finishes so we need to add a processing time trigger to emit results from time to time. We believe triggers are a way to control when to emit results, but are not part of the logic what to emit. Therefore we think it is safe to ignore t [...]
<h2 id="looking-into-the-future">
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 8926ebcb0..62c937926 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is happy to announce the release of Stateful Functions (StateFun) 3.0.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.
@@ -15,11 +15,12 @@ This new release brings remote functions to the front and center of StateFun, ma
<meta property="og:url" content="https://flink.apache.org/2021/04/15/stateful-functions-3.0.0-remote-functions-front-and-center/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-04-15T08:00:00+00:00" />
<meta property="article:modified_time" content="2021-04-15T08:00:00+00:00" />
+
<title>Stateful Functions 3.0.0: Remote Functions Front and Center | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -986,7 +987,7 @@ functions are implemented in.</p>
Python
<a class="anchor" href="#python">#</a>
</h4>
-<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="nd">@functions.bind</span><span class="p">(</span><span class="n">typename</span><span class="o">=</span><span class="s2">"example/greeter"</span><span class="p">,</span> <span class="n">specs</span><span class="o">=</span><span class="p">[</span><span class="n">ValueSpec</span><span class="p">(</span><span class="n">name</span> [...]
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="nd">@functions</span><span class="o">.</span><span class="n">bind</span><span class="p">(</span><span class="n">typename</span><span class="o">=</span><span class="s2">"example/greeter"</span><span class="p">,</span> <span class="n">specs</span><span class="o">=</span><span class="p">[</span><span class="n">ValueSpec</span><span [...]
</span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">greeter</span><span class="p">(</span><span class="n">context</span><span class="p">:</span> <span class="n">Context</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="n">Message</span><span class="p">):</span>
</span></span><span class="line"><span class="cl"> <span class="c1"># update the visit count.</span>
</span></span><span class="line"><span class="cl"> <span class="n">visits</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">visits</span> <span class="ow">or</span> <span class="mi">0</span>
@@ -1012,7 +1013,7 @@ functions are implemented in.</p>
</span></span><span class="line"><span class="cl"> <span class="nd">@Override</span>
</span></span><span class="line"><span class="cl"> <span class="kd">public</span> <span class="n">CompletableFuture</span><span class="o"><</span><span class="n">Void</span><span class="o">></span> <span class="nf">apply</span><span class="o">(</span><span class="n">Context</span> <span class="n">context</span><span class="o">,</span> <span class="n">Message</span> <span class="n">message</span><span class="o">){</span>
</span></span><span class="line"><span class="cl"> <span class="c1">// update the visits count
-</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="kt">int</span> <span class="n">visits</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">storage</span><span class="o">().</span><span class="na">get</span><span class="o">(</span><span class="n">VISITS</span><span class="o">).</span><span class="na">orElse</span><span class="o">(</span><span class="mi">0</span><span class="o">);</span>
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="kt">int</span> <span class="n">visits</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">storage</span><span class="o">().</span><span class="na">get</span><span class="o">(</span><span class="n">VISITS</span><span class="o">).</span><span class="na">orElse</span><span class="o">(</span><span class="n">0</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="n">visits</span><span class="o">++;</span>
</span></span><span class="line"><span class="cl"> <span class="n">context</span><span class="o">.</span><span class="na">storage</span><span class="o">().</span><span class="na">set</span><span class="o">(</span><span class="n">VISITS</span><span class="o">,</span> <span class="n">visits</span><span class="o">);</span>
</span></span><span class="line"><span class="cl">
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 19ad647e0..a52a36e78 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the next bugfix version of the Apache Flink 1.12 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2021/04/29/apache-flink-1.12.3-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-04-29T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-04-29T00:00:00+00:00" />
+
<title>Apache Flink 1.12.3 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 739cb5d34..cd60229e6 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.
@@ -15,11 +15,12 @@ The release brings us a big step forward in one of our major efforts: Making Str
<meta property="og:url" content="https://flink.apache.org/2021/05/03/apache-flink-1.13.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-05-03T08:00:00+00:00" />
<meta property="article:modified_time" content="2021-05-03T08:00:00+00:00" />
+
<title>Apache Flink 1.13.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 9b9715504..517bb20d7 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="{% toc %}
@@ -15,11 +15,12 @@ Introduction # Streaming jobs which run for several days or longer usually exper
<meta property="og:url" content="https://flink.apache.org/2021/05/06/scaling-flink-automatically-with-reactive-mode/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-05-06T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-05-06T00:00:00+00:00" />
+
<title>Scaling Flink automatically with Reactive Mode | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 e350f1fcd..fadb76ccb 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the next bugfix version of the Apache Flink 1.12 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2021/05/21/apache-flink-1.12.4-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-05-21T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-05-21T00:00:00+00:00" />
+
<title>Apache Flink 1.12.4 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 b8744eafc..ace5c526b 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the first bugfix version of the Apache Flink 1.13 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2021/05/28/apache-flink-1.13.1-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-05-28T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-05-28T00:00:00+00:00" />
+
<title>Apache Flink 1.13.1 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 e76d4c7a1..48c18d01f 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="{% toc %}
@@ -17,11 +17,12 @@ The backpressure topic was tackled from different angles over the last couple of
<meta property="og:url" content="https://flink.apache.org/2021/07/07/how-to-identify-the-source-of-backpressure/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-07-07T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-07-07T00:00:00+00:00" />
+
<title>How to identify the source of backpressure? | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 7966fd219..797674e21 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the next bugfix version of the Apache Flink 1.12 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2021/08/06/apache-flink-1.12.5-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-08-06T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-08-06T00:00:00+00:00" />
+
<title>Apache Flink 1.12.5 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 78b6089dc..8a26ac0e8 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the second bugfix version of the Apache Flink 1.13 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2021/08/06/apache-flink-1.13.2-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-08-06T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-08-06T00:00:00+00:00" />
+
<title>Apache Flink 1.13.2 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 fc38dc11f..1b918c558 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the next bugfix version of the Apache Flink 1.11 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2021/08/09/apache-flink-1.11.4-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-08-09T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-08-09T00:00:00+00:00" />
+
<title>Apache Flink 1.11.4 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 3cba5e804..5aa1f9b3b 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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,
@@ -17,11 +17,12 @@ A lot of features and fixes went into this release, including improvements to th
<meta property="og:url" content="https://flink.apache.org/2021/08/31/help-us-stabilize-apache-flink-1.14.0-rc0/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-08-31T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-08-31T00:00:00+00:00" />
+
<title>Help us stabilize Apache Flink 1.14.0 RC0 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 4cb8ac749..24ccea4a3 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 new GoLang SDK!
@@ -15,11 +15,12 @@ The binary distribution and source artifacts are now available on the updated Do
<meta property="og:url" content="https://flink.apache.org/2021/08/31/stateful-functions-3.1.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-08-31T08:00:00+00:00" />
<meta property="article:modified_time" content="2021-08-31T08:00:00+00:00" />
+
<title>Stateful Functions 3.1.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 6927f9c26..a29dd7e83 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 it out with Flink’s SQL client.
@@ -17,11 +17,12 @@ Introduction # Apache Flink is a data processing engine that aims to keep state
<meta property="og:url" content="https://flink.apache.org/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-one/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-09-07T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-09-07T00:00:00+00:00" />
+
<title>Implementing a Custom Source Connector for Table API and SQL - Part One | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 b314f0c47..f07b5b9a0 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.
@@ -19,11 +19,12 @@ integrate a source connector which connects to a mailbox using the IMAP protocol
<meta property="og:url" content="https://flink.apache.org/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-two/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-09-07T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-09-07T00:00:00+00:00" />
+
<title>Implementing a custom source connector for Table API and SQL - Part Two | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -971,7 +972,7 @@ https://github.com/alex-shpak/hugo-book
</span></span><span class="line"><span class="cl"><span class="nd">@Data</span>
</span></span><span class="line"><span class="cl"><span class="nd">@SuperBuilder</span><span class="o">(</span><span class="n">toBuilder</span> <span class="o">=</span> <span class="kc">true</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kd">class</span> <span class="nc">ImapSourceOptions</span> <span class="kd">implements</span> <span class="n">Serializable</span> <span class="o">{</span>
-</span></span><span class="line"><span class="cl"> <span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="kt">long</span> <span class="n">serialVersionUID</span> <span class="o">=</span> <span class="mi">1L</span><span class="o">;</span>
+</span></span><span class="line"><span class="cl"> <span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="kt">long</span> <span class="n">serialVersionUID</span> <span class="o">=</span> <span class="n">1L</span><span class="o">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="kd">private</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">host</span><span class="o">;</span>
</span></span><span class="line"><span class="cl"> <span class="kd">private</span> <span class="kd">final</span> <span class="nd">@Nullable</span> <span class="n">Integer</span> <span class="n">port</span><span class="o">;</span>
@@ -1197,7 +1198,7 @@ user
</span></span><span class="line"><span class="cl"> <span class="k">while</span> <span class="o">(</span><span class="n">running</span><span class="o">)</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="c1">// Trigger some IMAP request to force the server to send a notification
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">folder</span><span class="o">.</span><span class="na">getMessageCount</span><span class="o">();</span>
-</span></span><span class="line"><span class="cl"> <span class="n">Thread</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="mi">250</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl"> <span class="n">Thread</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="n">250</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl">
@@ -1298,7 +1299,7 @@ user
</span></span><span class="line"><span class="cl"> <span class="kd">throws</span> <span class="n">MessagingException</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="kd">final</span> <span class="n">GenericRowData</span> <span class="n">row</span> <span class="o">=</span> <span class="k">new</span> <span class="n">GenericRowData</span><span class="o">(</span><span class="n">columnNames</span><span class="o">.</span><span class="na">size</span><span class="o">());</span>
</span></span><span class="line"><span class="cl">
-</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o"><</span> <span class="n">columnNames</span><span class="o">.</span><span class="na">size</span><span class="o">();</span> <span class="n">i</span><span class="o">++)</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="n">0</span><span class="o">;</span> <span class="n">i</span> <span class="o"><</span> <span class="n">columnNames</span><span class="o">.</span><span class="na">size</span><span class="o">();</span> <span class="n">i</span><span class="o">++)</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">switch</span> <span class="o">(</span><span class="n">columnNames</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="n">i</span><span class="o">))</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="s">"SUBJECT"</span><span class="o">:</span>
</span></span><span class="line"><span class="cl"> <span class="n">row</span><span class="o">.</span><span class="na">setField</span><span class="o">(</span><span class="n">i</span><span class="o">,</span> <span class="n">StringData</span><span class="o">.</span><span class="na">fromString</span><span class="o">(</span><span class="n">message</span><span class="o">.</span><span class="na">getSubject</span><span class="o">()));</span>
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 88fde4999..5c5da50b5 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 moving the project forward.
@@ -15,11 +15,12 @@ This release brings many new features and improvements in areas such as the SQL
<meta property="og:url" content="https://flink.apache.org/2021/09/29/apache-flink-1.14.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-09-29T08:00:00+00:00" />
<meta property="article:modified_time" content="2021-09-29T08:00:00+00:00" />
+
<title>Apache Flink 1.14.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 87e27c536..aec300eeb 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community released the third bugfix version of the Apache Flink 1.13 series.
@@ -21,11 +21,12 @@ Updated Maven dependencies:
<meta property="og:url" content="https://flink.apache.org/2021/10/19/apache-flink-1.13.3-released/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-10-19T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-10-19T00:00:00+00:00" />
+
<title>Apache Flink 1.13.3 Released | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 13d25d003..6cde37d1f 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.
@@ -17,11 +17,12 @@ How data gets passed around between operators # Data shuffling is an important s
<meta property="og:url" content="https://flink.apache.org/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-one/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-10-26T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-10-26T00:00:00+00:00" />
+
<title>Sort-Based Blocking Shuffle Implementation in Flink - Part One | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 4ac59bf30..bea483785 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.
@@ -15,11 +15,12 @@ Like sort-merge shuffle implemented by other distributed data processing framewo
<meta property="og:url" content="https://flink.apache.org/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-two/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-10-26T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-10-26T00:00:00+00:00" />
+
<title>Sort-Based Blocking Shuffle Implementation in Flink - Part Two | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 d2fbd4c5f..0cc651aa9 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 in this release, we will explore the experiences and processes behind it all.
@@ -17,11 +17,12 @@ A retrospective on the release cycle # From the team, we collected emotions that
<meta property="og:url" content="https://flink.apache.org/2021/11/03/flink-backward-the-apache-flink-retrospective/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-11-03T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-11-03T00:00:00+00:00" />
+
<title>Flink Backward - The Apache Flink Retrospective | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 e469b3f9e..533f52b93 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.
@@ -17,11 +17,12 @@ env.java.opts: -Dlog4j2.formatMsgNoLookups=true If you are already setting env."
<meta property="og:url" content="https://flink.apache.org/2021/12/10/advise-on-apache-log4j-zero-day-cve-2021-44228/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-12-10T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-12-10T00:00:00+00:00" />
+
<title>Advise on Apache Log4j Zero Day (CVE-2021-44228) | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 ede3486e1..aa8e9568c 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.
@@ -21,11 +21,12 @@ We are publishing this announcement earlier than usual to give users access to t
<meta property="og:url" content="https://flink.apache.org/2021/12/16/apache-flink-log4j-emergency-releases/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-12-16T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-12-16T00:00:00+00:00" />
+
<title>Apache Flink Log4j emergency releases | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 97567c924..5257ec038 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community has released an emergency bugfix version of Apache Flink Stateful Function 3.1.1.
@@ -19,11 +19,12 @@ You can find the source and binaries on the updated Downloads page, and Docker i
<meta property="og:url" content="https://flink.apache.org/2021/12/22/apache-flink-statefun-log4j-emergency-release/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2021-12-22T00:00:00+00:00" />
<meta property="article:modified_time" content="2021-12-22T00:00:00+00:00" />
+
<title>Apache Flink StateFun Log4j emergency release | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 1298bbb44..37a822ced 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 example, for a job with a topology that contains two vertices connected with an all-to-all edge and a parallelism of 10k (which means there are 10k source tasks and 10k sink tasks and ev [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-one/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-01-04T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-01-04T08:00:00+00:00" />
+
<title>How We Improved Scheduler Performance for Large-scale Jobs - Part One | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 ded6b94cf..314f4dd30 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 on the details of these optimizations.
@@ -17,11 +17,12 @@ Reducing complexity with groups # A distribution pattern describes how consumer
<meta property="og:url" content="https://flink.apache.org/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-two/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-01-04T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-01-04T08:00:00+00:00" />
+
<title>How We Improved Scheduler Performance for Large-scale Jobs - Part Two | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 2c7e278a5..a4a924903 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is excited to announce the release of Flink ML 2.0.0! Flink ML is a library that provides APIs and infrastructure for building stream-batch unified machine learning algorithms, that can be easy-to-use and performant with (near-) real-time latency.
@@ -15,11 +15,12 @@ This release involves a major refactor of the earlier Flink ML library and intro
<meta property="og:url" content="https://flink.apache.org/2022/01/07/apache-flink-ml-2.0.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-01-07T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-01-07T08:00:00+00:00" />
+
<title>Apache Flink ML 2.0.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 cd373ffd5..235bfab70 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 contains bugfixes not related to the mentioned CVE.
@@ -15,11 +15,12 @@ This release includes 164 fixes and minor improvements for Flink 1." />
<meta property="og:url" content="https://flink.apache.org/2022/01/17/apache-flink-1.14.3-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-01-17T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-01-17T08:00:00+00:00" />
+
<title>Apache Flink 1.14.3 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 5dbc707ce..ba869b2c9 100644
--- a/content/2022/01/20/pravega-flink-connector-101/index.html
+++ b/content/2022/01/20/pravega-flink-connector-101/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 provides unified batch and stream processing. Flink provides high-throughput, low-latency computation, [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2022/01/20/pravega-flink-connector-101/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-01-20T00:00:00+00:00" />
<meta property="article:modified_time" content="2022-01-20T00:00:00+00:00" />
+
<title>Pravega Flink Connector 101 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -1026,7 +1027,7 @@ https://github.com/alex-shpak/hugo-book
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="kd">final</span> <span class="n">StreamExecutionEnvironment</span> <span class="n">env</span> <span class="o">=</span> <span class="n">StreamExecutionEnvironment</span><span class="o">.</span><span class="na">getExecutionEnvironment</span><span class="o">();</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Enable Flink checkpoint to make state fault tolerant
-</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">env</span><span class="o">.</span><span class="na">enableCheckpointing</span><span class="o">(</span><span class="mi">60000</span><span class="o">);</span>
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">env</span><span class="o">.</span><span class="na">enableCheckpointing</span><span class="o">(</span><span class="n">60000</span><span class="o">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Define the Pravega configuration
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">ParameterTool</span> <span class="n">params</span> <span class="o">=</span> <span class="n">ParameterTool</span><span class="o">.</span><span class="na">fromArgs</span><span class="o">(</span><span class="n">args</span><span class="o">);</span>
@@ -1042,7 +1043,7 @@ https://github.com/alex-shpak/hugo-book
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">withDeserializationSchema</span><span class="o">(</span><span class="n">deserializer</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">build</span><span class="o">();</span>
</span></span><span class="line"><span class="cl"><span class="n">DataStream</span><span class="o"><</span><span class="n">MyClass</span><span class="o">></span> <span class="n">stream</span> <span class="o">=</span> <span class="n">env</span><span class="o">.</span><span class="na">addSource</span><span class="o">(</span><span class="n">pravegaSource</span><span class="o">)</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">setParallelism</span><span class="o">(</span><span class="mi">4</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">setParallelism</span><span class="o">(</span><span class="n">4</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">uid</span><span class="o">(</span><span class="s">"pravega-source"</span><span class="o">);</span>
</span></span></code></pre></div><h3 id="flinkpravegawriter">
<code>FlinkPravegaWriter</code>
@@ -1079,7 +1080,7 @@ https://github.com/alex-shpak/hugo-book
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">DataStream</span><span class="o"><</span><span class="n">MyClass</span><span class="o">></span> <span class="n">stream</span> <span class="o">=</span> <span class="o">...</span>
</span></span><span class="line"><span class="cl"><span class="n">stream</span><span class="o">.</span><span class="na">addSink</span><span class="o">(</span><span class="n">pravegaSink</span><span class="o">)</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">setParallelism</span><span class="o">(</span><span class="mi">4</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">setParallelism</span><span class="o">(</span><span class="n">4</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">uid</span><span class="o">(</span><span class="s">"pravega-sink"</span><span class="o">);</span>
</span></span></code></pre></div><p>You can see some more examples <a href="https://github.com/pravega/pravega-samples">here</a>.</p>
<h1 id="internals-of-reader-and-writer">
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 fd3e8fdf8..b7c0ecdf4 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 new JavaScript SDK!
@@ -15,11 +15,12 @@ The binary distribution and source artifacts are now available on the updated Do
<meta property="og:url" content="https://flink.apache.org/2022/01/31/stateful-functions-3.2.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-01-31T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-01-31T08:00:00+00:00" />
+
<title>Stateful Functions 3.2.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 ef6fa6318..e2277551b 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink Community is pleased to announce another bug fix release for Flink 1.13.
@@ -17,11 +17,12 @@ We highly recommend all users to upgrade to Flink 1." />
<meta property="og:url" content="https://flink.apache.org/2022/02/18/apache-flink-1.13.6-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-02-18T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-02-18T08:00:00+00:00" />
+
<title>Apache Flink 1.13.6 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 9c06762df..8020f9fbb 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Flink 1.15 is right around the corner, and among the many improvements is a Scala free classpath. Users can now leverage the Java API from any Scala version, including Scala 3!
@@ -17,11 +17,12 @@ TLDR: All Scala dependencies are now isolated to the flink-scala jar." />
<meta property="og:url" content="https://flink.apache.org/2022/02/22/scala-free-in-one-fifteen/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-02-22T00:00:00+00:00" />
<meta property="article:modified_time" content="2022-02-22T00:00:00+00:00" />
+
<title>Scala Free in One Fifteen | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 b5ec2540c..1a3671776 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink Community is pleased to announce another bug fix release for Flink 1.14.
@@ -19,11 +19,12 @@ Release Artifacts # Maven Dependencies # <dependency> <groupId>org."
<meta property="og:url" content="https://flink.apache.org/2022/03/11/apache-flink-1.14.4-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-03-11T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-03-11T08:00:00+00:00" />
+
<title>Apache Flink 1.14.4 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 dec34e347..548cfa514 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.
@@ -17,11 +17,12 @@ This is a base implementation for asynchronous sinks, which you should use whene
<meta property="og:url" content="https://flink.apache.org/2022/03/16/the-generic-asynchronous-base-sink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-03-16T16:00:00+00:00" />
<meta property="article:modified_time" content="2022-03-16T16:00:00+00:00" />
+
<title>The Generic Asynchronous Base 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 bbdd0eed4..8b7955e85 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink Community is pleased to announce the preview release of the Apache Flink Kubernetes Operator (0.1.0)
@@ -17,11 +17,12 @@ The operator takes care of submitting, savepointing, upgrading and generally man
<meta property="og:url" content="https://flink.apache.org/2022/04/03/apache-flink-kubernetes-operator-0.1.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-04-03T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-04-03T08:00:00+00:00" />
+
<title>Apache Flink Kubernetes Operator 0.1.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 f420bf520..f526ed16d 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.
@@ -15,11 +15,12 @@ One of the main concepts that makes Apache Flink stand out is the unification of
<meta property="og:url" content="https://flink.apache.org/2022/05/05/announcing-the-release-of-apache-flink-1.15/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-05-05T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-05-05T08:00:00+00:00" />
+
<title>Announcing the Release of Apache Flink 1.15 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 70831b7ec..dd6766fdd 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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.
@@ -15,11 +15,12 @@ Before Flink 1.15, Python user-defined functions will be executed in separate Py
<meta property="og:url" content="https://flink.apache.org/2022/05/06/exploring-the-thread-mode-in-pyflink/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-05-06T12:00:00+00:00" />
<meta property="article:modified_time" content="2022-05-06T12:00:00+00:00" />
+
<title>Exploring the thread mode in PyFlink | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 3e1612e71..7c6ee930f 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 has tried to address some known friction points, which includes improvements to the snapshotting process. Snapshotting takes a global, consistent image of the state of a Flink job and is integra [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2022/05/06/improvements-to-flink-operations-snapshots-ownership-and-savepoint-formats/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-05-06T00:00:00+00:00" />
<meta property="article:modified_time" content="2022-05-06T00:00:00+00:00" />
+
<title>Improvements to Flink operations: Snapshots Ownership and Savepoint Formats | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 a7c104108..653d4e906 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is pleased to announce the preview release of the Apache Flink Table Store (0.1.0).
@@ -19,11 +19,12 @@ What is Flink Table Store # In the past years, thanks to our numerous contributo
<meta property="og:url" content="https://flink.apache.org/2022/05/11/apache-flink-table-store-0.1.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-05-11T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-05-11T08:00:00+00:00" />
+
<title>Apache Flink Table Store 0.1.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 87802d79f..cca1d2bde 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 words, you don’t want to be driving a luxury sports car while only using the first gear.
@@ -15,11 +15,12 @@ In this multi-part series, we will present a collection of low-latency technique
<meta property="og:url" content="https://flink.apache.org/2022/05/18/getting-into-low-latency-gears-with-apache-flink-part-one/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-05-18T00:00:00+00:00" />
<meta property="article:modified_time" content="2022-05-18T00:00:00+00:00" />
+
<title>Getting into Low-Latency Gears with Apache Flink - Part One | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 84d3673f5..3cfefe0b2 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 measure end-to-end latency and presented a few techniques that optimize latency directly. In this post, we will continue with a few more direct latency optimization techniques. Just like in part one, for each optimization technique, we will clarify what it is, when to use it, and what to keep in mind wh [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2022/05/23/getting-into-low-latency-gears-with-apache-flink-part-two/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-05-23T00:00:00+00:00" />
<meta property="article:modified_time" content="2022-05-23T00:00:00+00:00" />
+
<title>Getting into Low-Latency Gears with Apache Flink - Part Two | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 b3eecd5a7..94ea18b99 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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-to-end latency mostly depends on the checkpointing mechanism, because processing results should only become visible after the state of the stream is persisted to non-volatile storage (this is assuming exactly-once mode; in other mod [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2022/05/30/improving-speed-and-stability-of-checkpointing-with-generic-log-based-incremental-checkpoints/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-05-30T00:00:00+00:00" />
<meta property="article:modified_time" content="2022-05-30T00:00:00+00:00" />
+
<title>Improving speed and stability of checkpointing with generic log-based incremental checkpoints | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 82cf87695..878b4b3ac 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 project.
@@ -17,11 +17,12 @@ New v1beta1 API version & compatibility guarantees Session Job Management su
<meta property="og:url" content="https://flink.apache.org/2022/06/05/apache-flink-kubernetes-operator-1.0.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-06-05T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-06-05T08:00:00+00:00" />
+
<title>Apache Flink Kubernetes Operator 1.0.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 28d6b9209..c83d3c50b 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="{% toc %}
@@ -17,11 +17,12 @@ To decide a proper parallelism, one needs to know how much data each operator ne
<meta property="og:url" content="https://flink.apache.org/2022/06/17/adaptive-batch-scheduler-automatically-decide-parallelism-of-flink-batch-jobs/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-06-17T00:00:00+00:00" />
<meta property="article:modified_time" content="2022-06-17T00:00:00+00:00" />
+
<title>Adaptive Batch Scheduler: Automatically Decide Parallelism of Flink Batch Jobs | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 d92d84405..f657b953b 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink Community is pleased to announce another bug fix release for Flink 1.14.
@@ -19,11 +19,12 @@ Release Artifacts # Maven Dependencies # <dependency> <groupId>org."
<meta property="og:url" content="https://flink.apache.org/2022/06/22/apache-flink-1.14.5-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-06-22T00:00:00+00:00" />
<meta property="article:modified_time" content="2022-06-22T00:00:00+00:00" />
+
<title>Apache Flink 1.14.5 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 6538b8eef..26feed132 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink Community is pleased to announce the first bug fix release of the Flink 1.15 series.
@@ -17,11 +17,12 @@ We highly recommend all users upgrade to Flink 1.15.1." />
<meta property="og:url" content="https://flink.apache.org/2022/07/06/apache-flink-1.15.1-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-07-06T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-07-06T08:00:00+00:00" />
+
<title>Apache Flink 1.15.1 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 aa0571d23..58c67d747 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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, the unification helps reduce the complexity of developing, operating, and maintaining consistency between streaming and batch backfilling jobs, like the case for Alibaba.">
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-one/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-07-11T00:00:00+00:00" />
<meta property="article:modified_time" content="2022-07-11T00:00:00+00:00" />
+
<title>FLIP-147: Support Checkpoints After Tasks Finished - Part One | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 2217838a5..725a620d6 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 protocol of the finish process.
@@ -15,11 +15,12 @@ Implementation of support Checkpointing with Finished Tasks # As described in pa
<meta property="og:url" content="https://flink.apache.org/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-two/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-07-11T00:00:00+00:00" />
<meta property="article:modified_time" content="2022-07-11T00:00:00+00:00" />
+
<title>FLIP-147: Support Checkpoints After Tasks Finished - Part Two | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 6d39e151d..48e7d00be 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is excited to announce the release of Flink ML 2.1.0! This release focuses on improving Flink ML’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 enhanced infrastructure by implementing, benchmarking, and optimizing 10 new algorithms in Flink ML, and confirmed that Flink ML can m [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2022/07/12/apache-flink-ml-2.1.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-07-12T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-07-12T08:00:00+00:00" />
+
<title>Apache Flink ML 2.1.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 2428a4ec9..1d731e325 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The community has continued to work hard on improving the Flink Kubernetes Operator capabilities since our first production ready release we launched about two months ago.
@@ -17,11 +17,12 @@ Release Highlights # A non-exhaustive list of some of the more exciting features
<meta property="og:url" content="https://flink.apache.org/2022/07/25/apache-flink-kubernetes-operator-1.1.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-07-25T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-07-25T08:00:00+00:00" />
+
<title>Apache Flink Kubernetes Operator 1.1.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 38fd215df..5372db1c6 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink Community is pleased to announce the second bug fix release of the Flink 1.15 series.
@@ -17,11 +17,12 @@ We highly recommend all users upgrade to Flink 1.15.2." />
<meta property="og:url" content="https://flink.apache.org/2022/08/24/apache-flink-1.15.2-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-08-24T22:00:00+00:00" />
<meta property="article:modified_time" content="2022-08-24T22:00:00+00:00" />
+
<title>Apache Flink 1.15.2 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 e8b2a3918..8a8bf03b9 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is pleased to announce the release of the Apache Flink Table Store (0.2.0).
@@ -19,11 +19,12 @@ As a new type of updatable data lake, Flink Table Store has the following featur
<meta property="og:url" content="https://flink.apache.org/2022/08/29/apache-flink-table-store-0.2.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-08-29T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-08-29T08:00:00+00:00" />
+
<title>Apache Flink Table Store 0.2.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 4489d04d8..2aeffbc4b 100644
--- a/content/2022/09/08/regarding-akkas-licensing-change/index.html
+++ b/content/2022/09/08/regarding-akkas-licensing-change/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="On September 7th Lightbend announced a license change for the Akka project, the TL;DR being that you will need a commercial license to use future versions of Akka (2.7+) in production if you exceed a certain revenue threshold.
@@ -17,11 +17,12 @@ The purpose of this blogpost is to clarify our position on the matter." />
<meta property="og:url" content="https://flink.apache.org/2022/09/08/regarding-akkas-licensing-change/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-09-08T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-09-08T08:00:00+00:00" />
+
<title>Regarding Akka's licensing change | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 a360db744..b3aae8752 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink Community is pleased to announce another bug fix release for Flink 1.14.
@@ -19,11 +19,12 @@ Release Artifacts # Maven Dependencies # <dependency> <groupId>org."
<meta property="og:url" content="https://flink.apache.org/2022/09/28/apache-flink-1.14.6-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-09-28T02:30:00+00:00" />
<meta property="article:modified_time" content="2022-09-28T02:30:00+00:00" />
+
<title>Apache Flink 1.14.6 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 66859ef9a..be1bc51e3 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="We are proud to announce the latest stable release of the operator. The 1.2.0 release adds support for the Standalone Kubernetes deployment mode and includes several improvements to the core logic.
@@ -15,11 +15,12 @@ Release Highlights # Standalone deployment mode support Improved upgrade flow Re
<meta property="og:url" content="https://flink.apache.org/2022/10/07/apache-flink-kubernetes-operator-1.2.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-10-07T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-10-07T08:00:00+00:00" />
+
<title>Apache Flink Kubernetes Operator 1.2.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 2a26d9cae..b0f935b2f 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink Community is pleased to announce the first bug fix release of the Flink Table Store 0.2 series.
@@ -19,11 +19,12 @@ Release Artifacts # Binaries # You can find the binaries on the updated Download
<meta property="og:url" content="https://flink.apache.org/2022/10/13/apache-flink-table-store-0.2.1-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-10-13T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-10-13T08:00:00+00:00" />
+
<title>Apache Flink Table Store 0.2.1 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 1ac9381c5..caf975b87 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Apache Flink continues to grow at a rapid pace and is one of the most active communities in Apache. Flink 1.16 had over 240 contributors enthusiastically participating, with 19 FLIPs and 1100+ issues completed, bringing a lot of exciting features to the community.
@@ -15,11 +15,12 @@ Flink has become the leading role and factual standard of stream processing, and
<meta property="og:url" content="https://flink.apache.org/2022/10/28/announcing-the-release-of-apache-flink-1.16/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-10-28T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-10-28T08:00:00+00:00" />
+
<title>Announcing the Release of Apache Flink 1.16 | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 0950d6fea..623672188 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink Community is pleased to announce the third bug fix release of the Flink 1.15 series.
@@ -17,11 +17,12 @@ We highly recommend all users upgrade to Flink 1.15.3." />
<meta property="og:url" content="https://flink.apache.org/2022/11/10/apache-flink-1.15.3-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-11-10T22:00:00+00:00" />
<meta property="article:modified_time" content="2022-11-10T22:00:00+00:00" />
+
<title>Apache Flink 1.15.3 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 3e033f176..5751ac417 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 sink without overloading the destination. However, since the factors impacting a destination’s performance are variable over the job’s lifetime, the sink needs to adjust its write rate dynamically.">
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2022/11/25/optimising-the-throughput-of-async-sinks-using-a-custom-ratelimitingstrategy/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-11-25T12:00:00+00:00" />
<meta property="article:modified_time" content="2022-11-25T12:00:00+00:00" />
+
<title>Optimising the throughput of async sinks using a custom RateLimitingStrategy | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -998,10 +999,10 @@ https://github.com/alex-shpak/hugo-book
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="nd">@Override</span>
</span></span><span class="line"><span class="cl"> <span class="kd">public</span> <span class="kt">void</span> <span class="nf">registerCompletedRequest</span><span class="o">(</span><span class="n">ResultInfo</span> <span class="n">resultInfo</span><span class="o">)</span> <span class="o">{</span>
-</span></span><span class="line"><span class="cl"> <span class="n">currentInFlightRequests</span> <span class="o">=</span> <span class="n">Math</span><span class="o">.</span><span class="na">max</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="n">currentInFlightRequests</span> <span class="o">-</span> <span class="mi">1</span><span class="o">);</span>
-</span></span><span class="line"><span class="cl"> <span class="n">currentInFlightMessages</span> <span class="o">=</span> <span class="n">Math</span><span class="o">.</span><span class="na">max</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="n">currentInFlightMessages</span> <span class="o">-</span> <span class="n">resultInfo</span><span class="o">.</span><span class="na">getBatchSize</span><span class="o">());</span>
+</span></span><span class="line"><span class="cl"> <span class="n">currentInFlightRequests</span> <span class="o">=</span> <span class="n">Math</span><span class="o">.</span><span class="na">max</span><span class="o">(</span><span class="n">0</span><span class="o">,</span> <span class="n">currentInFlightRequests</span> <span class="o">-</span> <span class="n">1</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl"> <span class="n">currentInFlightMessages</span> <span class="o">=</span> <span class="n">Math</span><span class="o">.</span><span class="na">max</span><span class="o">(</span><span class="n">0</span><span class="o">,</span> <span class="n">currentInFlightMessages</span> <span class="o">-</span> <span class="n">resultInfo</span><span class="o">.</span><span class="na">getBatchSize</span><span class="o">());</span>
</span></span><span class="line"><span class="cl">
-</span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="o">(</span><span class="n">resultInfo</span><span class="o">.</span><span class="na">getFailedMessages</span><span class="o">()</span> <span class="o">></span> <span class="mi">0</span><span class="o">)</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="o">(</span><span class="n">resultInfo</span><span class="o">.</span><span class="na">getFailedMessages</span><span class="o">()</span> <span class="o">></span> <span class="n">0</span><span class="o">)</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">maxInFlightMessages</span> <span class="o">=</span> <span class="n">scalingStrategy</span><span class="o">.</span><span class="na">scaleDown</span><span class="o">(</span><span class="n">maxInFlightMessages</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">maxInFlightMessages</span> <span class="o">=</span> <span class="n">scalingStrategy</span><span class="o">.</span><span class="na">scaleUp</span><span class="o">(</span><span class="n">maxInFlightMessages</span><span class="o">);</span>
@@ -1018,7 +1019,7 @@ https://github.com/alex-shpak/hugo-book
</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nd">@Override</span>
</span></span><span class="line"><span class="cl"> <span class="kd">public</span> <span class="kt">void</span> <span class="nf">registerCompletedRequest</span><span class="o">(</span><span class="n">ResultInfo</span> <span class="n">resultInfo</span><span class="o">)</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="c1">// ...
-</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="k">if</span> <span class="o">(</span><span class="n">resultInfo</span><span class="o">.</span><span class="na">getFailedMessages</span><span class="o">()</span> <span class="o">></span> <span class="mi">0</span><span class="o">)</span> <span class="o">{</span>
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="k">if</span> <span class="o">(</span><span class="n">resultInfo</span><span class="o">.</span><span class="na">getFailedMessages</span><span class="o">()</span> <span class="o">></span> <span class="n">0</span><span class="o">)</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">maxInFlightMessages</span> <span class="o">=</span> <span class="n">scalingStrategy</span><span class="o">.</span><span class="na">scaleDown</span><span class="o">(</span><span class="n">maxInFlightMessages</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">maxInFlightMessages</span> <span class="o">=</span> <span class="n">scalingStrategy</span><span class="o">.</span><span class="na">scaleUp</span><span class="o">(</span><span class="n">maxInFlightMessages</span><span class="o">);</span>
@@ -1048,8 +1049,8 @@ https://github.com/alex-shpak/hugo-book
</span></span><span class="line"><span class="cl"> <span class="kd">private</span> <span class="kd">final</span> <span class="n">Bucket</span> <span class="n">bucket</span><span class="o">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="kd">public</span> <span class="nf">TokenBucketRateLimitingStrategy</span><span class="o">()</span> <span class="o">{</span>
-</span></span><span class="line"><span class="cl"> <span class="n">Refill</span> <span class="n">refill</span> <span class="o">=</span> <span class="n">Refill</span><span class="o">.</span><span class="na">intervally</span><span class="o">(</span><span class="mi">1</span><span class="o">,</span> <span class="n">Duration</span><span class="o">.</span><span class="na">ofSeconds</span><span class="o">(</span><span class="mi">1</span><span class="o">));</span>
-</span></span><span class="line"><span class="cl"> <span class="n">Bandwidth</span> <span class="n">limit</span> <span class="o">=</span> <span class="n">Bandwidth</span><span class="o">.</span><span class="na">classic</span><span class="o">(</span><span class="mi">10</span><span class="o">,</span> <span class="n">refill</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl"> <span class="n">Refill</span> <span class="n">refill</span> <span class="o">=</span> <span class="n">Refill</span><span class="o">.</span><span class="na">intervally</span><span class="o">(</span><span class="n">1</span><span class="o">,</span> <span class="n">Duration</span><span class="o">.</span><span class="na">ofSeconds</span><span class="o">(</span><span class="n">1</span><span class="o">));</span>
+</span></span><span class="line"><span class="cl"> <span class="n">Bandwidth</span> <span class="n">limit</span> <span class="o">=</span> <span class="n">Bandwidth</span><span class="o">.</span><span class="na">classic</span><span class="o">(</span><span class="n">10</span><span class="o">,</span> <span class="n">refill</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="k">this</span><span class="o">.</span><span class="na">bucket</span> <span class="o">=</span> <span class="n">Bucket4j</span><span class="o">.</span><span class="na">builder</span><span class="o">()</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">addLimit</span><span class="o">(</span><span class="n">limit</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">build</span><span class="o">();</span>
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 009ae2b29..cdfb5cee9 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" 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 clear indicators that the original intentions of the Flink community, namely to provide the de facto standard solution for managing Flink applications on Kubernete [...]
@@ -13,11 +13,12 @@
<meta property="og:url" content="https://flink.apache.org/2022/12/14/apache-flink-kubernetes-operator-1.3.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2022-12-14T08:00:00+00:00" />
<meta property="article:modified_time" content="2022-12-14T08:00:00+00:00" />
+
<title>Apache Flink Kubernetes Operator 1.3.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 ab8b8c109..67ccdab0d 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink Community is pleased to announce the first bug fix release of the Flink Kubernetes Operator 1.3 series.
@@ -19,11 +19,12 @@ Release Notes # Bug # [FLINK-30329] - flink-kubernetes-operator helm chart does
<meta property="og:url" content="https://flink.apache.org/2023/01/10/apache-flink-kubernetes-operator-1.3.1-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2023-01-10T08:00:00+00:00" />
<meta property="article:modified_time" content="2023-01-10T08:00:00+00:00" />
+
<title>Apache Flink Kubernetes Operator 1.3.1 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 4a65e678b..84093b7be 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is pleased to announce the release of the Apache Flink Table Store (0.3.0).
@@ -19,11 +19,12 @@ Flink Table Store 0.3 completes many exciting features, enhances its ability as
<meta property="og:url" content="https://flink.apache.org/2023/01/13/apache-flink-table-store-0.3.0-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2023-01-13T08:00:00+00:00" />
<meta property="article:modified_time" content="2023-01-13T08:00:00+00:00" />
+
<title>Apache Flink Table Store 0.3.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 f2d23c57b..92a38a4af 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink Community is pleased to announce that the upcoming minor version of Flink (1.17) includes the Delegation Token Framework proposed in FLIP-272. This enables Flink to authenticate to external services at a central location (JobManager) and distribute authentication tokens to the TaskManagers.
@@ -15,11 +15,12 @@ Introduction # Authentication in distributed systems is not an easy task. Previo
<meta property="og:url" content="https://flink.apache.org/2023/01/20/delegation-token-framework-obtain-distribute-and-use-temporary-credentials-automatically/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2023-01-20T08:00:00+00:00" />
<meta property="article:modified_time" content="2023-01-20T08:00:00+00:00" />
+
<title>Delegation Token Framework: Obtain, Distribute and Use Temporary Credentials Automatically | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
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 fe0be165d..cc109d82e 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
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink Community is pleased to announce the first bug fix release of the Flink 1.16 series.
@@ -17,11 +17,12 @@ We highly recommend all users upgrade to Flink 1.16.1." />
<meta property="og:url" content="https://flink.apache.org/2023/01/30/apache-flink-1.16.1-release-announcement/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2023-01-30T16:00:00+00:00" />
<meta property="article:modified_time" content="2023-01-30T16:00:00+00:00" />
+
<title>Apache Flink 1.16.1 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/2023/01/10/apache-flink-kubernetes-operator-1.3.1-release-announcement/index.html b/content/2023/02/27/apache-flink-kubernetes-operator-1.4.0-release-announcement/index.html
similarity index 71%
copy from content/2023/01/10/apache-flink-kubernetes-operator-1.3.1-release-announcement/index.html
copy to content/2023/02/27/apache-flink-kubernetes-operator-1.4.0-release-announcement/index.html
index ab8b8c109..545c92fec 100644
--- a/content/2023/01/10/apache-flink-kubernetes-operator-1.3.1-release-announcement/index.html
+++ b/content/2023/02/27/apache-flink-kubernetes-operator-1.4.0-release-announcement/index.html
@@ -3,27 +3,24 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="description" 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 [...]
-<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Apache Flink Kubernetes Operator 1.3.1 Release Announcement" />
-<meta property="og:description" 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 [...]
+<meta name="description" content="We are proud to announce the latest stable release of the operator. In addition to the expected stability improvements and fixes, the 1.4.0 release introduces the first version of the long-awaited autoscaler module.
+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.">
+<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Apache Flink Kubernetes Operator 1.4.0 Release Announcement" />
+<meta property="og:description" content="We are proud to announce the latest stable release of the operator. In addition to the expected stability improvements and fixes, the 1.4.0 release introduces the first version of the long-awaited autoscaler module.
+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." />
<meta property="og:type" content="article" />
-<meta property="og:url" content="https://flink.apache.org/2023/01/10/apache-flink-kubernetes-operator-1.3.1-release-announcement/" /><meta property="article:section" content="posts" />
-<meta property="article:published_time" content="2023-01-10T08:00:00+00:00" />
-<meta property="article:modified_time" content="2023-01-10T08:00:00+00:00" />
-<title>Apache Flink Kubernetes Operator 1.3.1 Release Announcement | Apache Flink</title>
+<meta property="og:url" content="https://flink.apache.org/2023/02/27/apache-flink-kubernetes-operator-1.4.0-release-announcement/" /><meta property="article:section" content="posts" />
+<meta property="article:published_time" content="2023-02-27T08:00:00+00:00" />
+<meta property="article:modified_time" content="2023-02-27T08:00:00+00:00" />
+
+<title>Apache Flink Kubernetes Operator 1.4.0 Release Announcement | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -871,7 +868,7 @@ https://github.com/alex-shpak/hugo-book
<img src="/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
- <strong>Apache Flink Kubernetes Operator 1.3.1 Release Announcement</strong>
+ <strong>Apache Flink Kubernetes Operator 1.4.0 Release Announcement</strong>
<label for="toc-control">
@@ -888,12 +885,13 @@ https://github.com/alex-shpak/hugo-book
<nav id="TableOfContents"><h3>On This Page <button class="toc" onclick="collapseToc()"><i class="fa fa-compress" aria-hidden="true"></i></button></h3>
<ul>
- <li><a href="#release-notes">Release Notes</a>
+ <li><a href="#flink-streaming-job-autoscaler">Flink Streaming Job Autoscaler</a>
<ul>
- <li><a href="#bug">Bug</a></li>
- <li><a href="#improvement">Improvement</a></li>
+ <li><a href="#overview">Overview</a></li>
+ <li><a href="#limitations">Limitations</a></li>
</ul>
</li>
+ <li><a href="#zookeeper-ha-support">Zookeeper HA Support</a></li>
<li><a href="#release-resources">Release Resources</a></li>
<li><a href="#list-of-contributors">List of Contributors</a></li>
</ul>
@@ -913,10 +911,10 @@ https://github.com/alex-shpak/hugo-book
<article class="markdown">
<h1>
- <a href="/2023/01/10/apache-flink-kubernetes-operator-1.3.1-release-announcement/">Apache Flink Kubernetes Operator 1.3.1 Release Announcement</a>
+ <a href="/2023/02/27/apache-flink-kubernetes-operator-1.4.0-release-announcement/">Apache Flink Kubernetes Operator 1.4.0 Release Announcement</a>
</h1>
- January 10, 2023 -
+ February 27, 2023 -
@@ -925,49 +923,94 @@ https://github.com/alex-shpak/hugo-book
<a href="https://twitter.com/GyulaFora">(@GyulaFora)</a>
+ Maximilian Michels
+
+ <a href="https://twitter.com/stadtlegende">(@stadtlegende)</a>
+
+
+ Matyas Orhidi
+
+ <a href="https://twitter.com/matyasorhidi">(@matyasorhidi)</a>
+
+
- <p><p>The Apache Flink Community is pleased to announce the first bug fix release of the Flink Kubernetes Operator 1.3 series.</p>
-<p>The release contains fixes for several critical issues and some major stability improvements for the application upgrade mechanism.</p>
-<p>We highly recommend all users to upgrade to Flink Kubernetes Operator 1.3.1.</p>
-<h2 id="release-notes">
- Release Notes
- <a class="anchor" href="#release-notes">#</a>
+ <p><p>We are proud to announce the latest stable release of the operator. In addition to the expected stability improvements and fixes, the 1.4.0 release introduces the first version of the long-awaited autoscaler module.</p>
+<h2 id="flink-streaming-job-autoscaler">
+ Flink Streaming Job Autoscaler
+ <a class="anchor" href="#flink-streaming-job-autoscaler">#</a>
</h2>
-<h3 id="bug">
- Bug
- <a class="anchor" href="#bug">#</a>
+<p>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.</p>
+<p>With <a href="https://cwiki.apache.org/confluence/display/FLINK/FLIP-271%3A+Autoscaling">FLIP-271</a> 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.</p>
+<p>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 <a href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-release-1.4/docs/custom-resource/autoscaler/">Autoscaler Documentation</a>.</p>
+<h3 id="overview">
+ Overview
+ <a class="anchor" href="#overview">#</a>
</h3>
+<p>The autoscaler uses Flink task metrics to effectively and independently scale the job vertices of the streaming pipeline. This removes backpressure from the job to ensure an optimal flow of data at the lowest possible resource usage. All kind of jobs, including SQL jobs, can be scaled with this method.</p>
+<p>The approach is based on <a href="https://www.usenix.org/system/files/osdi18-kalavri.pdf">Three steps is all you need: fast, accurate, automatic scaling decisions for distributed streaming dataflows</a> by Kalavri et al. Shoutout to our fellow Flink community member and committer Vasiliki Kalavri!
+The used metrics include:
+Source metrics:</p>
<ul>
-<li>[FLINK-30329] - flink-kubernetes-operator helm chart does not work with dynamic config because of use of volumeMount subPath</li>
-<li>[FLINK-30361] - Cluster deleted and created back while updating replicas</li>
-<li>[FLINK-30406] - Jobmanager Deployment error without HA metadata should not lead to unrecoverable error</li>
-<li>[FLINK-30437] - State incompatibility issue might cause state loss</li>
-<li>[FLINK-30527] - Last-state suspend followed by flinkVersion change may lead to state loss</li>
-<li>[FLINK-30528] - Job may be stuck in upgrade loop when last-state fallback is disabled and deployment is missing</li>
+<li>number of pending records (source only)</li>
+<li>number of partitions (source only)</li>
+<li>ingestion rate (source only)</li>
+<li>processing rate</li>
+<li>time spent processing (utilization)
+The algorithm starts from the sources and recursively computes the required processing capacity for each operator in the pipeline. At the source vertices, target data rate (processing capacity) is equal to the data rate in Kafka.</li>
</ul>
-<h3 id="improvement">
- Improvement
- <a class="anchor" href="#improvement">#</a>
+<p>For other operators we compute it as the sum of the input (upstream) operators output data rate.</p>
+<p align="center">
+<img src="/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig1.png" width="70%" height="70%">
+</p>
+<p>Users configure the target utilization percentage of the operators in the pipeline, e.g. keep the all operators between 60% - 80% busy. The autoscaler then finds a configuration such that the output rates of all operators match the input rates of all their downstream operators at the targeted utilization.</p>
+<p>In this example we see an upscale operation:</p>
+<p align="center">
+<img src="/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig2.png" width="70%" height="70%">
+</p>
+<p>Similarly as load decreases, the autoscaler adjusts individual operator parallelism levels to match the current rate over time.</p>
+<p align="center">
+<img src="/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig3.png" width="70%" height="70%">
+</p>
+<p>The operator reports detailed JobVertex level metrics about the evaluated Flink job metrics that are collected and used in the scaling decision.
+This includes:</p>
+<ul>
+<li>Utilization, input rate, target rate metrics</li>
+<li>Scaling thresholds</li>
+<li>Parallelism and max parallelism changes over time</li>
+</ul>
+<p>These metrics are reported under the Kubernetes Operator Resource metric group:</p>
+<pre tabindex="0"><code>[resource_prefix].Autoscaler.[jobVertexID].[ScalingMetric].Current/Average
+</code></pre><h3 id="limitations">
+ Limitations
+ <a class="anchor" href="#limitations">#</a>
</h3>
+<p>While we are very happy with the progress we have made in the last few months, the autoscaler is still in an early stage of development.
+We rely on users to share feedback so we can improve and make this a very robust component.</p>
<ul>
-<li>[FLINK-28875] - Add FlinkSessionJobControllerTest</li>
-<li>[FLINK-30408] - Add unit test for HA metadata check logic</li>
+<li>The autoscaler currently requires Flink 1.17</li>
+<li>Source scaling requires the standard connector metrics, currently works best with Kafka sources</li>
</ul>
+<h2 id="zookeeper-ha-support">
+ Zookeeper HA Support
+ <a class="anchor" href="#zookeeper-ha-support">#</a>
+</h2>
+<p>Until now the operator only integrated with the Flink Kubernetes HA mechanism for last-state and other types of application upgrades. 1.4.0 adds support for the Zookeeper HA storage as well.</p>
+<p>While Zookeper is a slightly older solution, many users are still using it for HA metadata even in the Kubernetes world.</p>
<h2 id="release-resources">
Release Resources
<a class="anchor" href="#release-resources">#</a>
</h2>
-<p>The source artifacts and helm chart are available on the Downloads page of the Flink website. You can easily try out the new features shipped in the official 1.3.1 release by adding the Helm chart to your own local registry:</p>
-<pre tabindex="0"><code>$ 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
+<p>The source artifacts and helm chart are available on the Downloads page of the Flink website. You can easily try out the new features shipped in the official 1.4.0 release by adding the Helm chart to your own local registry:</p>
+<pre tabindex="0"><code>$ 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
</code></pre><p>You can also find official Kubernetes Operator Docker images of the new version on <a href="https://hub.docker.com/r/apache/flink-kubernetes-operator">Dockerhub</a>.</p>
-<p>For more details, check the <a href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-release-1.3/">updated documentation</a> 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.</p>
+<p>For more details, check the <a href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-release-1.4/">updated documentation</a> 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.</p>
<h2 id="list-of-contributors">
List of Contributors
<a class="anchor" href="#list-of-contributors">#</a>
</h2>
-<p>Gyula Fora, Andrew Otto, Swathi Chandrashekar, Peter Vary</p>
+<p>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</p>
</p>
</article>
@@ -983,7 +1026,7 @@ $ helm install flink-kubernetes-operator flink-kubernetes-operator-1.3.1/flink-k
<a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
<br><br>
-<a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2023-01-10-release-kubernetes-operator-1.3.1.md" style="color:black"><i class="fa fa-edit fa-fw"></i>Edit This Page</a>
+<a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2023-02-27-release-kubernetes-operator-1.4.0.md" style="color:black"><i class="fa fa-edit fa-fw"></i>Edit This Page</a>
@@ -1008,12 +1051,13 @@ $ helm install flink-kubernetes-operator flink-kubernetes-operator-1.3.1/flink-k
<nav id="TableOfContents"><h3>On This Page <button class="toc" onclick="collapseToc()"><i class="fa fa-compress" aria-hidden="true"></i></button></h3>
<ul>
- <li><a href="#release-notes">Release Notes</a>
+ <li><a href="#flink-streaming-job-autoscaler">Flink Streaming Job Autoscaler</a>
<ul>
- <li><a href="#bug">Bug</a></li>
- <li><a href="#improvement">Improvement</a></li>
+ <li><a href="#overview">Overview</a></li>
+ <li><a href="#limitations">Limitations</a></li>
</ul>
</li>
+ <li><a href="#zookeeper-ha-support">Zookeeper HA Support</a></li>
<li><a href="#release-resources">Release Resources</a></li>
<li><a href="#list-of-contributors">List of Contributors</a></li>
</ul>
diff --git a/content/404.html b/content/404.html
index 0a4302027..b80aa7a34 100644
--- a/content/404.html
+++ b/content/404.html
@@ -9,11 +9,12 @@
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://flink.apache.org/404.html" />
+
<title>404 Page not found | 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.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></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 f331001d8..b9599f050 100644
--- a/content/categories/index.html
+++ b/content/categories/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
@@ -11,13 +11,14 @@
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://flink.apache.org/categories/" />
+
<title>Categories | 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/categories/" title="Categories">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<link rel="alternate" type="application/rss+xml" href="https://flink.apache.org/categories/index.xml" title="Apache Flink" />
<!--
Made with Book Theme
diff --git a/content/community/index.html b/content/community/index.html
index 507d3eeff..bedbc30df 100644
--- a/content/community/index.html
+++ b/content/community/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Community & Project Info # How do I get help from Apache Flink? # There are many ways to get help from the Apache Flink community. The mailing lists are the primary place where all Flink committers are present. For user support and questions use the user mailing list. You can also join the community on Slack. Some committers are also monitoring Stack Overflow. Please remember to tag your questions with the apache-flink tag.">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/community/" /><meta property="article:section" content="" />
+
<title>Community & Project Info | 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/community/" title="社区 & 项目信息">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/documentation/flink-kubernetes-operator-master/index.html b/content/documentation/flink-kubernetes-operator-master/index.html
index 836a91d78..03ccf33ac 100644
--- a/content/documentation/flink-kubernetes-operator-master/index.html
+++ b/content/documentation/flink-kubernetes-operator-master/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Flink Kubernetes Operator documentation (latest snapshot) # You can find the Flink Kubernetes Operator documentation for the latest snapshot here. ">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/documentation/flink-kubernetes-operator-master/" /><meta property="article:section" content="documentation" />
+
<title>Kubernetes Operator Main (snapshot) | 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-kubernetes-operator-master/" title="Kubernetes Operator Main (snapshot)">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/documentation/flink-kubernetes-operator-stable/index.html b/content/documentation/flink-kubernetes-operator-stable/index.html
index 844edd5c3..b3017e486 100644
--- a/content/documentation/flink-kubernetes-operator-stable/index.html
+++ b/content/documentation/flink-kubernetes-operator-stable/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Flink Kubernetes Operator documentation (latest stable release) # You can find the Flink Kubernetes Operator documentation for the latest stable release here. ">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/documentation/flink-kubernetes-operator-stable/" /><meta property="article:section" content="documentation" />
+
<title>Kubernetes Operator 1.4 (latest) | 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-kubernetes-operator-stable/" title="Kubernetes Operator 1.4 (latest)">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/documentation/flink-master/index.html b/content/documentation/flink-master/index.html
index 517eacadf..20fceb56e 100644
--- a/content/documentation/flink-master/index.html
+++ b/content/documentation/flink-master/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Flink documentation (latest snapshot) # You can find the Flink documentation for the latest snapshot here. ">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/documentation/flink-master/" /><meta property="article:section" content="documentation" />
+
<title>Flink Master (snapshot) | 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-master/" title="Flink Master (snapshot)">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/documentation/flink-stable/index.html b/content/documentation/flink-stable/index.html
index 73d1873b5..b897817b8 100644
--- a/content/documentation/flink-stable/index.html
+++ b/content/documentation/flink-stable/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Flink documentation (latest stable release) # You can find the Flink documentation for the latest stable release here. ">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/documentation/flink-stable/" /><meta property="article:section" content="documentation" />
+
<title>Flink 1.16 (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 1.16 (stable)">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/documentation/flink-stateful-functions-master/index.html b/content/documentation/flink-stateful-functions-master/index.html
index c9dd0b501..d46e8fe73 100644
--- a/content/documentation/flink-stateful-functions-master/index.html
+++ b/content/documentation/flink-stateful-functions-master/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Flink Stateful Functions documentation (latest snapshot) # You can find the Flink Stateful Functions documentation for the latest snapshot here. ">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/documentation/flink-stateful-functions-master/" /><meta property="article:section" content="documentation" />
+
<title>Stateful Functions Master (snapshot) | 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-stateful-functions-master/" title="Stateful Functions Master (snapshot)">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/documentation/flink-stateful-functions-stable/index.html b/content/documentation/flink-stateful-functions-stable/index.html
index 6b70dc6bc..500390de4 100644
--- a/content/documentation/flink-stateful-functions-stable/index.html
+++ b/content/documentation/flink-stateful-functions-stable/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Flink documentation (latest stable release) # You can find the Flink documentation for the latest stable release here. ">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/documentation/flink-stateful-functions-stable/" /><meta property="article:section" content="documentation" />
+
<title>Stateful Functions 3.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-stateful-functions-stable/" title="Stateful Functions 3.2 (stable)">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/documentation/flink-table-store-master/index.html b/content/documentation/flink-table-store-master/index.html
index 0e8ec535e..220754d6d 100644
--- a/content/documentation/flink-table-store-master/index.html
+++ b/content/documentation/flink-table-store-master/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Flink documentation (latest snapshot) # You can find the Flink Table Store documentation for the latest snapshot here. ">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/documentation/flink-table-store-master/" /><meta property="article:section" content="documentation" />
+
<title>Table Store Master (snapshot) | 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-table-store-master/" title="Table Store Master (snapshot)">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/documentation/flink-table-store-stable/index.html b/content/documentation/flink-table-store-stable/index.html
index 0fc76f82e..4c03aee96 100644
--- a/content/documentation/flink-table-store-stable/index.html
+++ b/content/documentation/flink-table-store-stable/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Flink documentation (latest stable release) # You can find the Flink documentation for the latest stable release here. ">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/documentation/flink-table-store-stable/" /><meta property="article:section" content="documentation" />
+
<title>Table Store 0.3 (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-table-store-stable/" title="Table Store 0.3 (stable)">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/documentation/flinkml-master/index.html b/content/documentation/flinkml-master/index.html
index 9d938aa64..59f686699 100644
--- a/content/documentation/flinkml-master/index.html
+++ b/content/documentation/flinkml-master/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Flink ML documentation (latest snapshot) # You can find the Flink ML documentation for the latest snapshot here. ">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/documentation/flinkml-master/" /><meta property="article:section" content="documentation" />
+
<title>ML Master (snapshot) | 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/flinkml-master/" title="ML Master (snapshot)">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/documentation/flinkml-stable/index.html b/content/documentation/flinkml-stable/index.html
index e40e4cfb6..cf47bb1dd 100644
--- a/content/documentation/flinkml-stable/index.html
+++ b/content/documentation/flinkml-stable/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Flink ML documentation (latest stable release) # You can find the Flink ML documentation for the latest stable release here. ">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/documentation/flinkml-stable/" /><meta property="article:section" content="documentation" />
+
<title>ML 2.1 (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/flinkml-stable/" title="ML 2.1 (stable)">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/documentation/index.html b/content/documentation/index.html
index 4381ce226..e983d65db 100644
--- a/content/documentation/index.html
+++ b/content/documentation/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Documentation # ">
@@ -11,13 +11,14 @@
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://flink.apache.org/documentation/" />
+
<title>Documentation | 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/" title="Documentation">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<link rel="alternate" type="application/rss+xml" href="https://flink.apache.org/documentation/index.xml" title="Apache Flink" />
<!--
Made with Book Theme
diff --git a/content/downloads/index.html b/content/downloads/index.html
index 6c8ad976a..cdd7131f8 100644
--- a/content/downloads/index.html
+++ b/content/downloads/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<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® 1.16.1 is the latest stable release.
@@ -23,13 +23,14 @@ Apache Flink 1." />
<meta property="og:url" content="https://flink.apache.org/downloads/" /><meta property="article:section" content="" />
+
<title>Downloads | 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/downloads/" title="Downloads">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/en.search-data.min.f74046b726c67d0a9d373a886282e5421ed4698e80488f1cfdee3ce66c8ffd9d.js b/content/en.search-data.min.6931d5558efb88aa02a322f643c81f3c8d94c73c03f91a221221f4724d197408.js
similarity index 97%
rename from content/en.search-data.min.f74046b726c67d0a9d373a886282e5421ed4698e80488f1cfdee3ce66c8ffd9d.js
rename to content/en.search-data.min.6931d5558efb88aa02a322f643c81f3c8d94c73c03f91a221221f4724d197408.js
index 9f3254bc5..a98010c6f 100644
--- a/content/en.search-data.min.f74046b726c67d0a9d373a886282e5421ed4698e80488f1cfdee3ce66c8ffd9d.js
+++ b/content/en.search-data.min.6931d5558efb88aa02a322f643c81f3c8d94c73c03f91a221221f4724d197408.js
@@ -388,8 +388,8 @@ Ensure the code is standalone. Code examples should be self-contained and not ha
Avoid shortcuts. For example, handle exceptions and cleanup as you would in real-world code.
Include comments, but don’t overdo it. Provide an introduction describing the main functionality of the code and possible caveats that might not be obvious from reading it. Use comments to clarify implementation details and to describe the expected output.
Commands in code blocks. Commands can be documented using bash syntax highlighted code blocks. The following items should be considered when adding commands to the documentation:
-Use long parameter names. Long parameter names help the reader to understand the purpose of the command. They should be preferred over their short counterparts. One parameter per line. Using long parameter names makes the command possibly harder to read. Putting one parameter per line improves the readability. You need to add a backslash \\ escaping the newline at the end of each intermediate line to support copy\u0026amp;paste. Indentation. Each new parameter line should be indented by [...]
-$ ./bin/flink run-application \\ --target kubernetes-application \\ -Dkubernetes.cluster-id=my-first-application-cluster \\ -Dkubernetes.container.image=custom-image-name \\ local:///opt/flink/usrlib/my-flink-job.jar General Guiding Principles # This style guide has the overarching goal of setting the foundation for documentation that is Accessible, Consistent, Objective, Logical and Inclusive.
+Use long parameter names. Long parameter names help the reader to understand the purpose of the command. They should be preferred over their short counterparts. One parameter per line. Using long parameter names makes the command possibly harder to read. Putting one parameter per line improves the readability. You need to add a backslash \\ escaping the newline at the end of each intermediate line to support copy\u0026amp;paste. Indentation. Each new parameter line should be indented by [...]
+\$ ./bin/flink run-application \\ --target kubernetes-application \\ -Dkubernetes.cluster-id=my-first-application-cluster \\ -Dkubernetes.container.image=custom-image-name \\ local:///opt/flink/usrlib/my-flink-job.jar General Guiding Principles # This style guide has the overarching goal of setting the foundation for documentation that is Accessible, Consistent, Objective, Logical and Inclusive.
Accessible # The Flink community is diverse and international, so you need to think wide and globally when writing documentation. Not everyone speaks English at a native level and the level of experience with Flink (and stream processing in general) ranges from absolute beginners to experienced advanced users. Ensure technical accuracy and linguistic clarity in the content you produce so that it can be understood by all users.
Consistent # Stick to the basic guidelines detailed in this style guide and use your own best judgment to uniformly spell, capitalize, hyphenate, bold and italicize text. Correct grammar, punctuation and spelling are desirable, but not a hard requirement — documentation contributions are open to any level of language proficiency.
Objective # Keep your sentences short and to the point. As a rule of thumb, if a sentence is shorter than 14 words, readers will likely understand 90 percent of its content. Sentences with more than 25 words are usually harder to understand and should be revised and split, when possible. Being concise and using well-known keywords also allows users to navigate to relevant documentation with little effort.
@@ -416,14 +416,33 @@ ASF website git repositories # ASF writable: https://gitbox.apache.org/repos/asf
Details on how to set the credentials for the ASF git repository are linked here.
Merging a pull request # Contributions are expected to be done on the source files only (no modifications on the compiled files in the content/ directory.). Before pushing a website change, please run the build script
./build.sh add the changes to the content/ directory as an additional commit and push the changes to the ASF base repository.
-`}),e.add({id:42,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:42,href:"/2023/02/27/apache-flink-kubernetes-operator-1.4.0-release-announcement/",title:"Apache Flink Kubernetes Operator 1.4.0 Release Announcement",section:"Flink Blog",content:`We are proud to announce the latest stable release of the operator. In addition to the expected stability improvements and fixes, the 1.4.0 release introduces the first version of the long-awaited autoscaler module.
+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.
+Overview # The autoscaler uses Flink task metrics to effectively and independently scale the job vertices of the streaming pipeline. This removes backpressure from the job to ensure an optimal flow of data at the lowest possible resource usage. All kind of jobs, including SQL jobs, can be scaled with this method.
+The approach is based on Three steps is all you need: fast, accurate, automatic scaling decisions for distributed streaming dataflows by Kalavri et al. Shoutout to our fellow Flink community member and committer Vasiliki Kalavri! The used metrics include: Source metrics:
+number of pending records (source only) number of partitions (source only) ingestion rate (source only) processing rate time spent processing (utilization) The algorithm starts from the sources and recursively computes the required processing capacity for each operator in the pipeline. At the source vertices, target data rate (processing capacity) is equal to the data rate in Kafka. For other operators we compute it as the sum of the input (upstream) operators output data rate.
+Users configure the target utilization percentage of the operators in the pipeline, e.g. keep the all operators between 60% - 80% busy. The autoscaler then finds a configuration such that the output rates of all operators match the input rates of all their downstream operators at the targeted utilization.
+In this example we see an upscale operation:
+Similarly as load decreases, the autoscaler adjusts individual operator parallelism levels to match the current rate over time.
+The operator reports detailed JobVertex level metrics about the evaluated Flink job metrics that are collected and used in the scaling decision. This includes:
+Utilization, input rate, target rate metrics Scaling thresholds Parallelism and max parallelism changes over time These metrics are reported under the Kubernetes Operator Resource metric group:
+[resource_prefix].Autoscaler.[jobVertexID].[ScalingMetric].Current/Average Limitations # While we are very happy with the progress we have made in the last few months, the autoscaler is still in an early stage of development. We rely on users to share feedback so we can improve and make this a very robust component.
+The autoscaler currently requires Flink 1.17 Source scaling requires the standard connector metrics, currently works best with Kafka sources Zookeeper HA Support # Until now the operator only integrated with the Flink Kubernetes HA mechanism for last-state and other types of application upgrades. 1.4.0 adds support for the Zookeeper HA storage as well.
+While Zookeper is a slightly older solution, many users are still using it for HA metadata even in the Kubernetes world.
+Release Resources # The source artifacts and helm chart are available on the Downloads page of the Flink website. You can easily try out the new features shipped in the official 1.4.0 release by adding the Helm chart to your own local registry:
+\$ 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:43,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 # \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.16.1\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026g [...]
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 \u0026ldquo;flink.\u0026rdquo; prefix to metric identifiers if \u0026ldquo;useLogicalIdentifier\u0026rdquo; 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 \u0026hellip; The aim of Delegation Token Framework is to solve the above challenges. The fr [...]
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:
@@ -436,7 +455,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:44,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:45,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.
@@ -461,23 +480,23 @@ The lookup join operator will maintain a RocksDB cache locally and pull the late
This feature is only suitable for tables containing at most tens of millions of records to avoid excessive use of local disks.
Time Traveling # You can use Snapshots Table and Scan Mode to time traveling.
You can view all current snapshots by reading snapshots table. You can travel time through from-timestamp and from-snapshot. For example:
-SELECT * FROM T$options; /* +--------------+------------+--------------+-------------------------+ | snapshot_id | schema_id | commit_kind | commit_time | +--------------+------------+--------------+-------------------------+ | 2 | 0 | APPEND | 2022-10-26 11:44:15.600 | | 1 | 0 | APPEND | 2022-10-26 11:44:15.148 | +--------------+------------+--------------+-------------------------+ 2 rows in set */ SELECT * FROM T /*+ OPTIONS(\u0026#39;from-snapshot\u0026#39;=\u0026#39;1\u0026#39;) */; [...]
+SELECT * FROM T\$options; /* +--------------+------------+--------------+-------------------------+ | snapshot_id | schema_id | commit_kind | commit_time | +--------------+------------+--------------+-------------------------+ | 2 | 0 | APPEND | 2022-10-26 11:44:15.600 | | 1 | 0 | APPEND | 2022-10-26 11:44:15.148 | +--------------+------------+--------------+-------------------------+ 2 rows in set */ SELECT * FROM T /*+ OPTIONS(\u0026#39;from-snapshot\u0026#39;=\u0026#39;1\u0026#39;) */ [...]
There are four values for rowkind:
+I: Insertion operation. -U: Update operation with the previous content of the updated row. +U: Update operation with new content of the updated row. -D: Deletion operation. For example:
-SELECT * FROM MyTable$audit_log; /* +------------------+-----------------+-----------------+ | rowkind | column_0 | column_1 | +------------------+-----------------+-----------------+ | +I | ... | ... | +------------------+-----------------+-----------------+ | -U | ... | ... | +------------------+-----------------+-----------------+ | +U | ... | ... | +------------------+-----------------+-----------------+ 3 rows in set */ Ecosystem # Flink Table Store continues to strengthen its ecosy [...]
+SELECT * FROM MyTable\$audit_log; /* +------------------+-----------------+-----------------+ | rowkind | column_0 | column_1 | +------------------+-----------------+-----------------+ | +I | ... | ... | +------------------+-----------------+-----------------+ | -U | ... | ... | +------------------+-----------------+-----------------+ | +U | ... | ... | +------------------+-----------------+-----------------+ 3 rows in set */ Ecosystem # Flink Table Store continues to strengthen its ecos [...]
Spark write has been supported. But INSERT OVERWRITE and stream write are still unsupported. S3 and OSS are supported by all computing engines. Hive 3.1 is supported. Trino the latest version (JDK 1s.17) is supported. Getting started # Please refer to the getting started guide for more details.
What\u0026rsquo;s Next? # In the upcoming 0.4.0 release you can expect the following additional features:
Provides Flink decoupled independent Java APIs Spark: enhance batch write, provide streaming write and streaming read Flink: complete DDL \u0026amp; 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 mail [...]
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:45,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:46,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.
+\$ 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:46,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:47,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.
@@ -487,10 +506,10 @@ Contribute the Flink Kubernetes Operator to OperatorHub # The Apache Flink Kuber
Publish flink-kubernetes-operator-api module separately # With the current operator release the Flink community introduces a more light-weight dependency model for interacting with the Flink Kubernetes Operator programmatically. We have refactored the existing operator modules, and introduced a new module, called flink-kubernetes-operator-api that contains the generated CRD classes and a minimal set of dependencies only to make the operator client as slim as possible.
What\u0026rsquo;s Next? # \u0026ldquo;One of the most challenging aspects of running an always-on streaming pipeline is the correct sizing of Flink deployments. … Clearly, it would be desirable to automatically adjust the resources for Flink deployments. This process is referred to as autoscaling.\u0026rdquo; - The Flink community is planning to propose an operator based vertex autoscaler. See FLIP-271 for further details. Beyond the autoscaler, which is one of the most anticipated featu [...]
Release Resources # The source artifacts and helm chart are available on the Downloads page of the Flink website. You can easily try out the new features shipped in the official 1.3.0 release by adding the Helm chart to your own local registry:
-$ 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.
+\$ 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:47,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:48,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 [...]
@@ -519,11 +538,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\u0026lt;InputT\u0026gt; extends AsyncSinkWriter\u0026lt;InputT, MyCustomRequestEntry\u0026gt; { MyCustomSinkWriter( ElementConverter\u0026lt;InputT, MyCustomRequestEntry\u0026gt; elementConverter, Sink.InitContext context, Collection\u0026lt;BufferedRequestState\u0026lt;MyCustomRequestEntry\u0026gt;\u0026gt; states) { super( elementConverter, context, AsyncSinkWriterConfiguration.builder() // ... .setRateLimitingStrategy(new TokenBucketRateLimitingStrategy()) .bu [...]
We hope this extension will be useful for you. If you have any feedback, feel free to reach out!
-`}),e.add({id:48,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:49,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 # \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.15.3\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026g [...]
-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 [...]
@@ -568,11 +587,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:50,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:51,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.
@@ -585,13 +604,13 @@ Readiness and Liveness probes # From an operational perspective it is very impor
Flexible job jar handling # The 1.2.0 release now makes the jobSpec.jarURI parameter optional to allow users to run jobs using dependencies that are already bundled in the Flink classpath.
This can be especially valuable in session deployments when multiple jobs, reusing the same artifacts, are deployed with different configurations.
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 [...]
+\$ 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 [...]
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:52,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:53,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 # \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.14.6\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u [...]
-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\u0026#39;t set start consuming position correctly [FLINK-27418] - Flink SQL TopN result is wrong [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\u0026#39;t set start consuming position correctly [FLINK-27418] - Flink SQL TopN result is wrong [FLINK [...]
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.
@@ -612,7 +631,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\u0026rsquo;t aware of, meaning that we can replace it with something else without having to change Flink significantly.
-`}),e.add({id:54,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:55,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:
@@ -628,12 +647,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:55,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:56,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 # \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.15.2\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026g [...]
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\u0026#39;s producer name should be unique [FLINK-27399] - Pulsar connector didn\u0026#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-2785 [...]
+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\u0026#39;s producer name should be unique [FLINK-27399] - Pulsar connector didn\u0026#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-2785 [...]
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 [...]
@@ -662,7 +681,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:57,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\u0026rsquo;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 en [...]
+`}),e.add({id:58,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\u0026rsquo;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 en [...]
With the improvements and performance benchmarks made in this release, we believe Flink ML\u0026rsquo;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.
{% toc %}
@@ -684,7 +703,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:58,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, the [...]
+`}),e.add({id:59,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, the [...]
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 [...]
@@ -704,7 +723,7 @@ Therefore, we do not take the intuitive option. Instead, we decoupled \u0026ldqu
Based on this thought, as shown in the right part of Figure 3, to decoupled the process of \u0026ldquo;finishing operator logic\u0026rdquo; and \u0026ldquo;finishing tasks\u0026rdquo;, 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 s [...]
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:59,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 prot [...]
+`}),e.add({id:60,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 prot [...]
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 \u0026ldquo;source\u0026rdquo; tasks to initiate the checkpoint, namely those tasks that are still running but have no running precedent tasks. CheckpointCoordi [...]
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.
@@ -727,16 +746,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:60,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:61,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 # \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.15.1\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026g [...]
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 # \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.14.5\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u [...]
-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] - [...]
Introduction # Deciding proper parallelisms of operators is not an easy work for many users. For batch jobs, a small parallelism may result in long execution time and big failover regression. While an unnecessary large parallelism may result in resource waste and more overhead cost in task deployment and network shuffling.
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:
@@ -772,7 +791,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:63,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:64,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 \u0026amp; 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.
@@ -791,11 +810,11 @@ Improved Operator Metrics # Beyond the existing JVM based system metrics, additi
Scope Metrics Description Type Namespace FlinkDeployment.Count Number of managed FlinkDeployment instances per namespace Gauge Namespace FlinkDeployment.\u0026lt;Status\u0026gt;.Count Number of managed FlinkDeployment resources per \u0026lt;Status\u0026gt; per namespace. \u0026lt;Status\u0026gt; can take values from: READY, DEPLOYED_NOT_READY, DEPLOYING, MISSING, ERROR Gauge Namespace FlinkSessionJob.Count Number of managed FlinkSessionJob instances per namespace Gauge What\u0026rsquo;s [...]
Standalone deployment mode support FLIP-225 Auto-scaling using Horizontal Pod Autoscaler Dynamic change of watched namespaces Pluggable Status and Event reporters (Making it easier to integrate with proprietary control planes) SQL jobs support Release Resources # The source artifacts and helm chart are now available on the updated Downloads page of the Flink website.
The official 1.0.0 release archive doubles as a Helm repository that you can easily register locally:
-$ helm repo add flink-kubernetes-operator-1.0.0 https://archive.apache.org/dist/flink/flink-kubernetes-operator-1.0.0/ $ helm install flink-kubernetes-operator flink-kubernetes-operator-1.0.0/flink-kubernetes-operator --set webhook.create=false You can also find official Kubernetes Operator Docker images of the new version on Dockerhub.
+\$ helm repo add flink-kubernetes-operator-1.0.0 https://archive.apache.org/dist/flink/flink-kubernetes-operator-1.0.0/ \$ helm install flink-kubernetes-operator flink-kubernetes-operator-1.0.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 # 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:64,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-to [...]
+`}),e.add({id:65,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-to [...]
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).
@@ -839,7 +858,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: \u0026lt;location similar to state.checkpoints.dir\u0026gt; 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:65,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 mea [...]
+References # FLIP-158 generic log-based incremental checkpoints documentation Unaligned checkpoints Buffer debloating Incremental checkpoints `}),e.add({id:66,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 mea [...]
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.
@@ -860,7 +879,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:66,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 wo [...]
+`}),e.add({id:67,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 wo [...]
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 [...]
@@ -885,7 +904,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:67,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:68,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.
@@ -903,7 +922,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:68,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:69,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 \u0026rsquo;thread\u0026rsquo; 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.
{% toc %}
@@ -946,7 +965,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 \u0026amp; Future work # In this article, we have introduced the \u0026rsquo;thread\u0026rsquo; execution mode in PyFlink which is a new feature introduced in Flink 1.15. Compared with the \u0026lsquo;process\u0026rsquo; execution mode, users will get better performance, lower latency, less checkpoint time in \u0026rsquo;thread\u0026rsquo; mode. However, there are also some limitations about \u0026rsquo;thread\u0026rsquo; mode, e.g. poor support for session deployment mode, etc.
It should be noted that since this is still the first release of \u0026rsquo;thread\u0026rsquo; mode, currently there are still many limitations about it, e.g. it only supports Python ScalarFunction of Python Table API \u0026amp; SQL. We\u0026rsquo;re planning to extend it to other places where Python user-defined functions could be used in next releases.
-`}),e.add({id:69,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 ha [...]
+`}),e.add({id:70,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 ha [...]
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.
{% toc %}
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.
@@ -956,7 +975,7 @@ Savepoints can be expensive to take and restore from if taken for a very large s
Another issue reported with externalized checkpoints is that it is not clear who owns the checkpoint files (Flink or the user?). This is especially problematic when it comes to incremental RocksDB checkpoints where you can easily end up in a situation where you do not know which checkpoints depend on which files which makes it tough to clean those files up. To solve this issue, we added explicit restore modes (CLAIM, NO_CLAIM, and LEGACY) which clearly define whether Flink should take ca [...]
The new restore modes # The Restore Mode determines who takes ownership of the files that make up savepoints or externalized checkpoints after they are restored. Snapshots, which are either checkpoints or savepoints in this context, can be owned either by a user or Flink itself. If a snapshot is owned by a user, Flink will not delete its files and will not depend on the existence of such files since it might be deleted outside of Flink\u0026rsquo;s control.
The restore modes are CLAIM, NO_CLAIM, and LEGACY (for backwards compatibility). You can pass the restore mode like this:
-$ bin/flink run -s :savepointPath -restoreMode :mode -n [:runArgs] While each restore mode serves a specific purpose, we believe the default NO_CLAIM mode is a good tradeoff in most situations, as it provides clear ownership with a small price for the first checkpoint after the restore.
+\$ bin/flink run -s :savepointPath -restoreMode :mode -n [:runArgs] While each restore mode serves a specific purpose, we believe the default NO_CLAIM mode is a good tradeoff in most situations, as it provides clear ownership with a small price for the first checkpoint after the restore.
Let\u0026rsquo;s dig further into each of the modes.
LEGACY mode # The legacy mode is how Flink dealt with snapshots until version 1.15. In this mode, Flink will never delete the initial checkpoint. Unfortunately, at the same time, it is not clear if a user can ever delete it as well. The problem here is that Flink might immediately build an incremental checkpoint on top of the restored one. Therefore, subsequent checkpoints depend on the restored checkpoint. Overall, the ownership is not well defined in this mode.
NO_CLAIM (default) mode # To fix the issue of files that no one can reliably claim ownership of, we introduced the NO_CLAIM mode as the new default. In this mode, Flink will not assume ownership of the snapshot and will leave the files in the user\u0026rsquo;s control and never delete any of the files. You can start multiple jobs from the same snapshot in this mode.
@@ -968,11 +987,11 @@ self-contained, relocatable, and owned by users lightweight (and thus fast to ta
That state backend can leverage RocksDB native on-disk data structures which are usually referred to as SST files. Incremental checkpoints leveraged those files and are collections of those SST files with some additional metadata, which can be quickly reloaded into the working directory of RocksDB upon restore.
Native savepoints can use the same mechanism of uploading the SST files instead of dumping the entire state into a canonical Flink format. There is one additional benefit over simply using the externalized incremental checkpoints: native savepoints are still relocatable and self-contained in a single directory. In case of checkpoints that do not hold, because a single SST file can be used by multiple checkpoints, and thus is put into a common shared directory. That is why they are called [...]
You can choose the savepoint format when triggering the savepoint like this:
-# take an intermediate savepoint $ bin/flink savepoint --type [native/canonical] :jobId [:targetDirectory] # stop the job with a savepoint $ bin/flink stop --type [native/canonical] --savepointPath [:targetDirectory] :jobId Capabilities and limitations # Unfortunately it is not possible to provide the same guarantees for all types of snapshots (canonical or native savepoints and aligned or unaligned checkpoints). The main difference between checkpoints and savepoints is that savepoints a [...]
+# take an intermediate savepoint \$ bin/flink savepoint --type [native/canonical] :jobId [:targetDirectory] # stop the job with a savepoint \$ bin/flink stop --type [native/canonical] --savepointPath [:targetDirectory] :jobId Capabilities and limitations # Unfortunately it is not possible to provide the same guarantees for all types of snapshots (canonical or native savepoints and aligned or unaligned checkpoints). The main difference between checkpoints and savepoints is that savepoints [...]
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\u0026rsquo;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:70,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:71,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 [...]
@@ -1027,7 +1046,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:71,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:72,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
@@ -1043,11 +1062,11 @@ Support for Session Job deployments Job upgrade rollback strategies Pluggable va
Support for standalone / reactive deployment modes Support for other job types such as SQL or Python Please give the preview release a try, share your feedback on the Flink mailing list and contribute to the project!
Release Resources # The source artifacts and helm chart are now available on the updated Downloads page of the Flink website.
The official 0.1.0 release archive doubles as a Helm repository that you can easily register locally:
-$ helm repo add flink-kubernetes-operator-0.1.0 https://archive.apache.org/dist/flink/flink-kubernetes-operator-0.1.0/ $ helm install flink-kubernetes-operator flink-kubernetes-operator-0.1.0/flink-kubernetes-operator --set webhook.create=false You can also find official Kubernetes Operator Docker images of the new version on Dockerhub.
+\$ helm repo add flink-kubernetes-operator-0.1.0 https://archive.apache.org/dist/flink/flink-kubernetes-operator-0.1.0/ \$ helm install flink-kubernetes-operator flink-kubernetes-operator-0.1.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 # 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:72,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:73,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\u0026rsquo;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.
@@ -1073,13 +1092,13 @@ 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:73,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:74,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 # \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.14.4\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u [...]
-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* {% toc %}
+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* {% toc %}
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 classpath, forcing any dependency Flink exposes onto users. That is why the Flink community works hard to keep our classpath \u0026ldquo;clean\u0026rdquo; - or free of unnecessary dependencies. We achieve this through a c [...]
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.
Hiding Scala # As mentioned above, Flink uses Scala in a few key components; Mesos integration, the serialization stack, RPC, and the table planner. Instead of removing these dependencies or finding ways to cross-build them, the community hid Scala. It still exists in the codebase but no longer leaks into the user code classloader.
@@ -1097,11 +1116,11 @@ https://nightlies.apache.org/flink/flink-docs-master/docs/dev/configuration/adva
https://github.com/ariskk/flink4s\u0026#160;\u0026#x21a9;\u0026#xfe0e;
https://github.com/findify/flink-adt\u0026#160;\u0026#x21a9;\u0026#xfe0e;
https://github.com/sjwiesman/flink-scala-3\u0026#160;\u0026#x21a9;\u0026#xfe0e;
-`}),e.add({id:75,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:76,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 # \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.13.6\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u [...]
-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!
{% toc %}
@@ -1118,7 +1137,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:77,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 provid [...]
+`}),e.add({id:78,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 provid [...]
That\u0026rsquo;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\u0026rsquo;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 pa [...]
@@ -1160,12 +1179,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:78,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 cont [...]
+`}),e.add({id:79,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 cont [...]
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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.14.3\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.14.3\u0026lt;/version\u0026gt; \ [...]
-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.
@@ -1208,14 +1227,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:80,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 exampl [...]
+`}),e.add({id:81,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 exampl [...]
Furthermore, task deployment may block the JobManager\u0026rsquo;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\u0026rsquo;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:81,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 on [...]
+`}),e.add({id:82,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 on [...]
{% toc %}
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](//nightlies.apache.org/flinkflink-docs-release-1.12/api/java/org/apache/flink/runtime/executiongraph/ExecutionEdge.html) 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](//nightlies.apache.org/flinkflink-docs-release-1. [...]
@@ -1240,22 +1259,22 @@ Fig. 4 - The LogicalPipelinedRegion and the SchedulingPipelinedRegion Currently,
Fig. 5 - The topology with scheduling deadlock To speed up the construction of pipelined regions, the relevance between the logical topology and the scheduling topology can be leveraged. Since a SchedulingPipelinedRegion is derived from just one LogicalPipelinedRegion, Flink traverses all LogicalPipelinedRegions and converts them into SchedulingPipelinedRegions one by one. The conversion varies based on the distribution patterns of edges that connect vertices in the LogicalPipelinedRegio [...]
If there are only pointwise distribution patterns inside a region, Tarjan\u0026rsquo;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\u0026rsquo;ve done several optimizations to i [...]
-`}),e.add({id:82,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:83,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:83,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:84,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:84,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:85,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:85,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 in [...]
+`}),e.add({id:86,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 in [...]
{% toc %}
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\u0026hellip;
@@ -1281,7 +1300,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:86,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:87,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.
{% toc %}
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:
@@ -1301,7 +1320,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\u0026rsquo;s next? # For details on the design and implementation of this feature, please refer to the second part of this blog!
-`}),e.add({id:87,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:88,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.
{% toc %}
@@ -1330,7 +1349,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:88,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:89,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:
@@ -1341,7 +1360,7 @@ Table API \u0026lsquo;Primary Key\u0026rsquo; feature was not working correctly
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\u0026rsquo;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:89,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 mov [...]
+`}),e.add({id:90,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 mov [...]
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 \u0026amp; 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 de [...]
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).
@@ -1396,7 +1415,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:90,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 i [...]
+`}),e.add({id:91,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 i [...]
{% toc %}
Introduction # Apache Flink is a data processing engine that aims to keep state locally in order to do computations efficiently. However, Flink does not \u0026ldquo;own\u0026rdquo; 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.
@@ -1431,7 +1450,7 @@ You need to implement a Factory, which is a base interface that creates object i
import java.util.HashSet; import java.util.Set; import org.apache.flink.configuration.ConfigOption; import org.apache.flink.table.connector.source.DynamicTableSource; import org.apache.flink.table.factories.DynamicTableSourceFactory; import org.apache.flink.table.factories.FactoryUtil; public class ImapTableSourceFactory implements DynamicTableSourceFactory { @Override public String factoryIdentifier() { return \u0026#34;imap\u0026#34;; } @Override public Set\u0026lt;ConfigOption\u0026lt [...]
Finally, you need to register your factory for Java\u0026rsquo;s Service Provider Interfaces (SPI). Classes that implement this interface can be discovered and should be added to this file src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory with the fully classified class name of your factory:
// if you created your class in the package org.example.acme, it should be named the following: org.example.acme.ImapTableSourceFactory Test the custom connector # You should now have a working source connector. If you are following along with the provided repository, you can test it by running:
-$ cd testing/ $ ./build_and_run.sh This builds the connector, starts a Flink cluster, a test email server (which you will need later), and the SQL client (which is bundled in the regular Flink distribution) for you. If successful, you should see the SQL CLI:
+\$ cd testing/ \$ ./build_and_run.sh This builds the connector, starts a Flink cluster, a test email server (which you will need later), and the SQL client (which is bundled in the regular Flink distribution) for you. If successful, you should see the SQL CLI:
Flink SQL Client
You can now create a table (with a \u0026ldquo;subject\u0026rdquo; column and a \u0026ldquo;content\u0026rdquo; column) with your connector by executing the following statement with the SQL client:
CREATE TABLE T (subject STRING, content STRING) WITH (\u0026#39;connector\u0026#39; = \u0026#39;imap\u0026#39;); SELECT * FROM T; Note that the schema must be exactly as written since it is currently hardcoded into the connector.
@@ -1439,7 +1458,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:91,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:92,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.
{% toc %}
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 [...]
@@ -1455,7 +1474,7 @@ Hint The column names would be "subject" and "content" with the SQL executed in
CREATE TABLE T (subject STRING, content STRING) WITH ('connector' = 'imap'); import org.apache.flink.streaming.api.functions.source.RichSourceFunction; import org.apache.flink.table.data.RowData; import java.util.List; import java.util.stream.Collectors; public class ImapSource extends RichSourceFunction\u0026lt;RowData\u0026gt; { private final ImapSourceOptions options; private final List\u0026lt;String\u0026gt; columnNames; public ImapSource( ImapSourceOptions options, List\u0026lt;Str [...]
import org.apache.flink.configuration.ConfigOption; import org.apache.flink.configuration.ConfigOptions; import org.apache.flink.table.factories.DynamicTableSourceFactory; import java.util.HashSet; import java.util.Set; public class ImapTableSourceFactory implements DynamicTableSourceFactory { public static final ConfigOption\u0026lt;String\u0026gt; HOST = ConfigOptions.key(\u0026#34;host\u0026#34;).stringType().noDefaultValue(); public static final ConfigOption\u0026lt;Integer\u0026gt; [...]
import java.util.List; import java.util.stream.Collectors; import org.apache.flink.table.factories.DynamicTableSourceFactory; import org.apache.flink.table.factories.FactoryUtil; import org.apache.flink.table.catalog.Column; public class ImapTableSourceFactory implements DynamicTableSourceFactory { // ... @Override public DynamicTableSource createDynamicTableSource(Context ctx) { final FactoryUtil.TableFactoryHelper factoryHelper = FactoryUtil.createTableFactoryHelper(this, ctx); factory [...]
-$ cd testing/ $ ./build_and_run.sh Once you see the Flink SQL client start up, execute the following statements to create a table with your connector:
+\$ cd testing/ \$ ./build_and_run.sh Once you see the Flink SQL client start up, execute the following statements to create a table with your connector:
CREATE TABLE T (subject STRING, content STRING) WITH (\u0026#39;connector\u0026#39; = \u0026#39;imap\u0026#39;); SELECT * FROM T; This time it will fail because the required options are not provided:
[ERROR] Could not execute SQL statement. Reason: org.apache.flink.table.api.ValidationException: One or more required options are missing. Missing required options are: host password user Connect to the source email server # Now that you have configured the required options to connect to the email server, it is time to actually connect to the server.
Going back to the ImapSource class, you first need to convert the options given to the table source into a Properties object, which is what you can pass to the Jakarta library. You can also set various other properties here as well (i.e. enabling SSL).
@@ -1466,9 +1485,9 @@ import jakarta.mail.*; import org.apache.flink.streaming.api.functions.source.Ri
Note Since the source is not checkpointable, no state fault tolerance will be possible.
Collect incoming emails # Now you need to listen for new emails arriving in the inbox folder and collect them. To begin, hardcode the schema and only return the email’s subject. Fortunately, Jakarta provides a simple hook (addMessageCountListener()) to get notified when new messages arrive on the server. You can use this in place of the “TODO” comment above:
import jakarta.mail.*; import jakarta.mail.event.MessageCountAdapter; import jakarta.mail.event.MessageCountEvent; import org.apache.flink.streaming.api.functions.source.RichSourceFunction; import org.apache.flink.table.data.GenericRowData; import org.apache.flink.table.data.StringData; import org.apache.flink.table.data.RowData; public class ImapSource extends RichSourceFunction\u0026lt;RowData\u0026gt; { @Override public void run(SourceFunction.SourceContext\u0026lt;RowData\u0026gt; ct [...]
-$ cd testing/ $ ./build_and_run.sh This time, you will connect to a GreenMail server which is started as part of the setup:
+\$ cd testing/ \$ ./build_and_run.sh This time, you will connect to a GreenMail server which is started as part of the setup:
CREATE TABLE T ( subject STRING ) WITH ( \u0026#39;connector\u0026#39; = \u0026#39;imap\u0026#39;, \u0026#39;host\u0026#39; = \u0026#39;greenmail\u0026#39;, \u0026#39;port\u0026#39; = \u0026#39;3143\u0026#39;, \u0026#39;user\u0026#39; = \u0026#39;alice\u0026#39;, \u0026#39;password\u0026#39; = \u0026#39;alice\u0026#39; ); SELECT * FROM T; The query above should now run continuously but no rows will be produced since it is a test server. You need to first send an email to the server. If y [...]
-$ echo \u0026#34;This is the email body\u0026#34; | mailx -Sv15-compat \\ -s\u0026#34;Email Subject\u0026#34; \\ -Smta=\u0026#34;smtp://alice:alice@localhost:3025\u0026#34; \\ alice@acme.org The row “Email Subject” should now have appeared as a row in your output. Your source connector is working!
+\$ echo \u0026#34;This is the email body\u0026#34; | mailx -Sv15-compat \\ -s\u0026#34;Email Subject\u0026#34; \\ -Smta=\u0026#34;smtp://alice:alice@localhost:3025\u0026#34; \\ alice@acme.org The row “Email Subject” should now have appeared as a row in your output. Your source connector is working!
However, since you are still hard-coding the schema produced by the source, defining the table with a different schema will produce errors. You want to be able to define which fields of an email interest you and then produce the data accordingly. To do this, you will use the list of column names from earlier and then look at it when you collect the emails.
import org.apache.flink.table.data.GenericRowData; import org.apache.flink.table.data.RowData; import org.apache.flink.table.data.TimestampData; public class ImapSource extends RichSourceFunction\u0026lt;RowData\u0026gt; { private void collectMessages(SourceFunction.SourceContext\u0026lt;RowData\u0026gt; ctx, Message[] messages) { for (Message message : messages) { try { collectMessage(ctx, message); } catch (MessagingException ignored) {} } } private void collectMessage(SourceFunction.S [...]
CREATE TABLE T ( subject STRING, sent TIMESTAMP(3), received TIMESTAMP(3) ) WITH ( \u0026#39;connector\u0026#39; = \u0026#39;imap\u0026#39;, \u0026#39;host\u0026#39; = \u0026#39;greenmail\u0026#39;, \u0026#39;port\u0026#39; = \u0026#39;3143\u0026#39;, \u0026#39;user\u0026#39; = \u0026#39;alice\u0026#39;, \u0026#39;password\u0026#39; = \u0026#39;alice\u0026#39; ); SELECT * FROM T; Use the mailx command from earlier to send emails to the GreenMail server and you should see them appear. You [...]
@@ -1479,7 +1498,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:92,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:93,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!
{% toc %}
@@ -1502,30 +1521,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:93,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:94,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\u0026rsquo;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:94,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:95,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.11.4\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.11.4\u0026lt;/version\u0026gt; \ [...]
-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\u0026#39;t read from beginning immediately when \u0026#39;connector.startup-mode\u0026#39; = \u0026#39;earliest-offset\u0026#39; [FLINK-16443] - Fix wrong fix for user-code CheckpointExceptions [FLINK-18438] - TaskManager start failed [FLINK-19369] - BlobCli [...]
+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\u0026#39;t read from beginning immediately when \u0026#39;connector.startup-mode\u0026#39; = \u0026#39;earliest-offset\u0026#39; [FLINK-16443] - Fix wrong fix for user-code CheckpointExceptions [FLINK-18438] - TaskManager start failed [FLINK-19369] - BlobCli [...]
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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.12.5\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.12.5\u0026lt;/version\u0026gt; \ [...]
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] - \u0026quot;Local recovery and sticky scheduling end-to-end test\u0026quot; does not finish within 600 seconds [FLINK-21445] - Application mode does not set the configuration when building PackagedProgram [FLINK [...]
+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] - \u0026quot;Local recovery and sticky scheduling end-to-end test\u0026quot; does not finish within 600 seconds [FLINK-21445] - Application mode does not set the configuration when building PackagedProgram [FLIN [...]
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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.13.2\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.13.2\u0026lt;/version\u0026gt; \ [...]
-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 \u0026 [...]
+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 \u0026 [...]
Backpressure monitoring in the web UI
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\u0026hellip;
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.
@@ -1554,18 +1573,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\u0026rsquo;s web UI. Flame Graphs is a well known profiling to [...]
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\u0026hellip; 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:98,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:99,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.13.1\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.13.1\u0026lt;/version\u0026gt; \ [...]
-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\u0026#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 [...]
+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\u0026#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 [...]
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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.12.4\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.12.4\u0026lt;/version\u0026gt; \ [...]
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 [...]
Introduction # Streaming jobs which run for several days or longer usually experience variations in workload during their lifetime. These variations can originate from seasonal spikes, such as day vs. night, weekdays vs. weekend or holidays vs. non-holidays, sudden events or simply the growing popularity of your product. Although some of these variations are more predictable than others, in all cases there is a change in job resource demand that needs to be addressed if you want to ensur [...]
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\u0026rsquo;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.
@@ -1604,7 +1623,7 @@ To mitigate this issue, we have reduced the heartbeat.timeout in our experiment
Conclusion # In this blog post, we\u0026rsquo;ve introduced Reactive Mode, a big step forward in Flink\u0026rsquo;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\u0026rsquo;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:101,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:102,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\u0026rsquo;t flow as fast as you\u0026rsquo;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.
@@ -1710,13 +1729,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:102,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:103,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.12.3\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.12.3\u0026lt;/version\u0026gt; \ [...]
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.
{% toc %}
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.
@@ -1742,7 +1761,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:104,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:`{% toc %}
+`}),e.add({id:105,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:`{% toc %}
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/SQL was subsequently designed following this mantra of unification. With Flink 1.12, the community worked on bringing a similarly unified behaviour to the DataStream API, and took the firs [...]
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.
@@ -1758,13 +1777,13 @@ When should you use the batch mode, then?
The simple answer is if you run your computation on bounded, historic data. The batch mode has a few benefits:
In bounded data there is no such thing as late data. You do not need to think how to adjust the watermarking logic that you use in your application. In a streaming case, you need to maintain the order in which the records were written - which is often not possible to recreate when reading from e.g. historic files. In batch mode you don\u0026rsquo;t need to care about that as the data will be sorted according to the timestamp and \u0026ldquo;perfect\u0026rdquo; watermarks will be injected [...]
STREAMING: The classic DataStream execution mode (default) BATCH: Batch-style execution on the DataStream API AUTOMATIC: Let the system decide based on the boundedness of the sources This can be configured via command line parameters of bin/flink run ... when submitting a job:
-$ bin/flink run -Dexecution.runtime-mode=BATCH examples/streaming/WordCount.jar , or programmatically when creating/configuring the StreamExecutionEnvironment
+\$ bin/flink run -Dexecution.runtime-mode=BATCH examples/streaming/WordCount.jar , or programmatically when creating/configuring the StreamExecutionEnvironment
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setRuntimeMode(RuntimeExecutionMode.BATCH); We recommend passing the execution mode when submitting the job, in order to keep your code configuration-free and potentially be able to execute the same application in different execution modes.
Hello batch mode # Now that you know how to set the execution mode, let\u0026rsquo;s try to write a simple word count program and see how it behaves depending on the chosen mode. The program is a variation of a standard word count, where we count number of orders placed in a given currency. We derive the number in 1-day windows. We read the input data from a new unified file source and then apply a window aggregation. Notice that we will be checking the side output for late arriving data [...]
public class WindowWordCount { private static final OutputTag\u0026lt;String[]\u0026gt; LATE_DATA = new OutputTag\u0026lt;\u0026gt;( \u0026#34;late-data\u0026#34;, BasicArrayTypeInfo.STRING_ARRAY_TYPE_INFO); public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); ParameterTool config = ParameterTool.fromArgs(args); Path path = new Path(config.get(\u0026#34;path\u0026#34;)); SingleOutputStreamOperator [...]
-$ bin/flink run examples/streaming/WindowWordCount.jar it will be executed in a streaming mode by default. Because of that, it will use the given watermarking strategy and produce windows based on it. In real-time scenarios, it might happen that records do not adhere to watermarks and some records might actually be considered late, so you\u0026rsquo;ll get results like:
+\$ bin/flink run examples/streaming/WindowWordCount.jar it will be executed in a streaming mode by default. Because of that, it will use the given watermarking strategy and produce windows based on it. In real-time scenarios, it might happen that records do not adhere to watermarks and some records might actually be considered late, so you\u0026rsquo;ll get results like:
... [1431681, 130936, F, 135996.21, NOK, 2020-04-11 07:53:02.674, 2-HIGH, Clerk#000000922, 0, quests. slyly regular platelets cajole ironic deposits: blithely even depos] [1431744, 143957, F, 36391.24, CHF, 2020-04-11 07:53:27.631, 2-HIGH, Clerk#000000406, 0, eans. blithely special instructions are quickly. q] [1431812, 58096, F, 55292.05, CAD, 2020-04-11 07:54:16.956, 2-HIGH, Clerk#000000561, 0, , regular packages use. slyly even instr] [1431844, 77335, O, 415443.20, CAD, 2020-04-11 07: [...]
-$ bin/flink run -Dexecution.runtime-mode=BATCH examples/streaming/WordCount.jar you\u0026rsquo;ll see that there won\u0026rsquo;t be any late records.
+\$ bin/flink run -Dexecution.runtime-mode=BATCH examples/streaming/WordCount.jar you\u0026rsquo;ll see that there won\u0026rsquo;t be any late records.
Number of late records: 0 (GBP,374,2020-03-31T00:00:00Z,2020-04-01T00:00:00Z) (HKD,401,2020-03-31T00:00:00Z,2020-04-01T00:00:00Z) (CNY,402,2020-03-31T00:00:00Z,2020-04-01T00:00:00Z) (CAD,392,2020-03-31T00:00:00Z,2020-04-01T00:00:00Z) (JPY,411,2020-03-31T00:00:00Z,2020-04-01T00:00:00Z) (CHF,371,2020-03-31T00:00:00Z,2020-04-01T00:00:00Z) (NOK,370,2020-03-31T00:00:00Z,2020-04-01T00:00:00Z) (RUB,365,2020-03-31T00:00:00Z,2020-04-01T00:00:00Z) Also, if you compare the execution timelines of bo [...]
whereas for streaming both stages started at the same time.
Example: Two input operators # Operators that process data from multiple inputs can be executed in both execution modes as well. Let\u0026rsquo;s see how we may implement a join of two data sets on a common key. (Disclaimer: Make sure to think first if you should use the Table API/SQL for your join!). We will enrich a stream of orders with information about the customer and we will make it run either of the two modes.
@@ -1777,13 +1796,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\u0026rsquo;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\u0026rsquo;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\u0026rsquo;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 iterat [...]
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:105,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:106,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.12.2\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.12.2\u0026lt;/version\u0026gt; \ [...]
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\u0026rsquo;ll recap the technical details of deploying Flink applications natively on Kubernetes, diving deeper into Flink’s Kubernetes HA architecture. We\u0026rsquo;ll then walk you through a hands-on example of running a Flink application cluster on Kubernetes with HA enabled. [...]
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.
@@ -1797,20 +1816,20 @@ The leader retrieval service is used to find the active leader’s address and a
All other meta information (e.g. running jobs, job graphs, completed checkpoints and checkpointer counter) will be directly stored in the corresponding ConfigMaps. Only the leader can update the ConfigMap. The HA data will only be cleaned up once the Flink cluster reaches the global terminal state. Please note that only the pointers are stored in the ConfigMap; the concrete data will be stored in the DistributedStorage. This level of indirection is necessary to keep the amount of data in [...]
Example: Application Cluster with HA # You\u0026rsquo;ll need a running Kubernetes cluster and to get kubeconfig properly set to follow along. You can use kubectl get nodes to verify that you’re all set! In this blog post, we’re using minikube for local testing.
1. Build a Docker image with the Flink job (my-flink-job.jar) baked in
-FROM flink:1.12.1 RUN mkdir -p $FLINK_HOME/usrlib COPY /path/of/my-flink-job.jar $FLINK_HOME/usrlib/my-flink-job.jar Use the above Dockerfile to build a user image (\u0026lt;user-image\u0026gt;) and then push it to your remote image repository:
-$ docker build -t \u0026lt;user-image\u0026gt; . $ docker push \u0026lt;user-image\u0026gt; **2. Start a Flink Application Cluster** $ ./bin/flink run-application \\ --detached \\ --parallelism 4 \\ --target kubernetes-application \\ -Dkubernetes.cluster-id=k8s-ha-app-1 \\ -Dkubernetes.container.image=\u0026lt;user-image\u0026gt; \\ -Dkubernetes.jobmanager.cpu=0.5 \\ -Dkubernetes.taskmanager.cpu=0.5 \\ -Dtaskmanager.numberOfTaskSlots=4 \\ -Dkubernetes.rest-service.exposed.type=NodePort \ [...]
-**4. Kill the JobManager to simulate failure** $ kubectl exec {jobmanager_pod_name} -- /bin/sh -c \u0026#34;kill 1\u0026#34; **5. Verify that the job recovers from the latest successful checkpoint** Refresh the Flink Web UI until the new JobManager is launched, and then search for the following JobManager logs to verify that the job recovers from the latest successful checkpoint:
+FROM flink:1.12.1 RUN mkdir -p \$FLINK_HOME/usrlib COPY /path/of/my-flink-job.jar \$FLINK_HOME/usrlib/my-flink-job.jar Use the above Dockerfile to build a user image (\u0026lt;user-image\u0026gt;) and then push it to your remote image repository:
+\$ docker build -t \u0026lt;user-image\u0026gt; . \$ docker push \u0026lt;user-image\u0026gt; **2. Start a Flink Application Cluster** \$ ./bin/flink run-application \\ --detached \\ --parallelism 4 \\ --target kubernetes-application \\ -Dkubernetes.cluster-id=k8s-ha-app-1 \\ -Dkubernetes.container.image=\u0026lt;user-image\u0026gt; \\ -Dkubernetes.jobmanager.cpu=0.5 \\ -Dkubernetes.taskmanager.cpu=0.5 \\ -Dtaskmanager.numberOfTaskSlots=4 \\ -Dkubernetes.rest-service.exposed.type=NodePor [...]
+**4. Kill the JobManager to simulate failure** \$ kubectl exec {jobmanager_pod_name} -- /bin/sh -c \u0026#34;kill 1\u0026#34; **5. Verify that the job recovers from the latest successful checkpoint** Refresh the Flink Web UI until the new JobManager is launched, and then search for the following JobManager logs to verify that the job recovers from the latest successful checkpoint:
2021-02-05 09:44:01,636 INFO org.apache.flink.runtime.checkpoint.CheckpointCoordinator [] - Restoring job 00000000000000000000000000000000 from Checkpoint 101 @ 1612518074802 for 00000000000000000000000000000000 located at \u0026lt;checkpoint-not-externally-addressable\u0026gt;. **6. Cancel the job** The job can be cancelled through the Flink the Web UI, or using the following command:
-$ ./bin/flink cancel --target kubernetes-application -Dkubernetes.cluster-id=\u0026lt;ClusterID\u0026gt; \u0026lt;JobID\u0026gt; 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.
+\$ ./bin/flink cancel --target kubernetes-application -Dkubernetes.cluster-id=\u0026lt;ClusterID\u0026gt; \u0026lt;JobID\u0026gt; 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:107,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:108,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.10.3\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.10.3\u0026lt;/version\u0026gt; \ [...]
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 \u0026quot;SdkMBeanRegistrySupport\u0026quot; from dynamically loaded AWS connectors [FLINK-17341] - freeSlot in TaskExecutor.closeJobManagerConnection cause ConcurrentModificationException [FLIN [...]
+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 \u0026quot;SdkMBeanRegistrySupport\u0026quot; from dynamically loaded AWS connectors [FLINK-17341] - freeSlot in TaskExecutor.closeJobManagerConnection cause ConcurrentModificationException [FLIN [...]
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/ [...]
@@ -1819,12 +1838,12 @@ A late barrier of a canceled checkpoint may lead to buffers being not written in
Updated Maven dependencies:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.12.1\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.12.1\u0026lt;/version\u0026gt; \ [...]
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:
-$ jar -tvf lib/flink-dist_2.12-1.12.0.jar| grep librocksdbjni-linux64 8695334 Wed Nov 27 02:27:06 CET 2019 librocksdbjni-linux64.so At runtime, RocksDB is embedded in the TaskManager processes. It runs in native threads and works with local files. For example, if you have a job configured with RocksDBStateBackend running in your Flink cluster, you’ll see something similar to the following, where 32513 is the TaskManager process ID.
-$ ps -T -p 32513 | grep -i rocksdb 32513 32633 ? 00:00:00 rocksdb:low0 32513 32634 ? 00:00:00 rocksdb:high0 Note The command is for Linux only. For other operating systems, please refer to their documentation. When to use RocksDBStateBackend # In addition to RocksDBStateBackend, Flink has two other built-in state backends: MemoryStateBackend and FsStateBackend. They both are heap-based, as in-flight state is stored in the JVM heap. For the moment being, let’s ignore MemoryStateBackend, a [...]
+\$ jar -tvf lib/flink-dist_2.12-1.12.0.jar| grep librocksdbjni-linux64 8695334 Wed Nov 27 02:27:06 CET 2019 librocksdbjni-linux64.so At runtime, RocksDB is embedded in the TaskManager processes. It runs in native threads and works with local files. For example, if you have a job configured with RocksDBStateBackend running in your Flink cluster, you’ll see something similar to the following, where 32513 is the TaskManager process ID.
+\$ ps -T -p 32513 | grep -i rocksdb 32513 32633 ? 00:00:00 rocksdb:low0 32513 32634 ? 00:00:00 rocksdb:high0 Note The command is for Linux only. For other operating systems, please refer to their documentation. When to use RocksDBStateBackend # In addition to RocksDBStateBackend, Flink has two other built-in state backends: MemoryStateBackend and FsStateBackend. They both are heap-based, as in-flight state is stored in the JVM heap. For the moment being, let’s ignore MemoryStateBackend, [...]
With RocksDBStateBackend, in-flight state is first written into off-heap/native memory, and then flushed to local disks when a configured threshold is reached. This means that RocksDBStateBackend can support state larger than the total configured heap capacity. The amount of state that you can store in RocksDBStateBackend is only limited by the amount of disk space available across the entire cluster. In addition, since RocksDBStateBackend doesn’t use the JVM heap to store in-flight stat [...]
On top of full, self-contained state snapshots, RocksDBStateBackend also supports incremental checkpointing as a performance tuning option. An incremental checkpoint stores only the changes that occurred since the latest completed checkpoint. This dramatically reduces checkpointing time in comparison to performing a full snapshot. RocksDBStateBackend is currently the only state backend that supports incremental checkpointing.
RocksDB is a good option when:
@@ -1840,7 +1859,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:110,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:`{% toc %}
+`}),e.add({id:111,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:`{% toc %}
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.
@@ -1873,7 +1892,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 \u0026ndash; 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 F [...]
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:111,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:112,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.
@@ -1907,12 +1926,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:112,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:113,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\u0026#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:113,href:"/2020/12/18/apache-flink-1.11 [...]
+Improvement [FLINK-20699] - Feedback invocation_id must not be constant. Task [FLINK-20161] - Consider switching from Travis CI to Github Actions for flink-statefun\u0026#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:114,href:"/2020/12/18/apache-flink-1.11 [...]
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.
@@ -1981,7 +2000,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:115,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:116,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 [...]
{% toc %}
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\u0026rsquo;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.
@@ -2022,7 +2041,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:116,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:117,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.
@@ -2030,7 +2049,7 @@ For existing users on versions \u0026lt;= 2.2.0 # Users that are currently using
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\u0026#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 configura [...]
+Bug [FLINK-19515] - Async RequestReply handler concurrency bug [FLINK-19692] - Can\u0026#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 configura [...]
Despite all these great properties, Flink\u0026rsquo;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 \u0026ldquo;unaligned checkpoints\u0026rdquo; 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 [...]
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.
@@ -2059,7 +2078,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\u0026rsquo;d like to thank Marta Paes Moreira and Markos Sfikas for the wonderful review process.
-`}),e.add({id:118,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\u0026rsq [...]
+`}),e.add({id:119,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\u0026rsq [...]
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 [...]
{% toc %}
@@ -2089,7 +2108,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:119,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:120,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\u0026rsquo;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\u0026rsquo;s great seeing these community-driven additions! We\u0026rsquo;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! {% toc %}
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):
@@ -2109,13 +2128,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:120,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:121,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.11.2\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.11.2\u0026lt;/version\u0026gt; \ [...]
List of resolved issues:
-Sub-task [FLINK-16087] - Translate \u0026quot;Detecting Patterns\u0026quot; page of \u0026quot;Streaming Concepts\u0026quot; into Chinese [FLINK-18264] - Translate the \u0026quot;External Resource Framework\u0026quot; page into Chinese [FLINK-18628] - Invalid error message for overloaded methods with same parameter name [FLINK-18801] - Add a \u0026quot;10 minutes to Table API\u0026quot; document under the \u0026quot;Python API\u0026quot; -\u0026gt; \u0026quot;User Guide\u0026quot; -\u002 [...]
+Sub-task [FLINK-16087] - Translate \u0026quot;Detecting Patterns\u0026quot; page of \u0026quot;Streaming Concepts\u0026quot; into Chinese [FLINK-18264] - Translate the \u0026quot;External Resource Framework\u0026quot; page into Chinese [FLINK-18628] - Invalid error message for overloaded methods with same parameter name [FLINK-18801] - Add a \u0026quot;10 minutes to Table API\u0026quot; document under the \u0026quot;Python API\u0026quot; -\u0026gt; \u0026quot;User Guide\u0026quot; -\u002 [...]
{% toc %}
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.
@@ -2155,7 +2174,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:122,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:123,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 [...]
@@ -2171,7 +2190,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:123,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:124,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\u0026rsquo;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.
@@ -2189,7 +2208,7 @@ Let\u0026rsquo;s now submit one of Flink\u0026rsquo;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\u0026rsquo;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:125,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\u0026rsquo;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:126,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\u0026rsquo;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\u0026rsquo;s aggregated view, or this \u0026ldquo;bigger picture\u0026rdquo; we men [...]
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\u0026rsquo;ll use the example of data center monitoring and alert correlation implemented with Stateful Functions.
@@ -2224,7 +2243,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\u0026rsquo;s take a look at what happens when a ServerMetricReport m [...]
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\u0026rsquo;d like to learn more about Stateful Functions, head over to the official documentation, where you can also find more [...]
-`}),e.add({id:126,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:127,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.
@@ -2241,7 +2260,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:127,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:128,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;
@@ -2254,17 +2273,17 @@ The introduction of Pandas UDF is used to address these drawbacks. For Pandas UD
The performance of vectorized UDFs is usually much higher when compared to the normal Python UDF, as the serialization/deserialization overhead is minimized by falling back to Apache Arrow, while handling pandas.Series as input/output allows us to take full advantage of the Pandas and NumPy libraries, making it a popular solution to parallelize Machine Learning and other large-scale, distributed data science workloads (e.g. feature engineering, distributed model application).
Conversion between PyFlink Table and Pandas DataFrame # Pandas DataFrame is the de-facto standard for working with tabular data in the Python community while PyFlink Table is Flink’s representation of the tabular data in Python. Enabling the conversion between PyFlink Table and Pandas DataFrame allows switching between PyFlink and Pandas seamlessly when processing data in Python. Users can process data by utilizing one execution engine and switch to a different one effortlessly. For exam [...]
Examples # Using Python in Apache Flink requires installing PyFlink, which is available on PyPI and can be easily installed using pip. Before installing PyFlink, check the working version of Python running in your system using:
-$ python --version Python 3.7.6 Note Please note that Python 3.5 or higher is required to install and run PyFlink $ python -m pip install apache-flink Using Pandas UDF # Pandas UDFs take pandas.Series as the input and return a pandas.Series of the same length as the output. Pandas UDFs can be used at the exact same place where non-Pandas functions are currently being utilized. To mark a UDF as a Pandas UDF, you only need to add an extra parameter udf_type=\u0026ldquo;pandas\u0026rdquo; i [...]
+\$ python --version Python 3.7.6 Note Please note that Python 3.5 or higher is required to install and run PyFlink \$ python -m pip install apache-flink Using Pandas UDF # Pandas UDFs take pandas.Series as the input and return a pandas.Series of the same length as the output. Pandas UDFs can be used at the exact same place where non-Pandas functions are currently being utilized. To mark a UDF as a Pandas UDF, you only need to add an extra parameter udf_type=\u0026ldquo;pandas\u0026rdquo; [...]
@udf(input_types=[DataTypes.STRING(), DataTypes.FLOAT()], result_type=DataTypes.FLOAT(), udf_type=\u0026#39;pandas\u0026#39;) def interpolate(id, temperature): # takes id: pandas.Series and temperature: pandas.Series as input df = pd.DataFrame({\u0026#39;id\u0026#39;: id, \u0026#39;temperature\u0026#39;: temperature}) # use interpolate() to interpolate the missing temperature interpolated_df = df.groupby(\u0026#39;id\u0026#39;).apply( lambda group: group.interpolate(limit_direction=\u002 [...]
from pyflink.datastream import StreamExecutionEnvironment from pyflink.table import StreamTableEnvironment, DataTypes from pyflink.table.udf import udf import pandas as pd env = StreamExecutionEnvironment.get_execution_environment() env.set_parallelism(1) t_env = StreamTableEnvironment.create(env) t_env.get_config().get_configuration().set_boolean(\u0026#34;python.fn-execution.memory.managed\u0026#34;, True) @udf(input_types=[DataTypes.STRING(), DataTypes.FLOAT()], result_type=DataTypes. [...]
-Firstly, you need to prepare the input data in the \u0026ldquo;/tmp/input\u0026rdquo; file. For example, $ echo -e \u0026#34;1,98.0\\n1,\\n1,100.0\\n2,99.0\u0026#34; \u0026gt; /tmp/input Next, you can run this example on the command line, $ python pandas_udf_demo.py The command builds and runs the Python Table API program in a local mini-cluster. You can also submit the Python Table API program to a remote cluster using different command lines, see more details here.
-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.
+Firstly, you need to prepare the input data in the \u0026ldquo;/tmp/input\u0026rdquo; file. For example, \$ echo -e \u0026#34;1,98.0\\n1,\\n1,100.0\\n2,99.0\u0026#34; \u0026gt; /tmp/input Next, you can run this example on the command line, \$ python pandas_udf_demo.py The command builds and runs the Python Table API program in a local mini-cluster. You can also submit the Python Table API program to a remote cluster using different command lines, see more details here.
+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, [\u0026#34;a\u0026#34;, \u0026#34;b\u0026#34;]).filter(\u0026#34;a \u0026gt; 0.5\u0026#34;) # Convert the PyFlink Table to a Pandas DataFrame [...]
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:128,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:129,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 \u0026ldquo;Window\u0026rdquo; # Low Latency # Let\u0026rsquo;s start with a reminder of the type of fraud detection rule that we would like to support:
-\u0026ldquo;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.\u0026rdquo;
+\u0026ldquo;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.\u0026rdquo;
In other words, given a stream of transactions partitioned by a key that combines the payer and the beneficiary fields, we would like to look back in time and determine, for each incoming transaction, if the sum of all previous payments between the two specific participants exceeds the defined threshold. In effect, the computation window is always moved along to the position of the last observed event for a particular data partitioning key.
Figure 1: Time Windows One of the common key requirements for a fraud detection system is low response time. The sooner the fraudulent action gets detected, the higher the chances that it can be blocked and its negative consequences mitigated. This requirement is especially prominent in the financial domain, where you have one important constraint - any time spent evaluating a fraud detection model is time that a law-abiding user of your system will spend waiting for a response. Swiftnes [...]
*) apart from the session windows, but they are limited to assignments based on the session gaps
@@ -2317,7 +2336,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 \u0026ldquo;pushing\u0026rdquo; the concerns of state fault tolerance to a database, an approach that is often destined to run into sca [...]
-`}),e.add({id:129,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:130,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\u0026rsquo;ve put together a list of some great ones you can (virtually) attend in August!
{% toc %}
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 \u0026ldquo;A Look Into the Evolution of Flink Releases\u0026rdquo;)! 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:
@@ -2349,7 +2368,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:130,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:131,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:
@@ -2390,13 +2409,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:131,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\u0026rsquo;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 manag [...]
+`}),e.add({id:132,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\u0026rsquo;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 manag [...]
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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.11.1\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.11.1\u0026lt;/version\u0026gt; \ [...]
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 \u0026quot;BlackHole SQL Connector\u0026quot; page into Chinese [FLINK-18388] - Translate \u0026quot;CSV Format\u0026quot; page into Chinese [FLINK-18391] - Translate \u0026quot;Avro Format\u0026quot; page into Chinese [FLINK-18395] - Translate \u0026quot;ORC Format\u0026quot; page into Chinese [FLINK-18469] - Ad [...]
+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 \u0026quot;BlackHole SQL Connector\u0026quot; page into Chinese [FLINK-18388] - Translate \u0026quot;CSV Format\u0026quot; page into Chinese [FLINK-18391] - Translate \u0026quot;Avro Format\u0026quot; page into Chinese [FLINK-18395] - Translate \u0026quot;ORC Format\u0026quot; page into Chinese [FLINK-18469] - Ad [...]
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.
@@ -2435,7 +2454,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.\u0026#160;\u0026#x21a9;\u0026#xfe0e;
Support for Kubernetes will come soon.\u0026#160;\u0026#x21a9;\u0026#xfe0e;
-`}),e.add({id:134,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\u0026rsquo;re particularly excited about are:
+`}),e.add({id:135,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\u0026rsquo;re particularly excited about are:
The core engine is introducing unaligned checkpoints, a major change to Flink\u0026rsquo;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.
@@ -2523,7 +2542,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:135,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 \u0026ldquo;Flink on Zeppelin\u0026rdquo; series of posts, I will share how to perform streaming data visualization via Flink on Zeppelin and how to use Apache Fl [...]
+`}),e.add({id:136,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 \u0026ldquo;Flink on Zeppelin\u0026rdquo; series of posts, I will share how to perform streaming data visualization via Flink on Zeppelin and how to use Apache Fl [...]
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.
@@ -2532,14 +2551,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(\u0026#34;scala_upper\u0026#34;, new ScalaUpper()) Python UDF %flink.pyflink class PythonUpper(ScalarFunction): def eval(self, s): return s.upper() bt_env.register_function(\u0026#34;python_upper\u0026#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\u0026rsquo;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:136,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:137,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 \u0026amp; 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:137,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:138,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!
{% toc %}
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 [...]
@@ -2559,7 +2578,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 \u0026amp; 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 appli [...]
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:138,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:139,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!
{% toc %}
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 [...]
@@ -2575,13 +2594,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:139,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:140,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.10.1\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.10.1\u0026lt;/version\u0026gt; \ [...]
List of resolved issues:
-Sub-task [FLINK-14126] - Elasticsearch Xpack Machine Learning doesn\u0026#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 \u0026quot;Best Practices\u0026quot; section from Application Development Section [ [...]
+Sub-task [FLINK-14126] - Elasticsearch Xpack Machine Learning doesn\u0026#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 \u0026quot;Best Practices\u0026quot; section from Application Development Section [ [...]
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!
{% toc %}
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 [...]
@@ -2612,7 +2631,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.
\u0026hellip;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:141,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:142,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\u0026hellip;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!
@@ -2629,13 +2648,13 @@ Table API \u0026amp; SQL Documentation: //nightlies.apache.org/flinkflink-docs-r
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:142,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:143,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.9.3\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.9.3\u0026lt;/version\u0026gt; \u0 [...]
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 \u0026quot;Job leader ... lost leadership\u0026quot; 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-* [...]
+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 \u0026quot;Job leader ... lost leadership\u0026quot; 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-* [...]
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:
@@ -2656,7 +2675,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:144,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:145,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.
{% toc %}
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, [...]
@@ -2703,7 +2722,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\u0026rsquo; 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 Kr [...]
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:145,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:146,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\u0026rsquo;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.
@@ -2711,21 +2730,21 @@ For the local part, the Python API is a mapping of the Java API: each time Pytho
For the cluster part, just like ordinary Java jobs, the JobMaster schedules tasks to TaskManagers. The tasks that include Python UDF in a TaskManager involve the execution of Java and Python operators. In the Python UDF operator, various gRPC services are used to provide different communications between the Java VM and the Python VM, such as DataService for data transmissions, StateService for state requirements, and Logging and Metrics Services. These services are built on Beam\u0026rsq [...]
How to use PyFlink with UDFs in Flink 1.10 # This section provides some Python user defined function (UDF) examples, including how to install PyFlink, how to define/register/invoke UDFs in PyFlink and how to execute the job.
Install PyFlink # Using Python in Apache Flink requires installing PyFlink. PyFlink is available through PyPI and can be easily installed using pip:
-$ python -m pip install apache-flink Note Please note that Python 3.5 or higher is required to install and run PyFlink Define a Python UDF # There are many ways to define a Python scalar function, besides extending the base class ScalarFunction. The following example shows the different ways of defining a Python scalar function that takes two columns of BIGINT as input parameters and returns the sum of them as the result.
+\$ python -m pip install apache-flink Note Please note that Python 3.5 or higher is required to install and run PyFlink Define a Python UDF # There are many ways to define a Python scalar function, besides extending the base class ScalarFunction. The following example shows the different ways of defining a Python scalar function that takes two columns of BIGINT as input parameters and returns the sum of them as the result.
# option 1: extending the base class \`ScalarFunction\` class Add(ScalarFunction): def eval(self, i, j): return i + j add = udf(Add(), [DataTypes.BIGINT(), DataTypes.BIGINT()], DataTypes.BIGINT()) # option 2: Python function @udf(input_types=[DataTypes.BIGINT(), DataTypes.BIGINT()], result_type=DataTypes.BIGINT()) def add(i, j): return i + j # option 3: lambda function add = udf(lambda i, j: i + j, [DataTypes.BIGINT(), DataTypes.BIGINT()], DataTypes.BIGINT()) # option 4: callable functio [...]
from pyflink.datastream import StreamExecutionEnvironment from pyflink.table import StreamTableEnvironment, DataTypes from pyflink.table.descriptors import Schema, OldCsv, FileSystem from pyflink.table.udf import udf env = StreamExecutionEnvironment.get_execution_environment() env.set_parallelism(1) t_env = StreamTableEnvironment.create(env) add = udf(lambda i, j: i + j, [DataTypes.BIGINT(), DataTypes.BIGINT()], DataTypes.BIGINT()) t_env.register_function(\u0026#34;add\u0026#34;, add) t_ [...]
-$ echo \u0026quot;1,2\u0026quot; \u0026gt; /tmp/input
+\$ echo \u0026quot;1,2\u0026quot; \u0026gt; /tmp/input
Next, you can run this example on the command line,
-$ python python_udf_sum.py
+\$ python python_udf_sum.py
The command builds and runs the Python Table API program in a local mini-cluster. You can also submit the Python Table API program to a remote cluster using different command lines, (see more details here).
Finally, you can see the execution result on the command line:
-$ cat /tmp/output 3
+\$ cat /tmp/output 3
Python UDF dependency management # In many cases, you would like to import third-party dependencies in the Python UDF. The example below provides detailed guidance on how to manage such dependencies.
Suppose you want to use the mpmath to perform the sum of the example above. The Python UDF may look like:
@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 \u0026gt; requirements.txt $ pip download -d cached_dir -r requirements.txt --no-binary :all: t_env.set_python_requirements(\u0026#34;/tmp/requirements.txt\u0026#34;, \u0026#34;/tmp/cached_dir\u0026#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 \u0026ldquo; [...]
+\$ cd /tmp \$ echo mpmath==1.1.0 \u0026gt; requirements.txt \$ pip download -d cached_dir -r requirements.txt --no-binary :all: t_env.set_python_requirements(\u0026#34;/tmp/requirements.txt\u0026#34;, \u0026#34;/tmp/cached_dir\u0026#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 \u0026ldq [...]
Conclusion \u0026amp; 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 suppo [...]
-`}),e.add({id:146,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:147,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.
{% toc %}
@@ -2759,7 +2778,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/flinkflink-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:147,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:148,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\u0026rsquo;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!
{% toc %}
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 [...]
@@ -2781,7 +2800,7 @@ Flink \u0026ldquo;Engine Room\u0026rdquo; # The community has recently launched
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\u0026amp;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 \u0026 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: [...]
-`}),e.add({id:148,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:149,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.
{% toc %}
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.
@@ -2813,7 +2832,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:149,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:150,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\u0026rsquo;s first have a look at the previously-defined data-processing pipeline:
DataStream\u0026lt;Alert\u0026gt; alerts = transactions .process(new DynamicKeyFunction()) .keyBy((keyed) -\u0026gt; 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.
@@ -2834,7 +2853,7 @@ public abstract class BroadcastProcessFunction\u0026lt;IN1, IN2, OUT\u0026gt; {
public class DynamicKeyFunction extends BroadcastProcessFunction\u0026lt;Transaction, Rule, Keyed\u0026lt;Transaction, String, Integer\u0026gt;\u0026gt; { @Override public void processBroadcastElement(Rule rule, Context ctx, Collector\u0026lt;Keyed\u0026lt;Transaction, String, Integer\u0026gt;\u0026gt; out) { BroadcastState\u0026lt;Integer, Rule\u0026gt; broadcastState = ctx.getBroadcastState(RULES_STATE_DESCRIPTOR); broadcastState.put(rule.getRuleId(), rule); } @Override public void pro [...]
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 \u0026ldquo;pre-marked\u0026rdquo; 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 t [...]
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:150,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 \u0026ldquo;Beam on Flink: How Does It Actually Work?\u0026rdquo;.
+`}),e.add({id:151,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 \u0026ldquo;Beam on Flink: How Does It Actually Work?\u0026rdquo;.
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\u0026rsquo;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 st [...]
@@ -2864,7 +2883,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\u0026rsquo;s fully-fledged Python API is probably the most compelling argument for using Beam with Flink, but the unified API which allows to \u0026ldquo;write-once\u0026rdquo; and \u0026ldquo;execute-anywhere\u0026rdquo; is also very appealing to Beam users. On top of this, features like [...]
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\u0026rsquo;s all the better for the community, and also users have more options and functionality to choose from.
-`}),e.add({id:151,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\u0026rsquo;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 work [...]
+`}),e.add({id:152,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\u0026rsquo;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 work [...]
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\u0026rsquo;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.
@@ -2877,7 +2896,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\u0026rsquo;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\u0026rsquo;s enormous.\u0026#160;\u0026#x21a9;\u0026#xfe0e;
-`}),e.add({id:152,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:153,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.
{% toc %}
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.
@@ -2930,8 +2949,8 @@ 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:153,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 [...]
-\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-test-utils_\${scala.binary.version}\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;\${flink.version}\u0026lt;/version\u0026gt; \u0026lt;scope\u0026gt;test\u0026lt;/scope\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-runtime_2.11\u [...]
+`}),e.add({id:154,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 [...]
+\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-test-utils_\${scala.binary.version}\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;\`{flink.version}\u0026lt;/version\u0026gt; \u0026lt;scope\u0026gt;test\u0026lt;/scope\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-runtime_2.11\u [...]
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\u0026lt;String, String\u0026gt; { @Override public String map(String in) throws Exception { String out = \u0026#34;hello \u0026#34; + in; return out; } } The test case for the above operator should look like
@Test public void testMap() throws Exception { MyStatelessMap statelessMap = new MyStatelessMap(); String out = statelessMap.map(\u0026#34;world\u0026#34;); Assert.assertEquals(\u0026#34;hello world\u0026#34;, out); } Pretty simple, right? Let’s take a look at one for the FlatMap operator.
@@ -2948,13 +2967,13 @@ public class MyProcessFunction extends KeyedProcessFunction\u0026lt;String, Stri
Let’s take a look at the test case
@Test public void testProcessElement() throws Exception{ MyProcessFunction myProcessFunction = new MyProcessFunction(); OneInputStreamOperatorTestHarness\u0026lt;String, String\u0026gt; testHarness = new KeyedOneInputStreamOperatorTestHarness\u0026lt;\u0026gt;( new KeyedProcessOperator\u0026lt;\u0026gt;(myProcessFunction), x -\u0026gt; \u0026#34;1\u0026#34;, Types.STRING); // Function time is initialized to 0 testHarness.open(); testHarness.processElement(\u0026#34;world\u0026#34;, 10); [...]
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:154,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:155,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.9.2\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.9.2\u0026lt;/version\u0026gt; \u0 [...]
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 \u0026amp; SQL [FLINK-13361] - Add documentation for JDBC connector for Table API \u0026amp; SQL [FLINK-13723] - Use liquid-c for faster doc generation [FLINK-13724] - Remove unnecessary whitespace from the docs\u0026#39; sidenav [FLINK-13725] - Use sassc for faster doc generation [FLINK-13726] - Build docs with jekyll 4.0.0.pre [...]
+Sub-task [FLINK-12122] - Spread out tasks evenly across all available registered TaskManagers [FLINK-13360] - Add documentation for HBase connector for Table API \u0026amp; SQL [FLINK-13361] - Add documentation for JDBC connector for Table API \u0026amp; SQL [FLINK-13723] - Use liquid-c for faster doc generation [FLINK-13724] - Remove unnecessary whitespace from the docs\u0026#39; sidenav [FLINK-13725] - Use sassc for faster doc generation [FLINK-13726] - Build docs with jekyll 4.0.0.pre [...]
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 [...]
@@ -2987,7 +3006,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:156,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:157,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.
@@ -3010,7 +3029,7 @@ Dynamic Data Partitioning # The first pattern we will look into is Dynamic Data
If you have used Flink\u0026rsquo;s DataStream API in the past, you are undoubtedly familiar with the keyBy method. Keying a stream shuffles all the records such that elements with the same key are assigned to the same partition. This means all records with the same key are processed by the same physical instance of the next operator.
In a typical streaming application, the choice of key is fixed, determined by some static field within the elements. For instance, when building a simple window-based aggregation of a stream of transactions, we might always group by the transactions account id.
DataStream\u0026lt;Transaction\u0026gt; input = // [...] DataStream\u0026lt;...\u0026gt; windowed = input .keyBy(Transaction::getAccountId) .window(/*window specification*/); This approach is the main building block for achieving horizontal scalability in a wide range of use cases. However, in the case of an application striving to provide flexibility in business logic at runtime, this is not enough. To understand why this is the case, let us start with articulating a realistic sample ru [...]
-\u0026ldquo;Whenever the sum of the accumulated payment amount from the same payer to the same beneficiary within the duration of a week is greater than 1 000 000 $ - fire an alert.\u0026rdquo;
+\u0026ldquo;Whenever the sum of the accumulated payment amount from the same payer to the same beneficiary within the duration of a week is greater than 1 000 000 \$ - fire an alert.\u0026rdquo;
In this formulation we can spot a number of parameters that we would like to be able to specify in a newly-submitted rule and possibly even later modify or tweak at runtime:
Aggregation field (payment amount) Grouping fields (payer + beneficiary) Aggregation function (sum) Window duration (1 week) Limit (1 000 000) Limit operator (greater) Accordingly, we will use the following simple JSON format to define the aforementioned parameters:
{ \u0026#34;ruleId\u0026#34;: 1, \u0026#34;ruleState\u0026#34;: \u0026#34;ACTIVE\u0026#34;, \u0026#34;groupingKeyNames\u0026#34;: [\u0026#34;payerId\u0026#34;, \u0026#34;beneficiaryId\u0026#34;], \u0026#34;aggregateFieldName\u0026#34;: \u0026#34;paymentAmount\u0026#34;, \u0026#34;aggregatorFunctionType\u0026#34;: \u0026#34;SUM\u0026#34;, \u0026#34;limitOperatorType\u0026#34;: \u0026#34;GREATER\u0026#34;, \u0026#34;limit\u0026#34;: 1000000, \u0026#34;windowMinutes\u0026#34;: 10080 } At th [...]
@@ -3027,13 +3046,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\u0026rsquo;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:157,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:158,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.8.3\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.8.3\u0026lt;/version\u0026gt; \u0 [...]
List of resolved issues:
-Sub-task [FLINK-13723] - Use liquid-c for faster doc generation [FLINK-13724] - Remove unnecessary whitespace from the docs\u0026#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\u0026#39;s main thread [FLINK-13728] - Fix wrong c [...]
+Sub-task [FLINK-13723] - Use liquid-c for faster doc generation [FLINK-13724] - Remove unnecessary whitespace from the docs\u0026#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\u0026#39;s main thread [FLINK-13728] - Fix wrong c [...]
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 \u0026amp; 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\u0026lt;String\u0026gt;builder = PulsarSourceBuilder .builder(new SimpleStringSchema()) .serviceUrl(serviceUrl) .topic(inputTopic) .subsciptionName(subscription); SourceFunction\u0026lt;String\u0026gt; src = builder.build(); // ingest DataStream with Pulsar consumer DataStream\u0026lt;String\u0026gt; words = env.addSource(src); Pulsar streams can then get connected to the Flink processing logic…
@@ -3051,7 +3070,7 @@ Flink \u0026amp; Pulsar: Read data from Pulsar # Create a Pulsar source for stre
Next Steps \u0026amp; 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, ha [...]
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:159,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:160,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
@@ -3059,31 +3078,31 @@ If you’re using a different way to provision Kubernetes, make sure you have at
Install the kubectl CLI tool. The KUDO CLI is a plugin for the Kubernetes CLI. The official instructions for installing and setting up kubectl are here.
Next, let’s install the KUDO CLI. At the time of this writing, the latest KUDO version is v0.10.0. You can find the CLI binaries for download here. Download the kubectl-kudo binary for your OS and architecture.
If you’re using Homebrew on MacOS, you can install the CLI via:
-$ brew tap kudobuilder/tap $ brew install kudo-cli Now, let’s initialize KUDO on our Kubernetes cluster:
-$ kubectl kudo init $KUDO_HOME has been configured at /Users/gerred/.kudo This will create several resources. First, it will create the Custom Resource Definitions, service account, and role bindings necessary for KUDO to operate. It will also create an instance of the KUDO controller so that we can begin creating instances of applications.
+\$ brew tap kudobuilder/tap \$ brew install kudo-cli Now, let’s initialize KUDO on our Kubernetes cluster:
+\$ kubectl kudo init \$KUDO_HOME has been configured at /Users/gerred/.kudo This will create several resources. First, it will create the Custom Resource Definitions, service account, and role bindings necessary for KUDO to operate. It will also create an instance of the KUDO controller so that we can begin creating instances of applications.
The KUDO CLI leverages the kubectl plugin system, which gives you all its functionality under kubectl kudo. This is a convenient way to install and deal with your KUDO Operators. For our demo, we use Kafka and Flink which depend on ZooKeeper. To make the ZooKeeper Operator available on the cluster, run:
-$ kubectl kudo install zookeeper --version=0.3.0 --skip-instance The \u0026ndash;skip-instance flag skips the creation of a ZooKeeper instance. The flink-demo Operator that we’re going to install below will create it as a dependency instead. Now let’s make the Kafka and Flink Operators available the same way:
-$ kubectl kudo install kafka --version=1.2.0 --skip-instance $ kubectl kudo install flink --version=0.2.1 --skip-instance This installs all the Operator versions needed for our demo.
+\$ kubectl kudo install zookeeper --version=0.3.0 --skip-instance The \u0026ndash;skip-instance flag skips the creation of a ZooKeeper instance. The flink-demo Operator that we’re going to install below will create it as a dependency instead. Now let’s make the Kafka and Flink Operators available the same way:
+\$ kubectl kudo install kafka --version=1.2.0 --skip-instance \$ kubectl kudo install flink --version=0.2.1 --skip-instance This installs all the Operator versions needed for our demo.
Financial Fraud Demo # In our financial fraud demo we have two microservices, called “generator” and “actor”. The generator produces transactions with random amounts and writes them into a Kafka topic. Occasionally, the value will be over 10,000 which is considered fraud for the purpose of this demo. The Flink job subscribes to the Kafka topic and detects fraudulent transactions. When it does, it submits them to another Kafka topic which the actor consumes. The actor simply displays each [...]
The KUDO CLI by default installs Operators from the official repository, but it also supports installation from your local filesystem. This is useful if you want to develop your own Operator, or modify this demo for your own purposes.
First, clone the “kudobuilder/operators” repository via:
-$ git clone https://github.com/kudobuilder/operators.git Next, change into the “operators” directory and install the demo-operator from your local filesystem:
-$ cd operators $ kubectl kudo install repository/flink/docs/demo/financial-fraud/demo-operator --instance flink-demo instance.kudo.dev/v1beta1/flink-demo created This time we didn’t include the \u0026ndash;skip-instance flag, so KUDO will actually deploy all the components, including Flink, Kafka, and ZooKeeper. KUDO orchestrates deployments and other lifecycle operations using plans that were defined by the Operator developer. Plans are similar to runbooks and encapsulate all the proced [...]
-$ kubectl kudo plan status --instance flink-demo Plan(s) for \u0026#34;flink-demo\u0026#34; in namespace \u0026#34;default\u0026#34;: . └── flink-demo (Operator-Version: \u0026#34;flink-demo-0.1.4\u0026#34; Active-Plan: \u0026#34;deploy\u0026#34;) └── Plan deploy (serial strategy) [IN_PROGRESS] ├── Phase dependencies [IN_PROGRESS] │ ├── Step zookeeper (COMPLETE) │ └── Step kafka (IN_PROGRESS) ├── Phase flink-cluster [PENDING] │ └── Step flink (PENDING) ├── Phase demo [PENDING] │ ├── Step [...]
-$ kubectl kudo plan status --instance flink-demo-kafka Plan(s) for \u0026#34;flink-demo-kafka\u0026#34; in namespace \u0026#34;default\u0026#34;: . └── flink-demo-kafka (Operator-Version: \u0026#34;kafka-1.2.0\u0026#34; Active-Plan: \u0026#34;deploy\u0026#34;) ├── Plan deploy (serial strategy) [IN_PROGRESS] │ └── Phase deploy-kafka [IN_PROGRESS] │ └── Step deploy (IN_PROGRESS) └── Plan not-allowed (serial strategy) [NOT ACTIVE] └── Phase not-allowed (serial strategy) [NOT ACTIVE] └── Ste [...]
+\$ git clone https://github.com/kudobuilder/operators.git Next, change into the “operators” directory and install the demo-operator from your local filesystem:
+\$ cd operators \$ kubectl kudo install repository/flink/docs/demo/financial-fraud/demo-operator --instance flink-demo instance.kudo.dev/v1beta1/flink-demo created This time we didn’t include the \u0026ndash;skip-instance flag, so KUDO will actually deploy all the components, including Flink, Kafka, and ZooKeeper. KUDO orchestrates deployments and other lifecycle operations using plans that were defined by the Operator developer. Plans are similar to runbooks and encapsulate all the proc [...]
+\$ kubectl kudo plan status --instance flink-demo Plan(s) for \u0026#34;flink-demo\u0026#34; in namespace \u0026#34;default\u0026#34;: . └── flink-demo (Operator-Version: \u0026#34;flink-demo-0.1.4\u0026#34; Active-Plan: \u0026#34;deploy\u0026#34;) └── Plan deploy (serial strategy) [IN_PROGRESS] ├── Phase dependencies [IN_PROGRESS] │ ├── Step zookeeper (COMPLETE) │ └── Step kafka (IN_PROGRESS) ├── Phase flink-cluster [PENDING] │ └── Step flink (PENDING) ├── Phase demo [PENDING] │ ├── Ste [...]
+\$ kubectl kudo plan status --instance flink-demo-kafka Plan(s) for \u0026#34;flink-demo-kafka\u0026#34; in namespace \u0026#34;default\u0026#34;: . └── flink-demo-kafka (Operator-Version: \u0026#34;kafka-1.2.0\u0026#34; Active-Plan: \u0026#34;deploy\u0026#34;) ├── Plan deploy (serial strategy) [IN_PROGRESS] │ └── Phase deploy-kafka [IN_PROGRESS] │ └── Step deploy (IN_PROGRESS) └── Plan not-allowed (serial strategy) [NOT ACTIVE] └── Phase not-allowed (serial strategy) [NOT ACTIVE] └── St [...]
After a while, the state of all plans, phases and steps will change to “COMPLETE”. Now we can view the Flink dashboard to verify that our job is running. To access it from outside the Kubernetes cluster, first start the client proxy, then open the URL below in your browser:
-$ kubectl proxy http://127.0.0.1:8001/api/v1/namespaces/default/services/flink-demo-flink-jobmanager:ui/proxy/#/overview
+\$ kubectl proxy http://127.0.0.1:8001/api/v1/namespaces/default/services/flink-demo-flink-jobmanager:ui/proxy/#/overview
It should look similar to this, depending on your local machine and how many cores you have available:
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=\u0026#34;{.items[0].metadata.name}\u0026#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=\u0026#39;3\u0026#39;, amount=8341} Transaction{timestamp=1563395813000, origin=1, target=\u0026#39;3\u0026#39;, amount=8592} Transaction{timestamp=156 [...]
+\$ kubectl logs \$(kubectl get pod -l actor=flink-demo -o jsonpath=\u0026#34;{.items[0].metadata.name}\u0026#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=\u0026#39;3\u0026#39;, amount=8341} Transaction{timestamp=1563395813000, origin=1, target=\u0026#39;3\u0026#39;, amount=8592} Transaction{timestamp=1 [...]
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:160,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:161,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.9.1\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.9.1\u0026lt;/version\u0026gt; \u0 [...]
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.
@@ -3098,13 +3117,13 @@ The figure shows how the values of Src\u0026rsquo;s operator state are mapped to
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\u0026rsquo;d like to learn how to use the State Processor API in detail.
Why DataSet API? # In case you are familiar with Flink\u0026rsquo;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\u0026rsquo;t want to block this feature on the progress of Flink\u0 [...]
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:162,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:163,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.8.2\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.8.2\u0026lt;/version\u0026gt; \u0 [...]
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] - \u0026#39;Kerberized YARN on Docker test\u0026#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- [...]
+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] - \u0026#39;Kerberized YARN on Docker test\u0026#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- [...]
The first post in the series takes you on an little detour across the year, to freshen up and make sure you\u0026rsquo;re all up to date.
{% toc %}
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\u0026rsquo;s Machine Lear [...]
@@ -3127,7 +3146,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:164,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:165,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\u0026rsquo;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.
@@ -3169,7 +3188,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:165,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:166,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 [...]
{% toc %}
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.
@@ -3227,13 +3246,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:166,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:167,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.8.1\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.8.1\u0026lt;/version\u0026gt; \u0 [...]
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 [...]
@@ -3262,7 +3281,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:168,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:169,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 [...]
{% toc %}
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().
@@ -3300,7 +3319,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:169,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:170,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 [...]
@@ -3329,7 +3348,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:170,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:171,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;
@@ -3344,7 +3363,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\u0026rsquo;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:171,href:"/2019/05/03/when-flink-pulsar-come-together/",title:"When Flink \u0026 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 [...]
+`}),e.add({id:172,href:"/2019/05/03/when-flink-pulsar-come-together/",title:"When Flink \u0026 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 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.
@@ -3360,7 +3379,7 @@ Existing Integrations # Integration between the two frameworks is ongoing and de
// create and configure Pulsar consumer PulsarSourceBuilder\u0026lt;String\u0026gt;builder = PulsarSourceBuilder .builder(new SimpleStringSchema()) .serviceUrl(serviceUrl) .topic(inputTopic) .subscriptionName(subscription); SourceFunction\u0026lt;String\u0026gt; src = builder.build(); // ingest DataStream with Pulsar consumer DataStream\u0026lt;String\u0026gt; words = env.addSource(src); // perform computation on DataStream (here a simple WordCount) DataStream\u0026lt;WordWithCount\u0026 [...]
// obtain a DataStream with words DataStream\u0026lt;String\u0026gt; words = ... // register DataStream as Table \u0026#34;words\u0026#34; with two attributes (\u0026#34;word\u0026#34;, \u0026#34;ts\u0026#34;). // \u0026#34;ts\u0026#34; is an event-time timestamp. tableEnvironment.registerDataStream(\u0026#34;words\u0026#34;, words, \u0026#34;word, ts.rowtime\u0026#34;); // create a TableSink that produces to Pulsar TableSink sink = new PulsarJsonTableSink( serviceUrl, outputTopic, new A [...]
// obtain DataSet from arbitrary computation DataSet\u0026lt;WordWithCount\u0026gt; wc = ... // create PulsarOutputFormat instance OutputFormat pulsarOutputFormat = new PulsarOutputFormat( serviceUrl, topic, new AuthenticationDisabled(), wordWithCount -\u0026gt; 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 [...]
-`}),e.add({id:172,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:173,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 \u0026amp; 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.
@@ -3371,7 +3390,7 @@ Related material:
//nightlies.apache.org/flinkflink-docs-release-1.8/ops //nightlies.apache.org/flinkflink-docs-release-1.8/monitoring Project 3: Improve Documentation for Relational APIs (Table API \u0026amp; 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 [...]
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 \u0026amp; SQL docs main page Built-in functions Concepts Streaming Concepts `}),e.add({id:173,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 c [...]
+Table API \u0026amp; SQL docs main page Built-in functions Concepts Streaming Concepts `}),e.add({id:174,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 c [...]
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.
{% toc %}
@@ -3401,7 +3420,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\u0026rsquo;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 relea [...]
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=\u0026quot;%an\u0026quot; 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:174,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\u0026rsquo;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 [...]
+`}),e.add({id:175,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\u0026rsquo;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 [...]
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\u0026rsquo; flexible and powerful data model – in contrast to hierarchical data structures that one might experience with traditional metrics systems.
@@ -3424,7 +3443,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:175,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:176,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 \u0026ldquo;multidisciplinary\u0026rdquo; 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.
@@ -3438,13 +3457,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\u0026rsquo;t done so yet, check out the full schedule and register your attendance. I\u0026rsquo;m looking forward to meet you at Flink Forward San Francisco.
Fabian
-`}),e.add({id:176,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:177,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.6.4\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.6.4\u0026lt;/version\u0026gt; \u0 [...]
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\u0026#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] - Incorrec [...]
+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\u0026#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] - Incorrec [...]
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.
@@ -3497,13 +3516,13 @@ Metric Scope Description Status.JVM.CPU.Load job-/taskmanager The recent CPU usa
TaskManager \u0026 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 \u0026amp; 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 gu [...]
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:178,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:179,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.7.2\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.7.2\u0026lt;/version\u0026gt; \u0 [...]
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\u0026#39;s Yarn Resourc [...]
+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\u0026#39;s Yarn Resourc [...]
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 \u0026ldquo;continuous processing of unbounded data streams\u0026rdquo;: 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 \u0026ldquo;streaming first, with batch as a special case of streaming\u0026rdquo; 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, \u0026ldquo;batch is just a special case of streaming\u0026rdquo; 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:
@@ -3544,25 +3563,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:180,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:181,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.5.6\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.5.6\u0026lt;/version\u0026gt; \u0 [...]
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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.6.3\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.6.3\u0026lt;/version\u0026gt; \u0 [...]
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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.7.1\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.7.1\u0026lt;/version\u0026gt; \u0 [...]
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.
{% toc %}
@@ -3589,37 +3608,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:184,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:185,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.5.5\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.5.5\u0026lt;/version\u0026gt; \u0 [...]
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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.6.2\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.6.2\u0026lt;/version\u0026gt; \u0 [...]
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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.5.4\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.5.4\u0026lt;/version\u0026gt; \u0 [...]
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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.6.1\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.6.1\u0026lt;/version\u0026gt; \u0 [...]
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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.5.3\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.5.3\u0026lt;/version\u0026gt; \u0 [...]
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.
@@ -3651,19 +3670,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:190,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:191,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.5.2\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.5.2\u0026lt;/version\u0026gt; \u0 [...]
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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.5.1\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.5.1\u0026lt;/version\u0026gt; \u0 [...]
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.
@@ -3691,19 +3710,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:193,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:194,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.3.3\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.10\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.3.3\u0026lt;/version\u0026gt; \u0 [...]
List of resolved issues:
-Sub-task [FLINK-7783] - Don\u0026#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:194,href:"/2018/03/08/apache-flink-1.4.2-released/",title:"Ap [...]
+Sub-task [FLINK-7783] - Don\u0026#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:195,href:"/2018/03/08/apache-flink-1.4.2-released/",title:"Ap [...]
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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.4.2\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.4.2\u0026lt;/version\u0026gt; \u0 [...]
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\u0026rsquo;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\u0026rsquo;d like to learn more, in this post, we\u0026rsquo;ll share an in-depth overview of the new feature and what is happening behind the scenes in Flink.
@@ -3742,13 +3761,13 @@ There are a handful of other edge cases that TwoPhaseCommitSinkFunction takes in
Wrapping Up # If you\u0026rsquo;ve made it this far, thanks for staying with us through a detailed post. Here are some key points that we covered:
Flink\u0026rsquo;s checkpointing system serves as Flink\u0026rsquo;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\u0026ndash;there\u0026rsquo;s no need to write every stage of the computation to disk as is the case is most batch processing. Flink\u0026rsquo;s new TwoPhaseCommitSinkFunction extracts the common logic of the [...]
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:196,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:197,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.4.1\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.11\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.4.1\u0026lt;/version\u0026gt; \u0 [...]
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. \u0026ldquo;Fault tolerance\u0026rdquo; means that even if [...]
Flink\u0026rsquo;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.
@@ -3774,7 +3793,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:198,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:199,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\u0026rsquo;ll look back on the project\u0026rsquo;s progress over the course of 2017, and we\u0026rsquo;ll also preview what 2018 has in store.
{%toc%}
Community Growth # Github # First, here\u0026rsquo;s a summary of community statistics from GitHub. At the time of writing:
@@ -3802,7 +3821,7 @@ Looking ahead to 2018 # A good source of information about the Flink community\u
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\u0026rsquo;d like to extend a sincere thank you to all the Flink community for making 2017 a great year!
-`}),e.add({id:199,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:200,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!
@@ -3848,7 +3867,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\u0026rsquo;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:200,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:201,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.
@@ -3869,7 +3888,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 \u0026ldquo;library style\u0026rdquo;. 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 w [...]
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:201,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:202,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 [...]
@@ -3878,7 +3897,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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.3.2\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.10\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.3.2\u0026lt;/version\u0026gt; \u0 [...]
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 \u0026amp; 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 crea [...]
+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 \u0026amp; 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 crea [...]
An Intro to Stateful Stream Processing # At a high level, we can consider state in stream processing as memory in operators that remembers information about past input and can be used to influence the processing of future input.
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.
@@ -3929,7 +3948,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\u0026rsquo;d like to read the original post in its entirety, you can find it here (external link).
-`}),e.add({id:203,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\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/gr [...]
+`}),e.add({id:204,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\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/gr [...]
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!
@@ -3970,7 +3989,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:205,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:206,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:
@@ -3978,12 +3997,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:206,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:207,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\u0026rsquo;t cope with default parallelism \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.2.1\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0 [...]
-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 \u0026quot;Used\u0026quot; instead of \u0026quot;Initial\u0026quot; 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] - keystoreFilePa [...]
+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 \u0026quot;Used\u0026quot; instead of \u0026quot;Initial\u0026quot; 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] - keystoreFilePa [...]
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\u0026rsquo;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 lev [...]
Why is SQL on Streams a Big Deal? # SQL is the most widely used language for data analytics for many good reasons:
@@ -4025,7 +4044,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\u0026rsquo;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 impl [...]
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:208,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 \u0026 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 [...]
+`}),e.add({id:209,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 \u0026 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 [...]
Flink\u0026rsquo;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 \u0026amp; 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.
@@ -4053,10 +4072,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(\u0026#34;,\u0026#34;) .map { kv =\u0026gt; val split = kv.split(\u0026#34;=\u0026#34;) (split(0), split(1)) } val color = pairs.find(\\_.\\_1 == \u0026#34;color\u0026#34;).map(\\_.\\_2) val size = pairs.find(\\_.\\_1 == \u0026#34;size\u0026#34;).map(\\_.\\_2) // emit a row if color and size are specified (color, size) match { case (Som [...]
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:209,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:210,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.
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.1.5\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.10\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.1.5\u0026lt;/version\u0026gt; \u0 [...]
-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.
@@ -4090,11 +4109,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.
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.1.4\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.10\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.1.4\u0026lt;/version\u0026gt; \u0 [...]
Note for RocksDB Backend Users # We updated Flink\u0026rsquo;s RocksDB dependency version from 4.5.1 to 4.11.2. Between these versions some of RocksDB\u0026rsquo;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(\u0026#34;...\u0026#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 Chec [...]
+RocksDBStateBackend backend = new RocksDBStateBackend(\u0026#34;...\u0026#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 Chec [...]
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\u0026rsquo;s a summary of community statistics from GitHub. At the time of writing:
@@ -4124,19 +4143,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\u0026rsquo;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\u0026rsquo;d like to extend a sincere thank you to all of the Flink community for making 2016 a great year!
-`}),e.add({id:213,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:214,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.
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.1.3\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.10\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.1.3\u0026lt;/version\u0026gt; \u0 [...]
Note for RocksDB Backend Users # It is highly recommended to use the \u0026ldquo;fully async\u0026rdquo; mode for the RocksDB state backend. The \u0026ldquo;fully async\u0026rdquo; mode will most likely allow you to easily upgrade to Flink 1.2 (via savepoints) when it is released. The \u0026ldquo;semi async\u0026rdquo; mode will no longer be supported by Flink 1.2.
-RocksDBStateBackend backend = new RocksDBStateBackend(\u0026#34;...\u0026#34;); backend.enableFullyAsyncSnapshots(); Release Notes - Flink - Version 1.1.3 # Bug [FLINK-2662] - CompilerException: \u0026quot;Bug: Plan generation for Unions picked a ship strategy between binary plan operators.\u0026quot; [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 /tm [...]
+RocksDBStateBackend backend = new RocksDBStateBackend(\u0026#34;...\u0026#34;); backend.enableFullyAsyncSnapshots(); Release Notes - Flink - Version 1.1.3 # Bug [FLINK-2662] - CompilerException: \u0026quot;Bug: Plan generation for Unions picked a ship strategy between binary plan operators.\u0026quot; [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 /tm [...]
We recommend all users to upgrade to Flink 1.1.2.
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.1.2\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.10\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.1.2\u0026lt;/version\u0026gt; \u0 [...]
-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:216,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:217,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.
@@ -4164,11 +4183,11 @@ Metrics # Flink’s new metrics system allows you to easily gather and expose me
Counter counter = getRuntimeContext() .getMetricGroup() .counter(\u0026#34;my-counter\u0026#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:
\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-java\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.1.1\u0026lt;/version\u0026gt; \u0026lt;/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.apache.flink\u0026lt;/groupId\u0026gt; \u0026lt;artifactId\u0026gt;flink-streaming-java_2.10\u0026lt;/artifactId\u0026gt; \u0026lt;version\u0026gt;1.1.1\u0026lt;/version\u0026gt; \u0 [...]
-`}),e.add({id:218,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:219,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 [...]
@@ -4187,14 +4206,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 \u0026#39;1\u0026#39; DAY) AS day, location AS room, AVG((tempF - 32) * 0.556) AS avgTempC FROM sensorData WHERE location LIKE \u0026#39;room%\u0026#39; GROUP BY TUMBLE(time, INTERVAL \u0026#39;1\u0026#39; DAY), location Table API # val avgRoomTemp: Table = tableEnv.ingest(\u0026#34;sensorData\u0026#34;) .where(\u0026#39;location.like(\u0026#34;room%\u0026#34;)) .partitionBy( [...]
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\u0026rsquo;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:219,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:220,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 \u0026lsquo;public\u0026rsquo; [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 [...]
+Fixed Issues # Bug # [FLINK-3657] [dataSet] Change access of DataSetUtils.countElements() to \u0026lsquo;public\u0026rsquo; [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 [...]
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:222,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:223,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.
@@ -4218,9 +4237,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:223,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:224,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\u0026#39;t run on Windows [FLINK-3533] - Update the Gelly docs wrt examples and cluster execution [FLINK-3563] - .returns() doesn\u0026#39;t compile when using .map() with a custom MapFunction [FLINK-3566] - Input [...]
+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\u0026#39;t run on Windows [FLINK-3533] - Update the Gelly docs wrt examples and cluster execution [FLINK-3563] - .returns() doesn\u0026#39;t compile when using .map() with a custom MapFunction [FLINK-3566] - Input [...]
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\u0026rsquo;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!
@@ -4235,9 +4254,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\u0026rsquo;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.
@@ -4260,7 +4279,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:227,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:228,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 (\u0026ldquo;exactly once\u0026rdquo;), 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.
@@ -4277,7 +4296,7 @@ Outlook # The Storm compatibility package is currently in beta and undergoes con
Summary # Flink\u0026rsquo;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\u0026rsquo;s Storm compatibility package checkout our Documentation.
1. We confess, there are three lines changed compared to a Storm project \u0026mdash;because the example covers local and remote execution. ↩
-`}),e.add({id:228,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:229,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\u0026rsquo;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.
@@ -4304,9 +4323,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\u0026rsquo;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:229,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:230,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\u0026#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 Cance [...]
+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\u0026#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 Cance [...]
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 [...]
@@ -4321,7 +4340,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\u0026rsquo;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 [...]
@@ -4382,7 +4401,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:232,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:233,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\u0026hellip;) on data streaming, Google Cloud Dataflow, and Apache Flink.
@@ -4390,11 +4409,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:233,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:234,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 \u0026ldquo;Buffer recycled\u0026rdquo; 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 [...]
+FLINK-1916 EOFException when running delta-iteration job FLINK-2089 \u0026ldquo;Buffer recycled\u0026rdquo; 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 [...]
Gelly allows Flink users to perform end-to-end data analysis in a single system. Gelly can be seamlessly used with Flink\u0026rsquo;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 [...]
@@ -4455,7 +4474,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:235,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:236,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.
@@ -4532,14 +4551,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:236,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:237,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\u0026rsquo;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\u0026rsquo;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\u0026rsquo;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:237,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:238,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 [...]
@@ -4567,7 +4586,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:238,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:239,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(\u0026#39;user).select(\u0026#39;userId, \u0026#39;url.count as \u0026#39;count) val activeUsers = users.join(clickCounts) .where(\u0026#39;id === \u0026#39;userId \u0026amp;\u0026amp; \u0026#39;count \u0026gt; 10).select(\u0026#39;username, \u0026#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 ab [...]
@@ -4606,7 +4625,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:239,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:240,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\u0026rsquo;s runtime.
@@ -4614,13 +4633,13 @@ Meetups and talks # Flink\u0026rsquo;s machine learning efforts were presented a
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\u0026rsquo;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:240,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:241,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].
Joining two Scala case class data sets is very easy as the following example shows:
// define your data types case class PageVisit(url: String, ip: String, userId: Long) case class User(id: Long, name: String, email: String, country: String) // get your data from somewhere val visits: DataSet[PageVisit] = ... val users: DataSet[User] = ... // filter the users data set val germanUsers = users.filter((u) =\u0026gt; u.country.equals(\u0026#34;de\u0026#34;)) // join data sets val germanVisits: DataSet[(PageVisit, User)] = // equi-join condition (PageVisit.userId = User.id) [...]
-apply a user-defined join function to each pair of joined elements instead returning a ($Left, $Right) tuple, select fields of pairs of joined Tuple elements (projection), and define composite join keys such as .where(“orderDate”, “zipCode”).equalTo(“date”, “zip”). See the documentation for more details on Flink’s join features [3].
+apply a user-defined join function to each pair of joined elements instead returning a (\$Left, \$Right) tuple, select fields of pairs of joined Tuple elements (projection), and define composite join keys such as .where(“orderDate”, “zipCode”).equalTo(“date”, “zip”). See the documentation for more details on Flink’s join features [3].
How does Flink join my data? # Flink uses techniques which are well known from parallel database systems to efficiently execute parallel joins. A join operator must establish all pairs of elements from its input data sets for which the join condition evaluates to true. In a standalone system, the most straight-forward implementation of a join is the so-called nested-loop join which builds the full Cartesian product and evaluates the join condition for each pair of elements. This strategy [...]
In a distributed system joins are commonly processed in two steps:
The data of both inputs is distributed across all parallel instances that participate in the join and each parallel instance performs a standard stand-alone join algorithm on its local partition of the overall data. The distribution of data across parallel instances must ensure that each valid join pair can be locally built by exactly one instance. For both steps, there are multiple valid strategies that can be independently picked and which are favorable in different situations. In Flin [...]
@@ -4645,7 +4664,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.
@@ -4661,7 +4680,7 @@ Graph\u0026lt;Long, Double, Double\u0026gt; graph = Graph.fromDataSet(vertices,
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(\u0026#39;id, \u0026#39;mktSegment) .filter( \u0026#39;mktSegment === \u0026#34;AUTOMOBILE\u0026#34; ) val orders = getOrdersDataSet(env) .filter( o =\u0026gt; dateFormat.parse(o.orderDate).before(date) ) .as(\u0026#39;orderId, \u0026#39;custId, \u0026#39;orderDate, \u0026#39;shipPrio) val items = orders.join(customers) .where(\u0026#39;custId === \u0026#39;id) .select(\u0026#39;orderId, \u0026#39;orderDate, \u0026#39;shipPrio) Access to HCatal [...]
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:242,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:243,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.
@@ -4685,7 +4704,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:243,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:244,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.
@@ -4696,7 +4715,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:244,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:245,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
@@ -4707,7 +4726,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!
@@ -4721,7 +4740,7 @@ Sorting of very large records # Flink\u0026rsquo;s internal sort-algorithms were
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:246,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:247,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).
@@ -4731,7 +4750,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:247,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:248,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.
@@ -4743,7 +4762,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.
@@ -4767,10 +4786,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:249,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:250,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:250,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:251,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\u0026rsquo;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.
@@ -4780,7 +4799,7 @@ Data pipelining/streaming: Flink\u0026rsquo;s runtime is designed as a pipelined
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:251,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:252,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 * \u0026#34;License\u0026#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 r [...]
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
@@ -4829,7 +4848,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\u0026rsquo;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\u0026rsquo;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.\u0026#160;\u0026#x21a9;\u0026#xfe0e;
-`}),e.add({id:252,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 \u0026amp; 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:253,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 \u0026amp; 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.
@@ -4853,7 +4872,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:253,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:254,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:
@@ -4861,7 +4880,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).
@@ -4875,7 +4894,7 @@ map.computeIfAbsent(key, x -\u0026gt; key.toLowerCase()) do:
map.computeIfAbsent(key, k -\u0026gt; k.toLowerCase()); Consider method references instead of inline lambdas
don’t:
map.computeIfAbsent(key, k-\u0026gt; Loader.load(k)); do:
-map.computeIfAbsent(key, Loader::load); Java Streams # Avoid Java Streams in any performance critical code. The main motivation to use Java Streams would be to improve code readability. As such, they can be a good match in parts of the code that are not data-intensive, but deal with coordination.. Even in the latter case, try to limit the scope to a method, or a few private methods within an internal class. `}),e.add({id:255,href:"/how-to-contribute/code-style-and-quality-pull-requests/" [...]
+map.computeIfAbsent(key, Loader::load); Java Streams # Avoid Java Streams in any performance critical code. The main motivation to use Java Streams would be to improve code readability. As such, they can be a good match in parts of the code that are not data-intensive, but deal with coordination.. Even in the latter case, try to limit the scope to a method, or a few private methods within an internal class. `}),e.add({id:256,href:"/how-to-contribute/code-style-and-quality-pull-requests/" [...]
Reviews are much faster and thus contributions get merged sooner. We can ensure higher code quality by overlooking fewer issues in the contributions. Committers can review more contributions in the same time, which helps to keep up with the high rate of contributions that Flink is experiencing Please understand that contributions that do not follow this guide will take longer to review and thus will typically be picked up with lower priority by the community. That is not ill intend, it i [...]
1. JIRA issue and Naming # Make sure that the pull request corresponds to a JIRA issue.
Exceptions are hotfixes, like fixing typos in JavaDocs or documentation files.
@@ -4896,7 +4915,7 @@ https://github.com/apache/flink/pull/6692 (splits cleanup and refactoring from m
In some cases, the issue might be a subtask here, and the component may be different from the Pull Request’s main component. For example, when the commit introduces an end-to-end test for a runtime change, the PR would be tagged as [runtime], but the individual commit would be tagged as [e2e].
Examples for commit messages:
[hotfix] Fix update_branch_version.sh to allow version suffixes [hotfix] [table] Remove unused geometry dependency [FLINK-11704][tests] Improve AbstractCheckpointStateOutputStreamTestBase [FLINK-10569][runtime] Remove Instance usage in ExecutionVertexCancelTest [FLINK-11702][table-planner-blink] Introduce a new table type system 5. Changes to the observable behavior of the system # Contributors should be aware of changes in their PRs that break the observable behavior of Flink in any way [...]
-Assertions have been changed to make tests pass again with the breaking change. Configuration setting that must suddenly be set to (non-default) values to keep existing tests passing. This can happen in particular for new settings with a breaking default. Existing scripts or configurations have to be adjusted. `}),e.add({id:256,href:"/how-to-contribute/code-style-and-quality-scala/",title:"Code Style and Quality Guide — Scala",section:"How to Contribute",content:` Code Style and Quality [...]
+Assertions have been changed to make tests pass again with the breaking change. Configuration setting that must suddenly be set to (non-default) values to keep existing tests passing. This can happen in particular for new settings with a breaking default. Existing scripts or configurations have to be adjusted. `}),e.add({id:257,href:"/how-to-contribute/code-style-and-quality-scala/",title:"Code Style and Quality Guide — Scala",section:"How to Contribute",content:` Code Style and Quality [...]
We do not use Scala in the core APIs and runtime components. We aim to remove existing Scala use (code and dependencies) from those components.
⇒ This is not because we do not like Scala, it is a consequence of “the right tool for the right job” approach (see below).
For APIs, we develop the foundation in Java, and layer Scala on top.
@@ -4909,7 +4928,7 @@ Don’t:
var expressions = new java.util.ArrayList[String]() Do:
var expressions: java.util.List[String] = new java.util.ArrayList[]() Type inference for local variables on the stack is fine.
Use strict visibility. Avoid Scala’s package private features (such as private[flink]) and use regular private/protected instead. Keep in mind that private[flink] and protected members are public in Java. Keep in mind that private[flink] still exposes all members in Flink provided examples. Coding Formatting # Use line wrapping to structure your code.
-Scala’s functional nature allows for long transformation chains (x.map().map().foreach()). In order to force implementers to structure their code, the line length is therefore limited to 100 characters. Use one line per transformation for better maintainability. `}),e.add({id:257,href:"/material/",title:"Material",section:"Apache Flink® — Stateful Computations over Data Streams",content:` Material # Apache Flink Logos # We provide the Apache Flink logo in different sizes and formats. You [...]
+Scala’s functional nature allows for long transformation chains (x.map().map().foreach()). In order to force implementers to structure their code, the line length is therefore limited to 100 characters. Use one line per transformation for better maintainability. `}),e.add({id:258,href:"/material/",title:"Material",section:"Apache Flink® — Stateful Computations over Data Streams",content:` Material # Apache Flink Logos # We provide the Apache Flink logo in different sizes and formats. You [...]
Portable Network Graphics (PNG) # Colored logo White filled logo Black outline logo Sizes (px) 50x50, 100x100, 200x200, 500x500, 1000x1000 Sizes (px): 50x50, 100x100, 200x200, 500x500, 1000x1000
Sizes (px): 50x50, 100x100, 200x200, 500x500, 1000x1000 You can find more variants of the logo in this directory or download all variants (7.4 MB).
Scalable Vector Graphics (SVG) # Colored logo White filled logo Black outline logo Colored logo with black text (color_black.svg) White filled logo (white_filled.svg) Black outline logo (black_outline.svg) You can find more variants of the logo in this directory or download all variants (7.4 MB).
diff --git a/content/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js b/content/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js
similarity index 84%
rename from content/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js
rename to content/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js
index 35800b9c2..2fc5a13b2 100644
--- a/content/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js
+++ b/content/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js
@@ -1 +1 @@
-"use strict";(function(){const e=document.querySelector("#book-search-input"),t=document.querySelector("#book-search-results");if(!e)return;e.addEventListener("focus",n),e.addEventListener("keyup",s),document.addEventListener("keypress",i);function i(t){if(e===document.activeElement)return;const n=String.fromCharCode(t.charCode);if(!a(n))return;e.focus(),t.preventDefault()}function a(t){const n=e.getAttribute("data-hotkeys")||"";return n.indexOf(t)>=0}function n(){e.removeEventListener(" [...]
\ No newline at end of file
+"use strict";(function(){const e=document.querySelector("#book-search-input"),t=document.querySelector("#book-search-results");if(!e)return;e.addEventListener("focus",n),e.addEventListener("keyup",s),document.addEventListener("keypress",i);function i(t){if(e===document.activeElement)return;const n=String.fromCharCode(t.charCode);if(!a(n))return;e.focus(),t.preventDefault()}function a(t){const n=e.getAttribute("data-hotkeys")||"";return n.indexOf(t)>=0}function n(){e.removeEventListener(" [...]
\ No newline at end of file
diff --git a/content/en/sitemap.xml b/content/en/sitemap.xml
index 985fa4e5c..c6fdccd52 100644
--- a/content/en/sitemap.xml
+++ b/content/en/sitemap.xml
@@ -363,7 +363,7 @@
/>
</url><url>
<loc>https://flink.apache.org/posts/</loc>
- <lastmod>2023-01-30T16:00:00+00:00</lastmod>
+ <lastmod>2023-02-27T08:00:00+00:00</lastmod>
</url><url>
<loc>https://flink.apache.org/flink-packages/</loc>
<xhtml:link
@@ -509,11 +509,11 @@
href="https://flink.apache.org/how-to-contribute/improve-website/"
/>
</url><url>
- <loc>https://flink.apache.org/2023/01/30/apache-flink-1.16.1-release-announcement/</loc>
- <lastmod>2023-01-30T16:00:00+00:00</lastmod>
+ <loc>https://flink.apache.org/2023/02/27/apache-flink-kubernetes-operator-1.4.0-release-announcement/</loc>
+ <lastmod>2023-02-27T08:00:00+00:00</lastmod>
</url><url>
<loc>https://flink.apache.org/</loc>
- <lastmod>2023-01-30T16:00:00+00:00</lastmod>
+ <lastmod>2023-02-27T08:00:00+00:00</lastmod>
<xhtml:link
rel="alternate"
hreflang="zh"
@@ -524,6 +524,9 @@
hreflang="en"
href="https://flink.apache.org/"
/>
+ </url><url>
+ <loc>https://flink.apache.org/2023/01/30/apache-flink-1.16.1-release-announcement/</loc>
+ <lastmod>2023-01-30T16:00:00+00:00</lastmod>
</url><url>
<loc>https://flink.apache.org/2023/01/20/delegation-token-framework-obtain-distribute-and-use-temporary-credentials-automatically/</loc>
<lastmod>2023-01-20T08:00:00+00:00</lastmod>
diff --git a/content/flink-packages/index.html b/content/flink-packages/index.html
index 67ec79670..0ba257bc1 100644
--- a/content/flink-packages/index.html
+++ b/content/flink-packages/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="What is the Flink Kubernetes Operator? # All information on the flink-packages can be found on the flink-packages website.">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/flink-packages/" /><meta property="article:section" content="" />
+
<title>flink-packages.org | 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/flink-packages/" title="flink-packages.org">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/getting-help/index.html b/content/getting-help/index.html
index 7c8cf78d0..88fb3681c 100644
--- a/content/getting-help/index.html
+++ b/content/getting-help/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Getting Help # Having a Question? # The Apache Flink community answers many user questions every day. You can search for answers and advice in the archives or reach out to the community for help and guidance.
@@ -17,13 +17,14 @@ Before posting to the mailing list, you can search the mailing list archives for
<meta property="og:url" content="https://flink.apache.org/getting-help/" /><meta property="article:section" content="" />
+
<title>Getting Help | 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/getting-help/" title="获取帮助">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/getting-started/index.html b/content/getting-started/index.html
index 2444af341..87211c6ee 100644
--- a/content/getting-started/index.html
+++ b/content/getting-started/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Documentation # ">
@@ -11,13 +11,14 @@
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://flink.apache.org/getting-started/" />
+
<title>Getting Started | 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/getting-started/" title="教程">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<link rel="alternate" type="application/rss+xml" href="https://flink.apache.org/getting-started/index.xml" title="Apache Flink" />
<!--
Made with Book Theme
diff --git a/content/getting-started/training-course/index.html b/content/getting-started/training-course/index.html
index d9801fb99..b5d9dfb76 100644
--- a/content/getting-started/training-course/index.html
+++ b/content/getting-started/training-course/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Training Course # Read all about the Flink Training Course here. ">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/getting-started/training-course/" /><meta property="article:section" content="getting-started" />
+
<title>Training Course | 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/getting-started/training-course/" title="Training Course">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/getting-started/with-flink-kubernetes-operator/index.html b/content/getting-started/with-flink-kubernetes-operator/index.html
index 06761f7b5..dedd8f629 100644
--- a/content/getting-started/with-flink-kubernetes-operator/index.html
+++ b/content/getting-started/with-flink-kubernetes-operator/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Getting Started with Flink Kubernetes Operator # Read how you can get started with Flink Kubernetes Operator here. ">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/getting-started/with-flink-kubernetes-operator/" /><meta property="article:section" content="getting-started" />
+
<title>With Flink Kubernetes Operator | 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/getting-started/with-flink-kubernetes-operator/" title="With Flink Kubernetes Operator">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/getting-started/with-flink-ml/index.html b/content/getting-started/with-flink-ml/index.html
index 9abbc081e..c262b8945 100644
--- a/content/getting-started/with-flink-ml/index.html
+++ b/content/getting-started/with-flink-ml/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Getting Started with Flink ML # Read how you can get started with Flink ML here. ">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/getting-started/with-flink-ml/" /><meta property="article:section" content="getting-started" />
+
<title>With Flink ML | 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/getting-started/with-flink-ml/" title="With Flink ML">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/getting-started/with-flink-stateful-functions/index.html b/content/getting-started/with-flink-stateful-functions/index.html
index 0c7564858..d1cf7b55b 100644
--- a/content/getting-started/with-flink-stateful-functions/index.html
+++ b/content/getting-started/with-flink-stateful-functions/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Getting Started with Flink Stateful Functions # Read how you can get started with Flink Stateful Functions here. ">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/getting-started/with-flink-stateful-functions/" /><meta property="article:section" content="getting-started" />
+
<title>With Flink Stateful Functions | 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/getting-started/with-flink-stateful-functions/" title="With Flink Stateful Functions">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/getting-started/with-flink-table-store/index.html b/content/getting-started/with-flink-table-store/index.html
index 81f14e9ee..e41d152da 100644
--- a/content/getting-started/with-flink-table-store/index.html
+++ b/content/getting-started/with-flink-table-store/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Getting Started with Flink Table Store # Read how you can get started with Flink Table Store here. ">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/getting-started/with-flink-table-store/" /><meta property="article:section" content="getting-started" />
+
<title>With Flink Table Store | 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/getting-started/with-flink-table-store/" title="With Flink Table Store">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/getting-started/with-flink/index.html b/content/getting-started/with-flink/index.html
index 789fb5368..51ff45200 100644
--- a/content/getting-started/with-flink/index.html
+++ b/content/getting-started/with-flink/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" Getting Started with Flink # Read how you can get started with Flink here. ">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/getting-started/with-flink/" /><meta property="article:section" content="getting-started" />
+
<title>With Flink | 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/getting-started/with-flink/" title="With Flink">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/how-to-contribute/code-style-and-quality-common/index.html b/content/how-to-contribute/code-style-and-quality-common/index.html
index c7a877b2e..48b48bf8b 100644
--- a/content/how-to-contribute/code-style-and-quality-common/index.html
+++ b/content/how-to-contribute/code-style-and-quality-common/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Code Style and Quality Guide — Common Rules # Preamble # Pull Requests & Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # 1. Copyright # Each file must include the Apache license information as a header.
@@ -15,13 +15,14 @@
<meta property="og:url" content="https://flink.apache.org/how-to-contribute/code-style-and-quality-common/" /><meta property="article:section" content="how-to-contribute" />
+
<title>Code Style and Quality Guide — Common Rules | 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/how-to-contribute/code-style-and-quality-common/" title="Code Style and Quality Guide — Common Rules">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
@@ -1266,14 +1267,14 @@ Examples are in the RPC system, Network Stack, in the Task’s mailbox model, or
<p>Unless there is a specific reason, make sure you use JUnit 5 and AssertJ when contributing to Flink with new tests and even when modifying existing tests. Don’t use Hamcrest, JUnit assertions and <code>assert</code> directive.
Make your tests readable and don’t duplicate assertions logic provided by AssertJ or by <a href="https://assertj.github.io/doc/#assertj-core-custom-assertions">custom assertions</a> provided by some flink modules.
For example, avoid:</p>
-<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="k">assert</span> <span class="n">list</span><span class="o">.</span><span class="na">size</span><span class="o">()</span> <span class="o">==</span> <span class="mi">10</span><span class="o">;</span>
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="k">assert</span> <span class="n">list</span><span class="o">.</span><span class="na">size</span><span class="o">()</span> <span class="o">==</span> <span class="n">10</span><span class="o">;</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="o">(</span><span class="n">String</span> <span class="n">item</span> <span class="o">:</span> <span class="n">list</span><span class="o">)</span> <span class="o">{</span>
-</span></span><span class="line"><span class="cl"> <span class="n">assertTrue</span><span class="o">(</span><span class="n">item</span><span class="o">.</span><span class="na">length</span><span class="o">()</span> <span class="o"><</span> <span class="mi">10</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl"> <span class="n">assertTrue</span><span class="o">(</span><span class="n">item</span><span class="o">.</span><span class="na">length</span><span class="o">()</span> <span class="o"><</span> <span class="n">10</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span></code></pre></div><p>And instead use:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">assertThat</span><span class="o">(</span><span class="n">list</span><span class="o">)</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">hasSize</span><span class="o">(</span><span class="mi">10</span><span class="o">)</span>
-</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">allMatch</span><span class="o">(</span><span class="n">item</span> <span class="o">-></span> <span class="n">item</span><span class="o">.</span><span class="na">length</span><span class="o">()</span> <span class="o"><</span> <span class="mi">10</span><span class="o">);</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">hasSize</span><span class="o">(</span><span class="n">10</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="na">allMatch</span><span class="o">(</span><span class="n">item</span> <span class="o">-></span> <span class="n">item</span><span class="o">.</span><span class="na">length</span><span class="o">()</span> <span class="o"><</span> <span class="n">10</span><span class="o">);</span>
</span></span></code></pre></div><h3 id="write-targeted-tests">
Write targeted tests
<a class="anchor" href="#write-targeted-tests">#</a>
diff --git a/content/how-to-contribute/code-style-and-quality-components/index.html b/content/how-to-contribute/code-style-and-quality-components/index.html
index 0290cbae2..4d85330c1 100644
--- a/content/how-to-contribute/code-style-and-quality-components/index.html
+++ b/content/how-to-contribute/code-style-and-quality-components/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Code Style and Quality Guide — Components Guide # Preamble # Pull Requests & Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # Component Specific Guidelines # Additional guidelines about changes in specific components.
@@ -17,13 +17,14 @@ Configuration Changes # Where should the config option go?
<meta property="og:url" content="https://flink.apache.org/how-to-contribute/code-style-and-quality-components/" /><meta property="article:section" content="how-to-contribute" />
+
<title>Code Style and Quality Guide — Components Guide | 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/how-to-contribute/code-style-and-quality-components/" title="Apache Flink 代码样式和质量指南 — 组件">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/how-to-contribute/code-style-and-quality-formatting/index.html b/content/how-to-contribute/code-style-and-quality-formatting/index.html
index 752b88124..2599f45cb 100644
--- a/content/how-to-contribute/code-style-and-quality-formatting/index.html
+++ b/content/how-to-contribute/code-style-and-quality-formatting/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Code Style and Quality Guide — Formatting Guide # Preamble # Pull Requests & Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # Java Code Formatting Style # We recommend to set up the IDE to automatically check the code style. Please follow the IDE Setup Guide to set up spotless and checkstyle .
@@ -15,13 +15,14 @@ License # Apache license headers." />
<meta property="og:url" content="https://flink.apache.org/how-to-contribute/code-style-and-quality-formatting/" /><meta property="article:section" content="how-to-contribute" />
+
<title>Code Style and Quality Guide — Formatting Guide | 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/how-to-contribute/code-style-and-quality-formatting/" title="Code Style and Quality Guide — Formatting Guide">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/how-to-contribute/code-style-and-quality-java/index.html b/content/how-to-contribute/code-style-and-quality-java/index.html
index 025cc1ab3..9f866ca5b 100644
--- a/content/how-to-contribute/code-style-and-quality-java/index.html
+++ b/content/how-to-contribute/code-style-and-quality-java/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Code Style and Quality Guide — Java # Preamble # Pull Requests & Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # Java Language Features and Libraries # Preconditions and Log Statements # Never concatenate strings in the parameters Don’t: Preconditions.checkState(value <= threshold, "value must be below " + threshold) Don’t: LOG.debug("value is " + value) [...]
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/how-to-contribute/code-style-and-quality-java/" /><meta property="article:section" content="how-to-contribute" />
+
<title>Code Style and Quality Guide — Java | 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/how-to-contribute/code-style-and-quality-java/" title="Code Style and Quality Guide — Java">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/how-to-contribute/code-style-and-quality-preamble/index.html b/content/how-to-contribute/code-style-and-quality-preamble/index.html
index a406b7f59..83b808500 100644
--- a/content/how-to-contribute/code-style-and-quality-preamble/index.html
+++ b/content/how-to-contribute/code-style-and-quality-preamble/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Apache Flink Code Style and Quality Guide # Preamble # Pull Requests & Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # This is an attempt to capture the code and quality standard that we want to maintain.
@@ -15,13 +15,14 @@ A code contribution (or any piece of code) can be evaluated in various ways: One
<meta property="og:url" content="https://flink.apache.org/how-to-contribute/code-style-and-quality-preamble/" /><meta property="article:section" content="how-to-contribute" />
+
<title>Code Style and Quality Guide | 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/how-to-contribute/code-style-and-quality-preamble/" title="代码样式与质量指南">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/how-to-contribute/code-style-and-quality-pull-requests/index.html b/content/how-to-contribute/code-style-and-quality-pull-requests/index.html
index a24902d46..2a5a918e4 100644
--- a/content/how-to-contribute/code-style-and-quality-pull-requests/index.html
+++ b/content/how-to-contribute/code-style-and-quality-pull-requests/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Code Style and Quality Guide — Pull Requests & Changes # Preamble # Pull Requests & Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # Rationale: We ask contributors to put in a little bit of extra effort to bring pull requests into a state that they can be more easily and more thoroughly reviewed. This helps the community in many ways:">
@@ -13,13 +13,14 @@
<meta property="og:url" content="https://flink.apache.org/how-to-contribute/code-style-and-quality-pull-requests/" /><meta property="article:section" content="how-to-contribute" />
+
<title>Code Style and Quality Guide — Pull Requests & Changes | 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/how-to-contribute/code-style-and-quality-pull-requests/" title="Code Style and Quality Guide — Pull Requests & Changes">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/how-to-contribute/code-style-and-quality-scala/index.html b/content/how-to-contribute/code-style-and-quality-scala/index.html
index 5546d7b01..775c9cb36 100644
--- a/content/how-to-contribute/code-style-and-quality-scala/index.html
+++ b/content/how-to-contribute/code-style-and-quality-scala/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Code Style and Quality Guide — Scala # Preamble # Pull Requests & Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # Scala Language Features # Where to use (and not use) Scala # We use Scala for Scala APIs or pure Scala Libraries.
@@ -15,13 +15,14 @@ We do not use Scala in the core APIs and runtime components. We aim to remove ex
<meta property="og:url" content="https://flink.apache.org/how-to-contribute/code-style-and-quality-scala/" /><meta property="article:section" content="how-to-contribute" />
+
<title>Code Style and Quality Guide — Scala | 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/how-to-contribute/code-style-and-quality-scala/" title="Code Style and Quality Guide — Scala">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/how-to-contribute/contribute-code/index.html b/content/how-to-contribute/contribute-code/index.html
index 6c56bf17f..b491b5550 100644
--- a/content/how-to-contribute/contribute-code/index.html
+++ b/content/how-to-contribute/contribute-code/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Contributing Code # Apache Flink is maintained, improved, and extended by code contributions of volunteers. We welcome contributions to Flink, but due to the size of the project and to preserve the high quality of the code base, we follow a contribution process that is explained in this document.
@@ -15,13 +15,14 @@ Please feel free to ask questions at any time. Either send a mail to the Dev mai
<meta property="og:url" content="https://flink.apache.org/how-to-contribute/contribute-code/" /><meta property="article:section" content="how-to-contribute" />
+
<title>Contribute Code | 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/how-to-contribute/contribute-code/" title="贡献代码">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/how-to-contribute/contribute-documentation/index.html b/content/how-to-contribute/contribute-documentation/index.html
index c059cf96a..6d4d3b705 100644
--- a/content/how-to-contribute/contribute-documentation/index.html
+++ b/content/how-to-contribute/contribute-documentation/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Contribute Documentation # Good documentation is crucial for any kind of software. This is especially true for sophisticated software systems such as distributed data processing engines like Apache Flink. The Apache Flink community aims to provide concise, precise, and complete documentation and welcomes any contribution to improve Apache Flink’s documentation.
@@ -15,13 +15,14 @@ Obtain the documentation sources # Apache Flink’s documentation is maintai
<meta property="og:url" content="https://flink.apache.org/how-to-contribute/contribute-documentation/" /><meta property="article:section" content="how-to-contribute" />
+
<title>Contribute Documentation | 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/how-to-contribute/contribute-documentation/" title="贡献文档">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/how-to-contribute/documentation-style-guide/index.html b/content/how-to-contribute/documentation-style-guide/index.html
index 10df0b44d..ccd3e0cf4 100644
--- a/content/how-to-contribute/documentation-style-guide/index.html
+++ b/content/how-to-contribute/documentation-style-guide/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Documentation Style Guide # This guide provides an overview of the essential style guidelines for writing and contributing to the Flink documentation. It’s meant to support your contribution journey in the greater community effort to improve and extend existing documentation — and help make it more accessible, consistent and inclusive.
@@ -15,13 +15,14 @@ Language # The Flink documentation is maintained in US English and Chinese — w
<meta property="og:url" content="https://flink.apache.org/how-to-contribute/documentation-style-guide/" /><meta property="article:section" content="how-to-contribute" />
+
<title>Documentation Style Guide | 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/how-to-contribute/documentation-style-guide/" title="文档样式指南">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/how-to-contribute/improve-website/index.html b/content/how-to-contribute/improve-website/index.html
index c00407f4f..e9cee528c 100644
--- a/content/how-to-contribute/improve-website/index.html
+++ b/content/how-to-contribute/improve-website/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Improving the Website # The Apache Flink website presents Apache Flink and its community. It serves several purposes including:
@@ -17,13 +17,14 @@ Obtain the website sources # The website of Apache Flink is hosted in a dedicate
<meta property="og:url" content="https://flink.apache.org/how-to-contribute/improve-website/" /><meta property="article:section" content="how-to-contribute" />
+
<title>Contribute to the Website | 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/how-to-contribute/improve-website/" title="贡献网站">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/how-to-contribute/index.html b/content/how-to-contribute/index.html
index 778a46a6b..972c8e00d 100644
--- a/content/how-to-contribute/index.html
+++ b/content/how-to-contribute/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=" How to contribute # ">
@@ -11,13 +11,14 @@
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://flink.apache.org/how-to-contribute/" />
+
<title>How to Contribute | 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/how-to-contribute/" title="How to Contribute">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<link rel="alternate" type="application/rss+xml" href="https://flink.apache.org/how-to-contribute/index.xml" title="Apache Flink" />
<!--
Made with Book Theme
diff --git a/content/how-to-contribute/overview/index.html b/content/how-to-contribute/overview/index.html
index 6f1e49676..64007fe31 100644
--- a/content/how-to-contribute/overview/index.html
+++ b/content/how-to-contribute/overview/index.html
@@ -3,7 +3,7 @@
<html lang="en" dir=>
<head>
- <meta name="generator" content="Hugo 0.109.0">
+ <meta name="generator" content="Hugo 0.101.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="How To Contribute # Apache Flink is developed by an open and friendly community. Everybody is cordially welcome to join the community and contribute to Apache Flink. There are several ways to interact with the community and to contribute to Flink including asking questions, filing bug reports, proposing new features, joining discussions on the mailing lists, contributing code or documentation, improving the website, or testing release candidates.
@@ -15,13 +15,14 @@ What do you want to do?" />
<meta property="og:url" content="https://flink.apache.org/how-to-contribute/overview/" /><meta property="article:section" content="how-to-contribute" />
+
<title>Overview | 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/how-to-contribute/overview/" title="如何参与贡献">
<link rel="stylesheet" href="/book.min.e3b33391dbc1f4b2cc47778e2f4b86c744ded3ccc82fdfb6f08caf91d8607f9a.css" integrity="sha256-47MzkdvB9LLMR3eOL0uGx0Te08zIL9+28Iyvkdhgf5o=">
-<script defer src="/en.search.min.abb59f09baa258bd68885c94c6f3e4eeffc8294cb4c814f8f2a652f87b057413.js" integrity="sha256-q7WfCbqiWL1oiFyUxvPk7v/IKUy0yBT48qZS+HsFdBM="></script>
+<script defer src="/en.search.min.ce03c33bd8410b8d80618bd3969e04b62f68131d5db04c74d0178466b6b7ab92.js" integrity="sha256-zgPDO9hBC42AYYvTlp4Eti9oEx1dsEx00BeEZra3q5I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
diff --git a/content/how-to-contribute/reviewing-prs/index.html b/content/how-to-contribute/reviewing-prs/index.html
index b3e09d41b..652955dbc 100644
--- a/content/how-to-contribute/reviewing-prs/index.html
+++ b/content/how-to-contribute/reviewing-prs/index.html
... 4547 lines suppressed ...