You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by af...@apache.org on 2025/02/19 13:00:40 UTC
(flink-web) branch asf-site updated (366fb5bfd -> 40b54ffd7)
This is an automated email from the ASF dual-hosted git repository.
afedulov pushed a change to branch asf-site
in repository https://gitbox.apache.org/repos/asf/flink-web.git
from 366fb5bfd Rebuild site
new 030c6a2bb Add Flink 1.20.1 release
new 40b54ffd7 Rebuild site
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 | 707 +++
.../09/26/apache-flink-0.6.1-available/index.html | 632 +++
content/2014/10/03/upcoming-events/index.html | 733 +++
.../11/04/apache-flink-0.7.0-available/index.html | 695 +++
.../11/18/hadoop-compatibility-in-flink/index.html | 707 +++
.../index.html | 720 +++
.../01/21/apache-flink-0.8.0-available/index.html | 720 +++
.../january-2015-in-the-flink-community/index.html | 705 +++
.../02/09/introducing-flink-streaming/index.html | 1216 +++++
.../index.html | 765 +++
.../index.html | 798 +++
.../march-2015-in-the-flink-community/index.html | 714 +++
.../index.html | 887 ++++
.../05/11/juggling-with-bits-and-bytes/index.html | 799 +++
.../april-2015-in-the-flink-community/index.html | 682 +++
.../06/24/announcing-apache-flink-0.9.0/index.html | 869 +++
.../index.html | 1052 ++++
.../09/01/apache-flink-0.9.1-available/index.html | 679 +++
.../09/03/announcing-flink-forward-2015/index.html | 664 +++
.../index.html | 1465 +++++
.../16/announcing-apache-flink-0.10.0/index.html | 824 +++
.../2015/11/27/flink-0.10.1-released/index.html | 686 +++
.../index.html | 755 +++
.../index.html | 759 +++
.../index.html | 824 +++
.../2016/02/11/flink-0.10.2-released/index.html | 665 +++
.../03/08/announcing-apache-flink-1.0.0/index.html | 763 +++
content/2016/04/06/flink-1.0.1-released/index.html | 697 +++
.../index.html | 792 +++
.../index.html | 629 +++
content/2016/04/22/flink-1.0.2-released/index.html | 687 +++
content/2016/05/11/flink-1.0.3-released/index.html | 684 +++
.../index.html | 749 +++
.../08/04/announcing-apache-flink-1.1.0/index.html | 852 +++
content/2016/08/04/flink-1.1.1-released/index.html | 647 +++
.../index.html | 632 +++
.../09/05/apache-flink-1.1.2-released/index.html | 689 +++
.../10/12/apache-flink-1.1.3-released/index.html | 732 +++
.../apache-flink-in-2016-year-in-review/index.html | 796 +++
.../12/21/apache-flink-1.1.4-released/index.html | 862 +++
.../02/06/announcing-apache-flink-1.2.0/index.html | 883 +++
.../03/23/apache-flink-1.1.5-released/index.html | 709 +++
.../index.html | 778 +++
.../index.html | 787 +++
.../04/26/apache-flink-1.2.1-released/index.html | 827 +++
.../index.html | 638 +++
.../index.html | 807 +++
.../06/23/apache-flink-1.3.1-released/index.html | 761 +++
.../index.html | 760 +++
.../08/05/apache-flink-1.3.2-released/index.html | 819 +++
.../index.html | 766 +++
.../index.html | 866 +++
.../apache-flink-in-2017-year-in-review/index.html | 747 +++
.../index.html | 717 +++
.../02/15/apache-flink-1.4.1-released/index.html | 789 +++
.../index.html | 751 +++
.../03/08/apache-flink-1.4.2-released/index.html | 705 +++
.../03/15/apache-flink-1.3.3-released/index.html | 675 +++
.../index.html | 757 +++
.../07/12/apache-flink-1.5.1-released/index.html | 821 +++
.../07/31/apache-flink-1.5.2-released/index.html | 755 +++
.../index.html | 844 +++
.../08/21/apache-flink-1.5.3-released/index.html | 727 +++
.../09/20/apache-flink-1.5.4-released/index.html | 708 +++
.../09/20/apache-flink-1.6.1-released/index.html | 792 +++
.../10/29/apache-flink-1.5.5-released/index.html | 723 +++
.../10/29/apache-flink-1.6.2-released/index.html | 749 +++
.../index.html | 738 +++
.../12/21/apache-flink-1.7.1-released/index.html | 719 +++
.../12/22/apache-flink-1.6.3-released/index.html | 836 +++
.../12/26/apache-flink-1.5.6-released/index.html | 763 +++
.../index.html | 785 +++
.../02/15/apache-flink-1.7.2-released/index.html | 765 +++
.../index.html | 1191 +++++
.../02/25/apache-flink-1.6.4-released/index.html | 713 +++
.../index.html | 664 +++
.../index.html | 745 +++
.../index.html | 893 ++++
.../index.html | 690 +++
content/2019/05/03/pulsar-flink.html | 10 +
.../03/when-flink-pulsar-come-together/index.html | 772 +++
.../index.html | 728 +++
content/2019/05/14/temporal-tables.html | 10 +
.../index.html | 764 +++
content/2019/05/19/state-ttl.html | 10 +
.../index.html | 952 ++++
content/2019/06/05/flink-network-stack.html | 10 +
.../index.html | 805 +++
content/2019/06/26/broadcast-state.html | 10 +
.../07/02/apache-flink-1.8.1-released/index.html | 764 +++
content/2019/07/23/flink-network-stack-2.html | 10 +
.../index.html | 955 ++++
.../index.html | 976 ++++
.../flink-community-update-september19/index.html | 802 +++
.../09/11/apache-flink-1.8.2-released/index.html | 712 +++
.../index.html | 689 +++
.../10/18/apache-flink-1.9.1-released/index.html | 844 +++
.../index.html | 728 +++
.../index.html | 814 +++
.../12/11/apache-flink-1.8.3-released/index.html | 758 +++
.../index.html | 807 +++
.../index.html | 847 +++
.../01/30/apache-flink-1.9.2-released/index.html | 904 ++++
.../index.html | 838 +++
.../index.html | 830 +++
.../index.html | 750 +++
.../index.html | 798 +++
.../index.html | 802 +++
.../index.html | 744 +++
.../30/flink-community-update-april20/index.html | 783 +++
.../index.html | 846 +++
.../index.html | 797 +++
content/2020/04/09/pyflink-udf-support-flink.html | 10 +
.../index.html | 895 ++++
.../index.html | 722 +++
.../04/24/apache-flink-1.9.3-released/index.html | 750 +++
.../index.html | 710 +++
.../05/06/flink-community-update-may20/index.html | 847 +++
.../05/12/apache-flink-1.10.1-released/index.html | 694 ++-
.../index.html | 712 +++
.../06/10/flink-community-update-june20/index.html | 752 +++
.../index.html | 715 +++
.../index.html | 748 +++
.../index.html | 922 ++++
.../index.html | 918 ++++
.../07/21/apache-flink-1.11.1-released/index.html | 766 +++
content/2020/07/23/catalogs.html | 10 +
.../index.html | 826 +++
.../index.html | 877 +++
...ql-demo-building-e2e-streaming-application.html | 10 +
.../07/29/flink-community-update-july20/index.html | 855 +++
.../index.html | 1272 +++++
.../08/04/pyflink-pandas-udf-support-flink.html | 10 +
.../index.html | 836 +++
.../index.html | 756 +++
.../index.html | 828 +++
content/2020/08/19/statefun.html | 10 +
.../08/20/the-state-of-flink-on-docker/index.html | 708 +++
.../08/25/apache-flink-1.10.2-released/index.html | 826 +++
.../flink-1.11-memory-management-improvements.html | 10 +
.../index.html | 736 +++
.../04/flink-community-update-august20/index.html | 871 +++
.../09/17/apache-flink-1.11.2-released/index.html | 866 +++
.../index.html | 820 +++
.../index.html | 832 +++
.../index.html | 752 +++
...om-aligned-to-unaligned-checkpoints-part-1.html | 10 +
.../index.html | 691 +++
.../index.html | 929 ++++
.../index.html | 950 ++++
content/2020/12/15/pipelined-region-sheduling.html | 10 +
.../12/18/apache-flink-1.11.3-released/index.html | 689 ++-
.../index.html | 658 +++
content/2021/01/07/pulsar-flink-connector-270.html | 10 +
.../index.html | 815 +++
.../index.html | 731 +++
content/2021/01/18/rocksdb.html | 10 +
.../index.html | 756 +++
.../01/19/apache-flink-1.12.1-released/index.html | 835 +++
.../01/29/apache-flink-1.10.3-released/index.html | 740 +++
.../index.html | 755 +++
content/2021/02/10/native-k8s-with-ha.html | 10 +
.../03/03/apache-flink-1.12.2-released/index.html | 845 +++
.../index.html | 831 +++
content/2021/03/11/batch-execution-mode.html | 10 +
.../index.html | 824 +++
.../04/29/apache-flink-1.12.3-released/index.html | 812 +++
.../index.html | 1191 +++++
content/2021/05/06/reactive-mode.html | 10 +
.../index.html | 756 +++
.../05/21/apache-flink-1.12.4-released/index.html | 706 +++
.../05/28/apache-flink-1.13.1-released/index.html | 775 +++
content/2021/07/07/backpressure.html | 10 +
.../index.html | 819 +++
.../08/06/apache-flink-1.12.5-released/index.html | 816 +++
.../08/06/apache-flink-1.13.2-released/index.html | 691 ++-
.../08/09/apache-flink-1.11.4-released/index.html | 825 +++
.../index.html | 660 +++
.../index.html | 850 +++
.../2021/09/07/connector-table-sql-api-part1.html | 10 +
.../2021/09/07/connector-table-sql-api-part2.html | 10 +
.../index.html | 832 +++
.../index.html | 1075 ++++
.../index.html | 988 ++++
.../10/19/apache-flink-1.13.3-released/index.html | 703 +++
.../index.html | 843 +++
.../index.html | 792 +++
content/2021/10/26/sort-shuffle-part1.html | 10 +
content/2021/10/26/sort-shuffle-part2.html | 10 +
.../index.html | 711 +++
content/2021/11/03/flink-backward.html | 10 +
.../index.html | 646 +++
content/2021/12/10/log4j-cve.html | 10 +
.../index.html | 658 +++
.../index.html | 640 +++
.../index.html | 698 +++
.../index.html | 767 +++
.../2022/01/04/scheduler-performance-part-one.html | 10 +
.../2022/01/04/scheduler-performance-part-two.html | 10 +
.../index.html | 896 ++++
.../index.html | 716 ++-
content/2022/01/20/pravega-connector-101.html | 10 +
.../01/20/pravega-flink-connector-101/index.html | 855 +++
.../index.html | 742 +++
.../index.html | 836 +++
.../02/22/scala-free-in-one-fifteen/index.html | 721 +++
content/2022/02/22/scala-free.html | 10 +
.../index.html | 805 +++
.../the-generic-asynchronous-base-sink/index.html | 782 +++
.../index.html | 745 +++
.../index.html | 1069 ++++
content/2022/05/06/async-sink-base.html | 10 +
.../index.html | 1087 ++++
.../index.html | 911 ++++
content/2022/05/06/pyflink-1.15-thread-mode.html | 10 +
content/2022/05/06/restore-modes.html | 10 +
.../index.html | 734 +++
.../index.html | 738 +++
content/2022/05/18/latency-part1.html | 10 +
.../index.html | 728 +++
content/2022/05/23/latency-part2.html | 10 +
content/2022/05/30/changelog-state-backend.html | 10 +
.../index.html | 1031 ++++
.../index.html | 783 +++
.../index.html | 853 +++
content/2022/06/17/adaptive-batch-scheduler.html | 10 +
.../index.html | 823 +++
.../index.html | 826 +++
content/2022/07/11/final-checkpoint-part1.html | 10 +
content/2022/07/11/final-checkpoint-part2.html | 10 +
.../index.html | 789 +++
.../index.html | 862 +++
.../index.html | 795 +++
.../index.html | 767 +++
.../index.html | 778 +++
.../index.html | 829 +++
.../08/regarding-akkas-licensing-change/index.html | 690 +++
.../index.html | 743 +++
.../index.html | 703 +++
.../index.html | 694 +++
.../index.html | 1125 ++++
.../index.html | 815 +++
.../11/25/async-sink-rate-limiting-strategy.html | 10 +
.../index.html | 816 +++
.../index.html | 705 +++
.../index.html | 691 +++
.../index.html | 855 +++
.../index.html | 736 +++
.../index.html | 869 +++
.../index.html | 733 +++
.../index.html | 778 +++
.../index.html | 1112 ++++
.../index.html | 745 +++
.../index.html | 916 ++++
.../index.html | 820 +++
.../index.html | 851 +++
.../index.html | 743 +++
.../index.html | 850 +++
.../index.html | 832 +++
.../index.html | 639 +++
.../index.html | 741 +++
.../index.html | 714 +++
.../index.html | 694 +++
.../index.html | 1292 +++++
.../index.html | 687 +++
.../index.html | 732 +++
.../index.html | 777 +++
.../index.html | 835 +++
.../index.html | 765 +++
.../index.html | 1185 +++++
.../index.html | 814 +++
.../index.html | 720 +++
.../index.html | 765 +++
.../index.html | 690 +++
.../index.html | 732 +++
.../index.html | 1253 +++++
.../index.html | 804 +++
.../preview-release-of-apache-flink-2.0/index.html | 2747 ++++++++++
.../index.html | 716 +++
.../index.html | 845 +++
.../index.html | 716 +++
.../index.html | 858 +++
.../index.html | 748 +++
.../index.html | 835 +++
.../index.html | 839 +++
content/404.html | 62 +
...345edd6f215a40474022dfee39b63befb5fb3c596b5.css | 1 +
.../bootstrap/css/bootstrap.min.css | 0
.../bootstrap/js/bootstrap.bundle.min.js | 0
content/categories/index.html | 606 +++
content/categories/index.xml | 11 +
content/categories/page/1/index.html | 10 +
content/community.html | 10 +
content/community/index.html | 10 +
content/documentation/flink-cdc-master/index.html | 645 +++
content/documentation/flink-cdc-stable/index.html | 645 +++
.../flink-kubernetes-operator-master/index.html | 645 +++
.../flink-kubernetes-operator-stable/index.html | 645 +++
content/documentation/flink-master/index.html | 645 +++
content/documentation/flink-preview/index.html | 645 +++
content/documentation/flink-stable/index.html | 645 +++
.../flink-stateful-functions-master/index.html | 645 +++
.../flink-stateful-functions-stable/index.html | 645 +++
content/documentation/flinkml-master/index.html | 645 +++
content/documentation/flinkml-stable/index.html | 645 +++
content/documentation/index.html | 626 +++
content/documentation/index.xml | 88 +
content/downloads/index.html | 1546 ++++++
.../apache-beam-how-beam-runs-on-top-of-flink.html | 10 +
.../2020/06/23/flink-on-zeppelin-part2.html | 10 +
...23af6cb949dbb89a952523e3286c74d59f87b513314a.js | 5601 ++++++++++++++++++++
...1bbba3f4b7195e00d999fc077279ac6672e2d7adbab6.js | 1 +
content/en/index.html | 10 +
content/en/sitemap.xml | 1392 +++++
{docs/static => content}/favicon.png | Bin
content/favicon.svg | 1 +
.../feature/2019/09/13/state-processor-api.html | 10 +
.../2017/07/04/flink-rescalable-state.html | 10 +
.../2018/01/30/incremental-checkpointing.html | 10 +
.../01/end-to-end-exactly-once-apache-flink.html | 10 +
.../features/2019/03/11/prometheus-monitoring.html | 10 +
.../2020/03/27/flink-for-data-warehouse.html | 10 +
{docs/static => content}/fig/LICENSE.txt | 0
content/flexsearch.min.js | 42 +
{docs/static => content}/flink-header-logo.svg | 0
content/flink-packages/index.html | 641 +++
.../font-awesome/css/font-awesome.css | 0
.../font-awesome/css/font-awesome.min.css | 0
.../font-awesome/fonts/FontAwesome.otf | Bin
.../font-awesome/fonts/fontawesome-webfont.eot | Bin
.../font-awesome/fonts/fontawesome-webfont.svg | 0
.../font-awesome/fonts/fontawesome-webfont.ttf | Bin
.../font-awesome/fonts/fontawesome-webfont.woff | Bin
.../font-awesome/fonts/fontawesome-webfont.woff2 | Bin
.../glyphicons-halflings-regular.eot | Bin
.../glyphicons-halflings-regular.svg | 0
.../glyphicons-halflings-regular.ttf | Bin
.../glyphicons-halflings-regular.woff | Bin
.../glyphicons-halflings-regular.woff2 | Bin
content/fonts/roboto-mono-v6-latin-regular.woff | Bin 0 -> 19972 bytes
content/fonts/roboto-mono-v6-latin-regular.woff2 | Bin 0 -> 16328 bytes
content/fonts/roboto-v19-latin-300italic.woff | Bin 0 -> 22204 bytes
content/fonts/roboto-v19-latin-300italic.woff2 | Bin 0 -> 17448 bytes
content/fonts/roboto-v19-latin-700.woff | Bin 0 -> 20356 bytes
content/fonts/roboto-v19-latin-700.woff2 | Bin 0 -> 15816 bytes
content/fonts/roboto-v19-latin-regular.woff | Bin 0 -> 20268 bytes
content/fonts/roboto-v19-latin-regular.woff2 | Bin 0 -> 15736 bytes
.../generated/rest_v1_dispatcher.yml | 0
content/getting-help.html | 10 +
content/getting-help/index.html | 10 +
content/getting-started/index.html | 626 +++
content/getting-started/index.xml | 53 +
content/getting-started/training-course/index.html | 645 +++
content/getting-started/with-flink-cdc/index.html | 645 +++
.../with-flink-kubernetes-operator/index.html | 645 +++
content/getting-started/with-flink-ml/index.html | 645 +++
.../with-flink-stateful-functions/index.html | 645 +++
content/getting-started/with-flink/index.html | 645 +++
.../code-style-and-quality-common/index.html | 1051 ++++
.../code-style-and-quality-components/index.html | 810 +++
.../code-style-and-quality-formatting/index.html | 816 +++
.../code-style-and-quality-java/index.html | 807 +++
.../code-style-and-quality-preamble/index.html | 675 +++
.../index.html | 735 +++
.../code-style-and-quality-scala/index.html | 745 +++
.../how-to-contribute/contribute-code/index.html | 855 +++
.../contribute-documentation/index.html | 683 +++
.../documentation-style-guide/index.html | 1168 ++++
content/how-to-contribute/getting-help/index.html | 813 +++
.../how-to-contribute/improve-website/index.html | 718 +++
content/how-to-contribute/index.html | 626 +++
content/how-to-contribute/index.xml | 109 +
content/how-to-contribute/overview/index.html | 747 +++
content/how-to-contribute/reviewing-prs/index.html | 710 +++
{docs/static => content}/img/alibaba-logo.png | Bin
{docs/static => content}/img/api-stack.png | Bin
.../static => content}/img/assets/WhatIsFlink.png | Bin
{docs/static => content}/img/assets/grep.png | Bin
{docs/static => content}/img/assets/hadoop-img.png | Bin
.../img/assets/optimizer-visual.png | Bin
{docs/static => content}/img/assets/pagerank.pdf | Bin
{docs/static => content}/img/assets/pagerank.png | Bin
.../2019-02-21-monitoring-best-practices/fig-1.png | Bin
.../2019-02-21-monitoring-best-practices/fig-2.png | Bin
.../2019-02-21-monitoring-best-practices/fig-3.png | Bin
.../2019-02-21-monitoring-best-practices/fig-4.png | Bin
.../2019-02-21-monitoring-best-practices/fig-5.png | Bin
.../2019-02-21-monitoring-best-practices/fig-6.png | Bin
.../2019-02-21-monitoring-best-practices/fig-7.png | Bin
.../2019-02-21-monitoring-best-practices/fig-8.png | Bin
.../prometheus.png | Bin
.../prometheusalerts.png | Bin
.../prometheusexamplejob.png | Bin
.../2019-05-13-temporal-tables/TemporalTables1.png | Bin
.../2019-05-13-temporal-tables/TemporalTables2.png | Bin
.../2019-05-13-temporal-tables/TemporalTables3.png | Bin
.../2019-05-13-temporal-tables/TemporalTables4.png | Bin
.../flink-network-stack1.png | Bin
.../flink-network-stack2.png | Bin
.../flink-network-stack3.png | Bin
.../flink-network-stack4.png | Bin
.../flink-network-stack5.png | Bin
.../flink-network-stack6.png | Bin
.../flink-network-stack7.png | Bin
.../flink-network-stack8.png | Bin
.../flink-network-stack9.png | Bin
.../back_pressure_sampling_high.png | Bin
.../2019-09-05-flink-community-update_1.png | Bin
.../2019-09-05-flink-community-update_2.png | Bin
.../2019-09-05-flink-community-update_3.png | Bin
.../application-my-app-state-processor-api.png | Bin
.../database-my-app-state-processor-api.png | Bin
.../flink-dashboard-ui.png | Bin
.../flink-kudo-architecture.png | Bin
.../architecture.png | Bin
.../2019-11-19-demo-fraud-detection/end-to-end.png | Bin
.../shuffle_function_1.png | Bin
.../blog/2019-11-19-demo-fraud-detection/ui.png | Bin
...state-in-flink-state-processor-api-visual-1.png | Bin
...state-in-flink-state-processor-api-visual-2.png | Bin
.../managing-state-in-flink-visual-1.png | Bin
.../managing-state-in-flink-visual-2.png | Bin
.../flink_1.10_nativek8s.png | Bin
.../flink_1.10_pyflink.gif | Bin
.../flink_1.10_zeppelin.png | Bin
.../classic-flink-runner-beam.png | Bin
.../flink-runner-beam-beam-vision.png | Bin
...nner-beam-language-portability-architecture.png | Bin
.../flink-runner-beam-language-portability.png | Bin
.../flink-runner-beam-runner-translation-paths.png | Bin
.../flink-runner-beam-serializers-coders.png | Bin
.../2020-03-30-flink-community-update_1.png | Bin
.../2020-03-30-flink-community-update_2.png | Bin
.../2020-03-30-flink-community-update_3.png | Bin
.../2020-04-07-release-statefun-2.0.0/image10.png | Bin
.../2020-04-07-release-statefun-2.0.0/image11.png | Bin
.../2020-04-07-release-statefun-2.0.0/image2.png | Bin
.../2020-04-07-release-statefun-2.0.0/image3.png | Bin
.../2020-04-07-release-statefun-2.0.0/image5.png | Bin
.../2020-04-07-release-statefun-2.0.0/image6.png | Bin
.../2020-04-07-release-statefun-2.0.0/image7.png | Bin
.../2020-04-07-release-statefun-2.0.0/image8.png | Bin
.../2020-04-07-release-statefun-2.0.0/image9.png | Bin
.../pyflink-udf-architecture.png | Bin
.../2020-04-09-pyflink-udfs/roadmap-of-pyflink.png | Bin
...-15-flink-serialization-performance-results.svg | 0
.../flink-memory-setup.svg | 0
.../total-process-memory.svg | 0
.../2020-04-30-season-of-docs_1.png | Bin
.../2020-05-06-community-update_1.png | Bin
.../2020-05-06-community-update_2.png | Bin
.../FlinkForward_Banner_CFP_Global_2020.png | Bin
.../2020-06-15-flink-on-zeppelin/create_sink.png | Bin
.../2020-06-15-flink-on-zeppelin/create_source.png | Bin
.../img/blog/2020-06-15-flink-on-zeppelin/etl.png | Bin
.../blog/2020-06-15-flink-on-zeppelin/preview.png | Bin
.../flink_append_mode.gif | Bin
.../flink_python_udf.png | Bin
.../flink_scala_udf.png | Bin
.../flink_single_mode.gif | Bin
.../flink_update_mode.gif | Bin
.../img/blog/2020-07-06-release-1.11.0/image1.gif | Bin
.../img/blog/2020-07-06-release-1.11.0/image2.png | Bin
.../img/blog/2020-07-06-release-1.11.0/image3.png | Bin
.../img/blog/2020-07-06-release-1.11.0/image4.png | Bin
.../2020-07-14-application-mode/application.png | Bin
.../session-per-job.png | Bin
.../img/blog/2020-07-28-flink-sql-demo/image1.gif | Bin
.../img/blog/2020-07-28-flink-sql-demo/image3.png | Bin
.../img/blog/2020-07-28-flink-sql-demo/image4.jpg | Bin
.../img/blog/2020-07-28-flink-sql-demo/image5.jpg | Bin
.../img/blog/2020-07-28-flink-sql-demo/image6.jpg | Bin
.../img/blog/2020-07-28-flink-sql-demo/image7.jpg | Bin
.../img/blog/2020-07-28-flink-sql-demo/image8.jpg | Bin
.../2020-07-29_releases.png | Bin
.../mission-of-pyFlink.gif | Bin
.../python-scientific-stack.png | Bin
.../2020-08-04-pyflink-pandas/vm-communication.png | Bin
.../ai-workflow.png | Bin
.../img/blog/2020-08-18-statefun/1.png | Bin
.../img/blog/2020-08-18-statefun/2.png | Bin
.../img/blog/2020-08-18-statefun/3_1.png | Bin
.../img/blog/2020-08-18-statefun/3_2.png | Bin
.../img/blog/2020-08-18-statefun/5.png | Bin
.../img/blog/2020-08-18-statefun/6.png | Bin
.../img/blog/2020-08-18-statefun/7.png | Bin
.../img/blog/2020-08-18-statefun/rack.png | Bin
.../total-process-memory-flink-1.11.png | Bin
.../2020-09-04-community-update_1.png | Bin
.../abstract-deployment.png | Bin
.../aws-deployment.png | Bin
.../protocol-walkthrough-1.png | Bin
.../request-reply-protocol.png | Bin
.../shopping-cart-overview.png | Bin
...m-aligned-to-unaligned-checkpoints-part-1-1.png | Bin
...m-aligned-to-unaligned-checkpoints-part-1-2.png | Bin
...m-aligned-to-unaligned-checkpoints-part-1-3.png | Bin
...m-aligned-to-unaligned-checkpoints-part-1-4.png | Bin
...m-aligned-to-unaligned-checkpoints-part-1-5.png | Bin
.../batch-job-example.png | Bin
.../pipelined-regions.png | Bin
.../sql-join-job-example.png | Bin
.../streaming-job-example.png | Bin
.../img/blog/2020-12-08-release-1.12.0/1.png | Bin
.../img/blog/2020-12-08-release-1.12.0/2.png | Bin
.../pulsar-flink-batch-stream.png | Bin
.../2021-01-07-pulsar-flink/pulsar-key-shared.png | Bin
.../blog/2021-01-18-rocksdb/RocksDB-in-Flink.png | Bin
.../native-k8s-architecture.png | Bin
.../native-k8s-ha-architecture.png | Bin
.../batch-execution.png | Bin
.../stream-execution.png | Bin
.../img/blog/2021-04-reactive-mode/arch.png | Bin
.../blog/2021-04-reactive-mode/high-timeout.png | Bin
.../img/blog/2021-04-reactive-mode/intro.svg | 0
.../img/blog/2021-04-reactive-mode/result.png | Bin
.../img/blog/2021-05-03-release-1.13.0/7.png | Bin
.../blog/2021-05-03-release-1.13.0/bottleneck.png | Bin
.../img/blog/2021-07-07-backpressure/animated.png | Bin
.../2021-07-07-backpressure/bottleneck-zoom.png | Bin
.../2021-07-07-backpressure/simple-example.png | Bin
.../2021-07-07-backpressure/sliding-window.png | Bin
.../2021-07-07-backpressure/source-task-busy.png | Bin
.../img/blog/2021-07-07-backpressure/subtasks.png | Bin
.../VVP-SQL-Editor.png | Bin
.../flink-sql-client.png | Bin
.../buffer_debloating.svg | 0
.../fine_grained_resource_management.png | Bin
.../fine_grained_resource_management.svg | 0
.../2021-09-25-release-1.14.0/hybrid_source.png | Bin
.../img/blog/2021-10-26-sort-shuffle/1.jpg | Bin
.../img/blog/2021-10-26-sort-shuffle/2.jpg | Bin
.../img/blog/2021-10-26-sort-shuffle/3.jpg | Bin
.../img/blog/2021-10-26-sort-shuffle/4.jpg | Bin
.../img/blog/2021-10-26-sort-shuffle/5.jpg | Bin
.../2021-11-03-flink-backward/1.14-weather.png | Bin
.../1-distribution-pattern.svg | 0
.../2022-01-05-scheduler-performance/2-groups.svg | 0
.../3-how-shuffle-descriptors-are-distributed.svg | 0
.../4-pipelined-region.svg | 0
.../5-scheduling-deadlock.svg | 0
.../6-building-pipelined-region.svg | 0
.../blog/2022-02-22-scala-free/flink-scala-3.jpeg | Bin
.../overview.svg | 0
.../2022-05-06-pyflink-1.15-thread-mode/pemja.png | Bin
.../pyflink-architecture-overview.png | Bin
.../pyflink-checkpoint-time.jpg | Bin
.../pyflink-latency.jpg | Bin
.../pyflink-performance.jpg | Bin
.../pyflink-process-mode.png | Bin
.../pyflink-thread-mode.png | Bin
.../restore-mode-claim.svg | 0
.../restore-mode-legacy.svg | 0
.../restore-mode-no_claim.svg | 0
.../2022-05-18-latency-part1/buffer-timeout.png | Bin
.../choose-state-backend.png | Bin
.../increase-parallelism.png | Bin
.../2022-05-18-latency-part1/scenario1-simple.png | Bin
.../scenario2-eventtime.png | Bin
.../watermark-interval.png | Bin
.../img/blog/2022-05-23-latency-part2/async-io.png | Bin
.../enriching-with-async-io.png | Bin
.../blog/2022-05-23-latency-part2/spread-work.png | Bin
.../changelog-simple.png | Bin
.../checkpoint-timing.png | Bin
.../failing-task.png | Bin
.../log_checkpoints_1.png | Bin
.../log_checkpoints_2.png | Bin
.../log_checkpoints_3.png | Bin
.../1-overall-structure.png | Bin
.../2-dynamic-graph.png | Bin
.../3-static-graph-subpartition-mapping.png | Bin
.../4-dynamic-graph-subpartition-mapping.png | Bin
.../5-auto-rebalance.png | Bin
.../parallelism-formula.png | Bin
.../range-formula.png | Bin
.../checkpoint_format.png | Bin
.../checkpoint_trigger.png | Bin
.../2022-07-11-final-checkpoint/example_job.png | Bin
.../example_job_finish.png | Bin
.../2022-07-11-final-checkpoint/finish_cmp.png | Bin
.../stream_batch_cmp.png | Bin
.../delegation_token_framework.svg | 0
.../autoscaler_fig1.png | Bin
.../autoscaler_fig2.png | Bin
.../autoscaler_fig3.png | Bin
...neifts-after-enabling-gic-in-wordcount-case.png | Bin
.../costs-after-enabling-gic-in-wordcount-case.png | Bin
.../subtask-level-flame-graph.png | Bin
.../2023-03-23-release-1.17.0/tpc-ds-benchmark.png | Bin
.../source_components.svg | 0
.../source_reader.svg | 0
.../backpressure_monitor.png | Bin
.../rescaling_performance.png | Bin
.../2023-10-24-release-1.18.0/tpc-ds-benchmark.png | Bin
.../2024-03-18-release-1.19.0/minibatch_join.png | Bin
.../2024-03-18-release-1.19.0/profiling-res.png | Bin
.../blog/2024-03-18-release-1.19.0/profiling.png | Bin
.../kinesis_records_sharding.png | Bin
.../kinesis_resharding.png | Bin
.../prometheus-data-model.png | Bin
{docs/static => content}/img/blog/GSA-plan.png | Bin
{docs/static => content}/img/blog/appeared-in.png | Bin
.../batch-fine-grained-fault-tolerance/example.png | Bin
.../batch-fine-grained-fault-tolerance/job.png | Bin
.../batch-fine-grained-fault-tolerance/recov.png | Bin
.../batch-fine-grained-fault-tolerance/result.png | Bin
.../img/blog/blog_basic_window.png | Bin
.../img/blog/blog_data_driven.png | Bin
.../img/blog/blog_multi_input.png | Bin
.../img/blog/blog_social_media.png | Bin
.../img/blog/blog_stream_join.png | Bin
.../img/blog/broadcastState/fig1.png | Bin
.../img/blog/broadcastState/fig2.png | Bin
.../img/blog/broadcastState/fig3.png | Bin
.../img/blog/broadcastState/fig4.png | Bin
.../img/blog/broadcastState/fig5.png | Bin
.../img/blog/broadcastState/fig6.png | Bin
.../static => content}/img/blog/cep-monitoring.svg | 0
{docs/static => content}/img/blog/code-growth.png | Bin
{docs/static => content}/img/blog/commit-stats.png | Bin
.../img/blog/community-growth.png | Bin
.../img/blog/data-serialization.png | Bin
.../img/blog/dynamic-tables/append-mode.png | Bin
.../img/blog/dynamic-tables/query-append-out.png | Bin
.../img/blog/dynamic-tables/query-groupBy-cnt.png | Bin
.../dynamic-tables/query-groupBy-window-cnt.png | Bin
.../img/blog/dynamic-tables/query-update-out.png | Bin
.../img/blog/dynamic-tables/redo-mode.png | Bin
.../img/blog/dynamic-tables/replace-mode.png | Bin
.../blog/dynamic-tables/stream-query-stream.png | Bin
.../img/blog/dynamic-tables/streams.png | Bin
.../img/blog/dynamic-tables/undo-redo-mode.png | Bin
.../img/blog/emr-firefoxsettings.png | Bin
.../img/blog/emr-hadoopversion.png | Bin
.../static => content}/img/blog/emr-jobmanager.png | Bin
{docs/static => content}/img/blog/emr-running.png | Bin
{docs/static => content}/img/blog/emr-security.png | Bin
.../img/blog/emr-yarnappmaster.png | Bin
.../img/blog/eo-post-graphic-1.png | Bin
.../img/blog/eo-post-graphic-2.png | Bin
.../img/blog/eo-post-graphic-3.png | Bin
.../img/blog/eo-post-graphic-4.png | Bin
.../img/blog/eo-post-graphic-5.png | Bin
.../img/blog/feature-timeline.png | Bin
{docs/static => content}/img/blog/ff-speakers.png | Bin
{docs/static => content}/img/blog/flink-1.0.png | Bin
.../img/blog/flink-docker/flink-docker.gif | Bin
.../static => content}/img/blog/flink-dow-2016.png | Bin
.../static => content}/img/blog/flink-dow-2017.png | Bin
.../img/blog/flink-forward-banner.png | Bin
.../static => content}/img/blog/flink-hod-2016.png | Bin
.../static => content}/img/blog/flink-hod-2017.png | Bin
.../img/blog/flink-lines-of-code-2016.png | Bin
.../img/blog/flink-lines-of-code-2017.png | Bin
.../img/blog/flink-meetups-dec2016.png | Bin
.../img/blog/flink-meetups-dec2017.png | Bin
...-sql-blog-post-visual-primitive-avro-schema.png | Bin
.../img/blog/flink-pulsar-sql-blog-post-visual.png | Bin
.../img/blog/flink-releases-2016.png | Bin
.../img/blog/flink-releases-2017.png | Bin
{docs/static => content}/img/blog/flink-stack.png | Bin
{docs/static => content}/img/blog/flink-storm.png | Bin
.../img/blog/flinkSer-int-gc.png | Bin
.../img/blog/flinkSer-int-mem.png | Bin
.../img/blog/github-stats-2016.png | Bin
.../img/blog/github-stats-2017.png | Bin
.../static => content}/img/blog/hadoop-summit.png | Bin
{docs/static => content}/img/blog/hcompat-flow.png | Bin
.../static => content}/img/blog/hcompat-logos.png | Bin
.../img/blog/incremental_cp_impl_example.svg | 0
{docs/static => content}/img/blog/iteration.png | Bin
.../img/blog/joins-broadcast.png | Bin
.../img/blog/joins-dist-perf.png | Bin
{docs/static => content}/img/blog/joins-hhj.png | Bin
.../static => content}/img/blog/joins-memmgmt.png | Bin
.../img/blog/joins-repartition.png | Bin
.../img/blog/joins-single-perf.png | Bin
{docs/static => content}/img/blog/joins-smj.png | Bin
{docs/static => content}/img/blog/key-groups.svg | 0
.../static => content}/img/blog/kryoSer-int-gc.png | Bin
.../img/blog/kryoSer-int-mem.png | Bin
.../img/blog/list-checkpointed.svg | 0
{docs/static => content}/img/blog/meetup-map.png | Bin
{docs/static => content}/img/blog/memory-alloc.png | Bin
{docs/static => content}/img/blog/memory-mgmt.png | Bin
{docs/static => content}/img/blog/neighborhood.png | Bin
.../img/blog/new-dashboard-screenshot.png | Bin
.../static => content}/img/blog/objHeap-int-gc.png | Bin
.../img/blog/objHeap-int-mem.png | Bin
.../img/blog/patterns-blog-2/broadcast.png | Bin
.../img/blog/patterns-blog-2/forward.png | Bin
.../img/blog/patterns-blog-2/hash.png | Bin
.../img/blog/patterns-blog-2/job-graph.png | Bin
.../img/blog/patterns-blog-2/rebalance.png | Bin
.../img/blog/patterns-blog-2/rule-dsl.png | Bin
.../img/blog/patterns-blog-3/evaluation-delays.png | Bin
.../blog/patterns-blog-3/keyed-state-scoping.png | Bin
.../img/blog/patterns-blog-3/late-events.png | Bin
.../img/blog/patterns-blog-3/pre-aggregation.png | Bin
.../patterns-blog-3/sample-rule-definition.png | Bin
.../img/blog/patterns-blog-3/time-windows.png | Bin
.../img/blog/patterns-blog-3/type-kryo.png | Bin
.../img/blog/patterns-blog-3/type-pojo.png | Bin
.../img/blog/patterns-blog-3/widest-window.png | Bin
.../img/blog/patterns-blog-3/window-clean-up.png | Bin
.../img/blog/plan_visualizer1.png | Bin
.../img/blog/plan_visualizer2.png | Bin
.../img/blog/pulsar-flink/image-1.png | Bin
.../img/blog/pulsar-flink/image-2.png | Bin
.../img/blog/pulsar-flink/image-3.png | Bin
.../img/blog/pulsar-flink/image-4.png | Bin
.../img/blog/pulsar-flink/image-5.png | Bin
.../img/blog/reduce-on-neighbors.png | Bin
.../img/blog/release-19-flip1.png | Bin
.../img/blog/release-19-stack.png | Bin
.../img/blog/release-19-web1.png | Bin
.../img/blog/release-19-web2.png | Bin
{docs/static => content}/img/blog/robomongo.png | Bin
.../img/blog/session-windows.svg | 0
{docs/static => content}/img/blog/smirk.png | Bin
.../static => content}/img/blog/sort-benchmark.png | Bin
.../img/blog/sorting-binary-data-1.png | Bin
.../img/blog/sorting-binary-data-2.png | Bin
.../img/blog/sorting-binary-data-3.png | Bin
.../img/blog/speaker-logos-ff2016.png | Bin
.../img/blog/speaker-logos-ff2017.png | Bin
.../img/blog/sql_client_demo.gif | Bin
{docs/static => content}/img/blog/sssp.png | Bin
.../img/blog/stateless-stateful-streaming.svg | 0
.../img/blog/stream-sql/new-table-api.png | Bin
.../img/blog/stream-sql/old-table-api.png | Bin
.../changelog-producer-full-compaction.png | Bin
.../img/blog/table-store/table-store-0.2.png | Bin
.../blog/table-store/table-store-architecture.png | Bin
.../blink-flink-tpch.png | Bin
.../blink-spark-tpcds.png | Bin
.../bounded-unbounded.png | Bin
.../sort-performance.png | Bin
.../stream-batch-joins.png | Bin
.../img/blog/user-song-graph.png | Bin
.../img/blog/user-song-to-user-user.png | Bin
.../img/blog/vertex-centric-plan.png | Bin
.../img/blog/window-intro/window-mechanics.png | Bin
.../img/blog/window-intro/window-rolling-sum.png | Bin
.../blog/window-intro/window-sliding-window.png | Bin
.../img/blog/window-intro/window-stream.png | Bin
.../blog/window-intro/window-tumbling-window.png | Bin
.../img/blog/window-intro/windows-keyed.png | Bin
.../img}/bounded-unbounded.png | Bin
{docs/static => content}/img/bouygues-logo.jpg | Bin
{docs/static => content}/img/capital-one-logo.png | Bin
.../static => content}/img/continuous_streams.png | Bin
{docs/static => content}/img/deployment-modes.png | Bin
.../img/distributed_snapshots.png | Bin
{docs/static => content}/img/ecosystem_logos.png | Bin
{docs/static => content}/img/ericsson-logo.png | Bin
.../static => content}/img/exactly_once_state.png | Bin
.../img/features}/continuous_streams.png | Bin
.../img/features}/distributed_snapshots.png | Bin
.../img/features}/ecosystem_logos.png | Bin
.../img/features}/exactly_once_state.png | Bin
.../static => content}/img/features/iterations.png | Bin
.../img/features/memory_heap_division.png | Bin
.../img/features/one_runtime.png | Bin
.../img/features/optimizer_choice.png | Bin
.../img/features/out_of_order_stream.png | Bin
.../img/features/streaming_performance.png | Bin
{docs/static => content}/img/features/windows.png | Bin
.../img/flink-blog-icon-dark.svg | 0
.../img/flink-blog-icon-light.svg | 0
.../img/flink-compatibility-icon-dark.svg | 0
.../img/flink-compatibility-icon-light.svg | 0
.../img/flink-event-driven-icon-dark.svg | 0
.../img/flink-event-driven-icon-light.svg | 0
.../static => content}/img/flink-forward-asia.png | Bin
{docs/static => content}/img/flink-forward.png | Bin
.../img/flink-front-graphic-update.png | Bin
.../static => content}/img/flink-front-graphic.png | Bin
.../img/flink-github-icon-dark.svg | 0
.../img/flink-github-icon-light.svg | 0
{docs/static => content/img}/flink-header-logo.svg | 0
.../static => content}/img/flink-home-graphic.png | Bin
.../img/flink-layered-apis-icon-dark.svg | 0
.../img/flink-layered-apis-icon-light.svg | 0
.../img/flink-operational-icon-dark.svg | 0
.../img/flink-operational-icon-light.svg | 0
.../img/flink-performance-icon-dark.svg | 0
.../img/flink-performance-icon-light.svg | 0
.../img/flink-pipeline-etl-icon-dark.svg | 0
.../img/flink-pipeline-etl-icon-light.svg | 0
.../img/flink-scalability-icon-dark.svg | 0
.../img/flink-scalability-icon-light.svg | 0
.../img/flink-sine-wave-narrow.svg | 0
{docs/static => content}/img/flink-sine-wave.svg | 0
.../img/flink-stack-frontpage.png | Bin
{docs/static => content}/img/flink-stack-small.png | Bin
{docs/static => content}/img/flink-stack.png | Bin
.../img/flink-stream-batch-icon-dark.svg | 0
.../img/flink-stream-batch-icon-light.svg | 0
{docs/static => content}/img/flink-summer-camp.png | Bin
.../img/flink-twitter-icon-dark.svg | 0
.../img/flink-twitter-icon-light.svg | 0
.../static => content}/img/flink_feature_radar.svg | 0
.../img/flink_feature_radar_2.svg | 0
.../img/flink_feature_radar_3.svg | 0
.../img/flink_feature_radar_4.svg | 0
.../img/flink_feature_radar_zh.svg | 0
.../img/flink_feature_radar_zh_2.svg | 0
.../img/flink_feature_radar_zh_3.svg | 0
.../img/flink_feature_radar_zh_4.svg | 0
{docs/static => content}/img/function-state.png | Bin
.../img/features => content/img}/iterations.png | Bin
{docs/static => content}/img/king-logo.png | Bin
{docs/static => content}/img/local-state.png | Bin
{docs/static => content}/img/logo.zip | Bin
.../img/logo/colors/flink_colors.pdf | 0
.../img/logo/colors/flink_colors.pptx | Bin
.../img/logo/png/100/flink_squirrel_100_black.png | Bin
.../img/logo/png/100/flink_squirrel_100_color.png | Bin
.../img/logo/png/100/flink_squirrel_100_white.png | Bin
.../img/logo/png/1000/flink1000_black.png | Bin
.../img/logo/png/1000/flink1000_color_black.png | Bin
.../img/logo/png/1000/flink1000_color_white.png | Bin
.../img/logo/png/1000/flink1000_white.png | Bin
.../img/logo/png/1000/flink_squirrel_1000.png | Bin
.../logo/png/1000/flink_squirrel_black_1000.png | Bin
.../logo/png/1000/flink_squirrel_white_1000.png | Bin
.../img/logo/png/200/flink2_200_black.png | Bin
.../img/logo/png/200/flink2_200_color_black.png | Bin
.../img/logo/png/200/flink2_200_color_white.png | Bin
.../img/logo/png/200/flink2_200_white.png | Bin
.../img/logo/png/200/flink_squirrel_200_black.png | Bin
.../img/logo/png/200/flink_squirrel_200_color.png | Bin
.../img/logo/png/200/flink_squirrel_200_white.png | Bin
.../img/logo/png/50/black_50.png | Bin
.../img/logo/png/50/color_50.png | Bin
.../img/logo/png/50/white_50.png | Bin
.../img/logo/png/500/flink2_500_black.png | Bin
.../img/logo/png/500/flink2_500_color_black.png | Bin
.../img/logo/png/500/flink2_500_color_white.png | Bin
.../img/logo/png/500/flink2_500_white.png | Bin
.../img/logo/png/500/flink500_black.png | Bin
.../img/logo/png/500/flink500_color_black.png | Bin
.../img/logo/png/500/flink500_color_white.png | Bin
.../img/logo/png/500/flink500_white.png | Bin
.../img/logo/png/500/flink_3_500.png | Bin
.../img/logo/png/500/flink_squirrel_500.png | Bin
.../img/logo/png/500/flink_squirrel_500_black.png | Bin
.../img/logo/png/500/flink_squirrel_500_white.png | Bin
{docs/static => content}/img/logo/psd/flink50.psd | Bin
.../static => content}/img/logo/psd/flink_1000.psd | Bin
.../img/logo/psd/flink_3_500.psd | Bin
.../static => content}/img/logo/psd/flink_5000.psd | Bin
.../img/logo/psd/flink_squirrel.psd | Bin
.../img/logo/psd/flink_squirrel_1000.psd | Bin
.../img/logo/rsz_1flink-stack.png | Bin
.../img/logo/svg/black_outline.svg | 0
.../img/logo/svg/color_black.svg | 0
.../img/logo/svg/color_white.svg | 0
.../img/logo/svg/flink_logos.svg | 0
.../img/logo/svg/flink_logotypes.svg | 0
.../img/logo/svg/white_filled.svg | 0
{docs/static => content}/img/managed-state.png | Bin
.../img}/memory_heap_division.png | Bin
{docs/static => content}/img/navbar-brand-logo.jpg | Bin
{docs/static => content}/img/navbar-brand-logo.png | Bin
.../img/features => content/img}/one_runtime.png | Bin
.../features => content/img}/optimizer_choice.png | Bin
{docs/static => content}/img/otto-group-logo.jpg | Bin
.../img}/out_of_order_stream.png | Bin
.../static => content}/img/parallel_dataflows.png | Bin
.../img/poweredby/alibaba-logo.png | Bin
.../static => content}/img/poweredby/aws-logo.png | Bin
.../img/poweredby/bettercloud-logo.png | Bin
.../img/poweredby}/bouygues-logo.jpg | Bin
.../img/poweredby/capital-one-logo.png | Bin
.../img/poweredby/comcast-logo.png | Bin
.../img/poweredby/criteo-logo.png | Bin
.../static => content}/img/poweredby/didi-logo.png | Bin
.../static => content}/img/poweredby/dtrb-logo.png | Bin
.../static => content}/img/poweredby/ebay-logo.png | Bin
.../img/poweredby/ericsson-logo.png | Bin
.../img/poweredby/gojek-logo.png | Bin
.../img/poweredby/huawei-logo.png | Bin
.../static => content}/img/poweredby/king-logo.png | Bin
.../img/poweredby/klaviyo-logo.png | Bin
.../img/poweredby/kuaishou-logo.jpg | Bin
.../static => content}/img/poweredby/lyft-logo.png | Bin
.../img/poweredby/mediamath-logo.png | Bin
.../static => content}/img/poweredby/mux-logo.png | Bin
.../static => content}/img/poweredby/oppo-logo.png | Bin
.../img/poweredby/otto-group-logo.png | Bin
.../static => content}/img/poweredby/ovh-logo.png | Bin
.../img/poweredby/pinterest-logo.png | Bin
.../img/poweredby/razorpay-logo.png | Bin
.../img/poweredby/researchgate-logo.png | Bin
.../img/poweredby/sktelecom-logo.png | Bin
.../img/poweredby/telefonica-next-logo.png | Bin
.../img/poweredby/tencent-logo.png | Bin
.../static => content}/img/poweredby/uber-logo.png | Bin
.../static => content}/img/poweredby/vip-logo.png | Bin
.../img/poweredby/xiaomi-logo.png | Bin
.../static => content}/img/poweredby/yelp-logo.png | Bin
.../img/poweredby/zalando-logo.jpg | Bin
{docs/static => content}/img/researchgate-logo.png | Bin
.../img/rocksdb_rescaling_benchmark.png | Bin
{docs/static => content}/img/runtime.png | Bin
{docs/static => content}/img/savepoints.png | Bin
.../img/source-transform-sink-update.png | Bin
{docs/static => content}/img/stack.png | Bin
.../img/stateful-functions/favicon.png | Bin
.../stateful-functions/flink_dataflow_graph.png | Bin
.../img/stateful-functions/github-logo-link.png | Bin
.../img/stateful-functions/model-score.svg | 0
.../img/stateful-functions/statefun-colocated.png | Bin
.../img/stateful-functions/statefun-embedded.png | Bin
.../statefun-event-driven-db.png | Bin
.../img/stateful-functions/statefun-overview.png | Bin
.../img/stateful-functions/statefun-prop1.png | Bin
.../img/stateful-functions/statefun-prop2.png | Bin
.../img/stateful-functions/statefun-prop3.png | Bin
.../img/stateful-functions/statefun-prop4.png | Bin
.../img/stateful-functions/statefun-prop5.png | Bin
.../img/stateful-functions/statefun-prop6.png | Bin
.../img/stateful-functions/statefun-remote.png | Bin
.../img/stateful-functions/twitter-logo-link.png | Bin
.../img}/streaming_performance.png | Bin
{docs/static => content}/img/test.drawio | 0
.../static => content}/img/usecases-analytics.png | Bin
.../img/usecases-datapipelines.png | Bin
.../img/usecases-eventdrivenapps.png | Bin
.../img/features => content/img}/windows.png | Bin
{docs/static => content}/img/zalando-logo.png | Bin
content/index.html | 800 +++
content/index.xml | 2056 +++++++
{docs/static => content}/js/anchor.min.js | 0
{docs/static => content}/js/flink.js | 0
{docs/static => content}/js/track-search-terms.js | 0
content/katex/auto-render.min.js | 1 +
content/katex/fonts/KaTeX_AMS-Regular.ttf | Bin 0 -> 70972 bytes
content/katex/fonts/KaTeX_AMS-Regular.woff | Bin 0 -> 38868 bytes
content/katex/fonts/KaTeX_AMS-Regular.woff2 | Bin 0 -> 32944 bytes
content/katex/fonts/KaTeX_Caligraphic-Bold.ttf | Bin 0 -> 19316 bytes
content/katex/fonts/KaTeX_Caligraphic-Bold.woff | Bin 0 -> 11696 bytes
content/katex/fonts/KaTeX_Caligraphic-Bold.woff2 | Bin 0 -> 10448 bytes
content/katex/fonts/KaTeX_Caligraphic-Regular.ttf | Bin 0 -> 18684 bytes
content/katex/fonts/KaTeX_Caligraphic-Regular.woff | Bin 0 -> 11460 bytes
.../katex/fonts/KaTeX_Caligraphic-Regular.woff2 | Bin 0 -> 10240 bytes
content/katex/fonts/KaTeX_Fraktur-Bold.ttf | Bin 0 -> 35660 bytes
content/katex/fonts/KaTeX_Fraktur-Bold.woff | Bin 0 -> 22632 bytes
content/katex/fonts/KaTeX_Fraktur-Bold.woff2 | Bin 0 -> 20360 bytes
content/katex/fonts/KaTeX_Fraktur-Regular.ttf | Bin 0 -> 34352 bytes
content/katex/fonts/KaTeX_Fraktur-Regular.woff | Bin 0 -> 22088 bytes
content/katex/fonts/KaTeX_Fraktur-Regular.woff2 | Bin 0 -> 19784 bytes
content/katex/fonts/KaTeX_Main-Bold.ttf | Bin 0 -> 60784 bytes
content/katex/fonts/KaTeX_Main-Bold.woff | Bin 0 -> 35464 bytes
content/katex/fonts/KaTeX_Main-Bold.woff2 | Bin 0 -> 30244 bytes
content/katex/fonts/KaTeX_Main-BoldItalic.ttf | Bin 0 -> 44496 bytes
content/katex/fonts/KaTeX_Main-BoldItalic.woff | Bin 0 -> 25352 bytes
content/katex/fonts/KaTeX_Main-BoldItalic.woff2 | Bin 0 -> 21944 bytes
content/katex/fonts/KaTeX_Main-Italic.ttf | Bin 0 -> 47640 bytes
content/katex/fonts/KaTeX_Main-Italic.woff | Bin 0 -> 26228 bytes
content/katex/fonts/KaTeX_Main-Italic.woff2 | Bin 0 -> 22748 bytes
content/katex/fonts/KaTeX_Main-Regular.ttf | Bin 0 -> 69520 bytes
content/katex/fonts/KaTeX_Main-Regular.woff | Bin 0 -> 38112 bytes
content/katex/fonts/KaTeX_Main-Regular.woff2 | Bin 0 -> 32464 bytes
content/katex/fonts/KaTeX_Math-BoldItalic.ttf | Bin 0 -> 39308 bytes
content/katex/fonts/KaTeX_Math-BoldItalic.woff | Bin 0 -> 22324 bytes
content/katex/fonts/KaTeX_Math-BoldItalic.woff2 | Bin 0 -> 19720 bytes
content/katex/fonts/KaTeX_Math-Italic.ttf | Bin 0 -> 40992 bytes
content/katex/fonts/KaTeX_Math-Italic.woff | Bin 0 -> 22844 bytes
content/katex/fonts/KaTeX_Math-Italic.woff2 | Bin 0 -> 20096 bytes
content/katex/fonts/KaTeX_SansSerif-Bold.ttf | Bin 0 -> 33688 bytes
content/katex/fonts/KaTeX_SansSerif-Bold.woff | Bin 0 -> 18516 bytes
content/katex/fonts/KaTeX_SansSerif-Bold.woff2 | Bin 0 -> 15732 bytes
content/katex/fonts/KaTeX_SansSerif-Italic.ttf | Bin 0 -> 30960 bytes
content/katex/fonts/KaTeX_SansSerif-Italic.woff | Bin 0 -> 17572 bytes
content/katex/fonts/KaTeX_SansSerif-Italic.woff2 | Bin 0 -> 15024 bytes
content/katex/fonts/KaTeX_SansSerif-Regular.ttf | Bin 0 -> 29812 bytes
content/katex/fonts/KaTeX_SansSerif-Regular.woff | Bin 0 -> 16228 bytes
content/katex/fonts/KaTeX_SansSerif-Regular.woff2 | Bin 0 -> 13708 bytes
content/katex/fonts/KaTeX_Script-Regular.ttf | Bin 0 -> 24620 bytes
content/katex/fonts/KaTeX_Script-Regular.woff | Bin 0 -> 13428 bytes
content/katex/fonts/KaTeX_Script-Regular.woff2 | Bin 0 -> 12064 bytes
content/katex/fonts/KaTeX_Size1-Regular.ttf | Bin 0 -> 12916 bytes
content/katex/fonts/KaTeX_Size1-Regular.woff | Bin 0 -> 6696 bytes
content/katex/fonts/KaTeX_Size1-Regular.woff2 | Bin 0 -> 5592 bytes
content/katex/fonts/KaTeX_Size2-Regular.ttf | Bin 0 -> 12172 bytes
content/katex/fonts/KaTeX_Size2-Regular.woff | Bin 0 -> 6436 bytes
content/katex/fonts/KaTeX_Size2-Regular.woff2 | Bin 0 -> 5392 bytes
content/katex/fonts/KaTeX_Size3-Regular.ttf | Bin 0 -> 8120 bytes
content/katex/fonts/KaTeX_Size3-Regular.woff | Bin 0 -> 4568 bytes
content/katex/fonts/KaTeX_Size3-Regular.woff2 | Bin 0 -> 3728 bytes
content/katex/fonts/KaTeX_Size4-Regular.ttf | Bin 0 -> 11016 bytes
content/katex/fonts/KaTeX_Size4-Regular.woff | Bin 0 -> 6184 bytes
content/katex/fonts/KaTeX_Size4-Regular.woff2 | Bin 0 -> 5028 bytes
content/katex/fonts/KaTeX_Typewriter-Regular.ttf | Bin 0 -> 35924 bytes
content/katex/fonts/KaTeX_Typewriter-Regular.woff | Bin 0 -> 20260 bytes
content/katex/fonts/KaTeX_Typewriter-Regular.woff2 | Bin 0 -> 17272 bytes
content/katex/katex.min.css | 1 +
content/katex/katex.min.js | 1 +
content/manifest.json | 15 +
content/material/index.html | 911 ++++
content/mermaid.min.js | 49 +
{docs/static/img => content}/navbar-brand-logo.jpg | Bin
content/news/2014/08/26/release-0.6.html | 10 +
content/news/2014/09/26/release-0.6.1.html | 10 +
content/news/2014/10/03/upcoming_events.html | 10 +
content/news/2014/11/04/release-0.7.0.html | 10 +
content/news/2014/11/18/hadoop-compatibility.html | 10 +
content/news/2015/01/06/december-in-flink.html | 10 +
content/news/2015/01/21/release-0.8.html | 10 +
content/news/2015/02/04/january-in-flink.html | 10 +
content/news/2015/02/09/streaming-example.html | 10 +
.../news/2015/03/02/february-2015-in-flink.html | 10 +
.../13/peeking-into-Apache-Flinks-Engine-Room.html | 10 +
content/news/2015/04/07/march-in-flink.html | 10 +
.../news/2015/04/13/release-0.9.0-milestone1.html | 10 +
.../2015/05/11/Juggling-with-Bits-and-Bytes.html | 10 +
.../news/2015/05/14/Community-update-April.html | 10 +
.../24/announcing-apache-flink-0.9.0-release.html | 10 +
.../news/2015/08/24/introducing-flink-gelly.html | 10 +
content/news/2015/09/01/release-0.9.1.html | 10 +
content/news/2015/09/03/flink-forward.html | 10 +
content/news/2015/09/16/off-heap-memory.html | 10 +
content/news/2015/11/16/release-0.10.0.html | 10 +
content/news/2015/11/27/release-0.10.1.html | 10 +
content/news/2015/12/04/Introducing-windows.html | 10 +
content/news/2015/12/11/storm-compatibility.html | 10 +
content/news/2015/12/18/a-year-in-review.html | 10 +
content/news/2016/02/11/release-0.10.2.html | 10 +
content/news/2016/03/08/release-1.0.0.html | 10 +
content/news/2016/04/06/cep-monitoring.html | 10 +
content/news/2016/04/06/release-1.0.1.html | 10 +
.../news/2016/04/14/flink-forward-announce.html | 10 +
content/news/2016/04/22/release-1.0.2.html | 10 +
content/news/2016/05/11/release-1.0.3.html | 10 +
content/news/2016/05/24/stream-sql.html | 10 +
content/news/2016/08/08/release-1.1.0.html | 10 +
content/news/2016/08/11/release-1.1.1.html | 10 +
content/news/2016/08/24/ff16-keynotes-panels.html | 10 +
content/news/2016/09/05/release-1.1.2.html | 10 +
content/news/2016/10/12/release-1.1.3.html | 10 +
content/news/2016/12/19/2016-year-in-review.html | 10 +
content/news/2016/12/21/release-1.1.4.html | 10 +
content/news/2017/02/06/release-1.2.0.html | 10 +
content/news/2017/03/23/release-1.1.5.html | 10 +
content/news/2017/03/29/table-sql-api-update.html | 10 +
content/news/2017/04/04/dynamic-tables.html | 10 +
content/news/2017/04/26/release-1.2.1.html | 10 +
content/news/2017/05/16/official-docker-image.html | 10 +
content/news/2017/06/01/release-1.3.0.html | 10 +
content/news/2017/06/23/release-1.3.1.html | 10 +
content/news/2017/08/05/release-1.3.2.html | 10 +
.../2017/11/22/release-1.4-and-1.5-timeline.html | 10 +
content/news/2017/12/12/release-1.4.0.html | 10 +
content/news/2017/12/21/2017-year-in-review.html | 10 +
content/news/2018/02/15/release-1.4.1.html | 10 +
content/news/2018/03/08/release-1.4.2.html | 10 +
content/news/2018/03/15/release-1.3.3.html | 10 +
content/news/2018/05/25/release-1.5.0.html | 10 +
content/news/2018/07/12/release-1.5.1.html | 10 +
content/news/2018/07/31/release-1.5.2.html | 10 +
content/news/2018/08/09/release-1.6.0.html | 10 +
content/news/2018/08/21/release-1.5.3.html | 10 +
content/news/2018/09/20/release-1.5.4.html | 10 +
content/news/2018/09/20/release-1.6.1.html | 10 +
content/news/2018/10/29/release-1.5.5.html | 10 +
content/news/2018/10/29/release-1.6.2.html | 10 +
content/news/2018/11/30/release-1.7.0.html | 10 +
content/news/2018/12/21/release-1.7.1.html | 10 +
content/news/2018/12/22/release-1.6.3.html | 10 +
content/news/2018/12/26/release-1.5.6.html | 10 +
.../2019/02/13/unified-batch-streaming-blink.html | 10 +
content/news/2019/02/15/release-1.7.2.html | 10 +
.../news/2019/02/25/monitoring-best-practices.html | 10 +
content/news/2019/02/25/release-1.6.4.html | 10 +
content/news/2019/03/06/ffsf-preview.html | 10 +
content/news/2019/04/09/release-1.8.0.html | 10 +
content/news/2019/04/17/sod.html | 10 +
content/news/2019/07/02/release-1.8.1.html | 10 +
content/news/2019/08/22/release-1.9.0.html | 10 +
content/news/2019/09/10/community-update.html | 10 +
content/news/2019/09/11/release-1.8.2.html | 10 +
content/news/2019/10/18/release-1.9.1.html | 10 +
.../query-pulsar-streams-using-apache-flink.html | 10 +
content/news/2019/12/09/flink-kubernetes-kudo.html | 10 +
content/news/2019/12/11/release-1.8.3.html | 10 +
content/news/2020/01/15/demo-fraud-detection.html | 10 +
...ked-interacting-with-state-in-apache-flink.html | 10 +
content/news/2020/01/30/release-1.9.2.html | 10 +
.../a-guide-for-unit-testing-in-apache-flink.html | 10 +
content/news/2020/02/11/release-1.10.0.html | 10 +
content/news/2020/02/20/ddl.html | 10 +
.../news/2020/03/24/demo-fraud-detection-2.html | 10 +
content/news/2020/04/01/community-update.html | 10 +
.../news/2020/04/07/release-statefun-2.0.0.html | 10 +
.../04/15/flink-serialization-tuning-vol-1.html | 10 +
.../memory-management-improvements-flink-1.10.html | 10 +
content/news/2020/04/24/release-1.9.3.html | 10 +
content/news/2020/05/04/season-of-docs.html | 10 +
content/news/2020/05/07/community-update.html | 10 +
content/news/2020/05/12/release-1.10.1.html | 10 +
.../news/2020/06/09/release-statefun-2.1.0.html | 10 +
content/news/2020/06/11/community-update.html | 10 +
.../news/2020/06/15/flink-on-zeppelin-part1.html | 10 +
content/news/2020/07/06/release-1.11.0.html | 10 +
content/news/2020/07/14/application-mode.html | 10 +
content/news/2020/07/21/release-1.11.1.html | 10 +
content/news/2020/07/27/community-update.html | 10 +
.../news/2020/07/30/demo-fraud-detection-3.html | 10 +
content/news/2020/08/06/external-resource.html | 10 +
content/news/2020/08/20/flink-docker.html | 10 +
content/news/2020/08/25/release-1.10.2.html | 10 +
content/news/2020/09/04/community-update.html | 10 +
content/news/2020/09/17/release-1.11.2.html | 10 +
.../news/2020/09/28/release-statefun-2.2.0.html | 10 +
.../2020/10/13/stateful-serverless-internals.html | 10 +
.../news/2020/11/11/release-statefun-2.2.1.html | 10 +
content/news/2020/12/10/release-1.12.0.html | 10 +
content/news/2020/12/18/release-1.11.3.html | 10 +
.../news/2021/01/02/release-statefun-2.2.2.html | 10 +
.../01/11/batch-fine-grained-fault-tolerance.html | 10 +
content/news/2021/01/19/release-1.12.1.html | 10 +
content/news/2021/01/29/release-1.10.3.html | 10 +
content/news/2021/03/03/release-1.12.2.html | 10 +
.../news/2021/04/15/release-statefun-3.0.0.html | 10 +
content/news/2021/04/29/release-1.12.3.html | 10 +
content/news/2021/05/03/release-1.13.0.html | 10 +
content/news/2021/05/21/release-1.12.4.html | 10 +
content/news/2021/05/28/release-1.13.1.html | 10 +
content/news/2021/08/06/release-1.12.5.html | 10 +
content/news/2021/08/06/release-1.13.2.html | 10 +
content/news/2021/08/09/release-1.11.4.html | 10 +
content/news/2021/08/31/release-1.14.0-rc0.html | 10 +
.../news/2021/08/31/release-statefun-3.1.0.html | 10 +
content/news/2021/09/29/release-1.14.0.html | 10 +
content/news/2021/10/19/release-1.13.3.html | 10 +
content/news/2021/12/16/log4j-patch-releases.html | 10 +
.../news/2021/12/22/log4j-statefun-release.html | 10 +
content/news/2022/01/07/release-ml-2.0.0.html | 10 +
content/news/2022/01/17/release-1.14.3.html | 10 +
.../news/2022/01/31/release-statefun-3.2.0.html | 10 +
content/news/2022/02/18/release-1.13.6.html | 10 +
content/news/2022/03/11/release-1.14.4.html | 10 +
.../04/03/release-kubernetes-operator-0.1.0.html | 10 +
content/news/2022/05/05/1.15-announcement.html | 10 +
.../news/2022/05/11/release-table-store-0.1.0.html | 10 +
.../06/05/release-kubernetes-operator-1.0.0.html | 10 +
content/news/2022/06/22/release-1.14.5.html | 10 +
content/news/2022/07/06/release-1.15.1.html | 10 +
content/news/2022/07/12/release-ml-2.1.0.html | 10 +
.../07/25/release-kubernetes-operator-1.1.0.html | 10 +
content/news/2022/08/25/release-1.15.2.html | 10 +
.../news/2022/08/29/release-table-store-0.2.0.html | 10 +
content/news/2022/09/08/akka-license-change.html | 10 +
content/news/2022/09/28/release-1.14.6.html | 10 +
.../10/07/release-kubernetes-operator-1.2.0.html | 10 +
.../news/2022/10/13/release-table-store-0.2.1.html | 10 +
content/news/2022/10/28/1.16-announcement.html | 10 +
content/news/2022/11/10/release-1.15.3.html | 10 +
.../12/14/release-kubernetes-operator-1.3.0.html | 10 +
.../01/10/release-kubernetes-operator-1.3.1.html | 10 +
.../news/2023/01/13/release-table-store-0.3.0.html | 10 +
.../2023/01/20/delegation-token-framework.html | 10 +
content/news/2023/01/30/release-1.16.1.html | 10 +
.../02/27/release-kubernetes-operator-1.4.0.html | 10 +
content/news/2023/03/23/release-1.17.0.html | 10 +
content/news/2023/04/19/release-ml-2.2.0.html | 10 +
.../05/17/release-kubernetes-operator-1.5.0.html | 10 +
content/news/2023/05/25/release-1.16.2.html | 10 +
content/news/2023/05/25/release-1.17.1.html | 10 +
content/news/2023/07/03/sigmod-system-award.html | 10 +
.../news/2023/08/04/externalized-connectors.html | 10 +
.../08/15/release-kubernetes-operator-1.6.0.html | 10 +
content/news/2023/10/10/release-1.18.0.html | 10 +
.../10/27/release-kubernetes-operator-1.6.1.html | 10 +
.../11/22/release-kubernetes-operator-1.7.0.html | 10 +
content/news/2023/11/29/release-1.16.3.html | 10 +
content/news/2023/11/29/release-1.17.2.html | 10 +
content/news/2024/01/19/release-1.18.1.html | 10 +
content/news/2024/03/18/release-1.19.0.html | 10 +
.../03/21/release-kubernetes-operator-1.8.0.html | 10 +
content/news/2024/05/17/release-cdc-3.1.0.html | 10 +
content/news/2024/06/14/release-1.19.1.html | 10 +
.../news/2024/06/18/release-release-cdc-3.1.1.html | 10 +
.../07/02/release-kubernetes-operator-1.9.0.html | 10 +
content/news/2024/08/02/release-1.20.0.html | 10 +
.../news/2024/09/05/release-release-cdc-3.2.0.html | 10 +
content/news/2024/10/23/release-2.0-preview.html | 10 +
.../10/30/release-kubernetes-operator-1.10.0.html | 10 +
.../news/2024/11/27/release-release-cdc-3.2.1.html | 10 +
content/news/2025/01/21/release-cdc-3.3.0.html | 10 +
content/news/2025/02/12/release-1.19.2.html | 10 +
content/news/2025/02/12/release-1.20.1.html | 10 +
content/posts/index.html | 1874 +++++++
content/posts/index.xml | 1727 ++++++
content/posts/page/1/index.html | 10 +
content/posts/page/10/index.html | 1889 +++++++
content/posts/page/11/index.html | 1875 +++++++
content/posts/page/12/index.html | 1881 +++++++
content/posts/page/13/index.html | 1875 +++++++
content/posts/page/14/index.html | 1871 +++++++
content/posts/page/15/index.html | 1879 +++++++
content/posts/page/16/index.html | 1881 +++++++
content/posts/page/17/index.html | 1869 +++++++
content/posts/page/18/index.html | 1866 +++++++
content/posts/page/19/index.html | 1864 +++++++
content/posts/page/2/index.html | 1898 +++++++
content/posts/page/20/index.html | 1874 +++++++
content/posts/page/21/index.html | 1832 +++++++
content/posts/page/22/index.html | 1824 +++++++
content/posts/page/23/index.html | 1821 +++++++
content/posts/page/24/index.html | 1826 +++++++
content/posts/page/25/index.html | 1715 ++++++
content/posts/page/3/index.html | 1893 +++++++
content/posts/page/4/index.html | 1882 +++++++
content/posts/page/5/index.html | 1869 +++++++
content/posts/page/6/index.html | 1888 +++++++
content/posts/page/7/index.html | 1887 +++++++
content/posts/page/8/index.html | 1897 +++++++
content/posts/page/9/index.html | 1893 +++++++
content/powered-by.html | 10 +
content/powered-by/index.html | 10 +
content/roadmap.html | 10 +
content/roadmap/index.html | 10 +
content/security.html | 10 +
content/security/index.html | 10 +
content/sitemap.xml | 16 +
content/svg/calendar.svg | 1 +
content/svg/edit.svg | 1 +
content/svg/menu.svg | 1 +
content/svg/toc.svg | 1 +
content/svg/translate.svg | 1 +
content/tags/index.html | 606 +++
content/tags/index.xml | 11 +
content/tags/page/1/index.html | 10 +
content/use-cases.html | 10 +
content/use-cases/index.html | 10 +
content/what-is-flink-ml/index.html | 641 +++
content/what-is-flink-table-store/index.html | 641 +++
content/what-is-flink/community/index.html | 1448 +++++
.../what-is-flink/flink-applications/index.html | 831 +++
.../what-is-flink/flink-architecture/index.html | 710 +++
content/what-is-flink/flink-operations/index.html | 672 +++
content/what-is-flink/index.html | 617 +++
content/what-is-flink/index.xml | 74 +
content/what-is-flink/powered-by/index.html | 1485 ++++++
content/what-is-flink/roadmap/index.html | 864 +++
content/what-is-flink/security/index.html | 730 +++
content/what-is-flink/special-thanks/index.html | 677 +++
content/what-is-flink/use-cases/index.html | 796 +++
content/what-is-stateful-functions/index.html | 641 +++
.../index.html | 641 +++
...0c56254a1feff879558a57fcaa63d7822dca7d8fd513.js | 594 +++
...63a42a544257a8a958f002fc92240a01c1b89771fc07.js | 1 +
content/zh/404.html | 62 +
content/zh/categories/index.html | 594 +++
content/zh/categories/index.xml | 11 +
content/zh/categories/page/1/index.html | 10 +
content/zh/community.html | 10 +
content/zh/community/index.html | 10 +
.../zh/documentation/flink-cdc-master/index.html | 635 +++
.../zh/documentation/flink-cdc-stable/index.html | 635 +++
.../flink-kubernetes-operator-master/index.html | 635 +++
.../flink-kubernetes-operator-stable/index.html | 635 +++
content/zh/documentation/flink-master/index.html | 635 +++
content/zh/documentation/flink-preview/index.html | 635 +++
content/zh/documentation/flink-stable/index.html | 635 +++
.../flink-stateful-functions-master/index.html | 635 +++
.../flink-stateful-functions-stable/index.html | 635 +++
content/zh/documentation/flinkml-master/index.html | 635 +++
content/zh/documentation/flinkml-stable/index.html | 635 +++
content/zh/documentation/index.html | 614 +++
content/zh/documentation/index.xml | 88 +
content/zh/downloads/index.html | 1466 +++++
content/zh/flink-packages/index.html | 631 +++
content/zh/getting-help.html | 10 +
content/zh/getting-help/index.html | 10 +
content/zh/getting-started/index.html | 614 +++
content/zh/getting-started/index.xml | 53 +
.../zh/getting-started/training-course/index.html | 635 +++
.../zh/getting-started/with-flink-cdc/index.html | 635 +++
.../with-flink-kubernetes-operator/index.html | 635 +++
.../zh/getting-started/with-flink-ml/index.html | 635 +++
.../with-flink-stateful-functions/index.html | 635 +++
content/zh/getting-started/with-flink/index.html | 635 +++
.../code-style-and-quality-common/index.html | 1041 ++++
.../code-style-and-quality-components/index.html | 795 +++
.../code-style-and-quality-formatting/index.html | 806 +++
.../code-style-and-quality-java/index.html | 797 +++
.../code-style-and-quality-preamble/index.html | 675 +++
.../index.html | 727 +++
.../code-style-and-quality-scala/index.html | 738 +++
.../how-to-contribute/contribute-code/index.html | 849 +++
.../contribute-documentation/index.html | 689 +++
.../documentation-style-guide/index.html | 1048 ++++
.../zh/how-to-contribute/getting-help/index.html | 795 +++
.../how-to-contribute/improve-website/index.html | 718 +++
content/zh/how-to-contribute/index.html | 614 +++
content/zh/how-to-contribute/index.xml | 109 +
content/zh/how-to-contribute/overview/index.html | 743 +++
.../zh/how-to-contribute/reviewing-prs/index.html | 712 +++
content/zh/index.html | 788 +++
content/zh/index.xml | 340 ++
content/zh/material/index.html | 903 ++++
content/zh/powered-by.html | 10 +
content/zh/powered-by/index.html | 10 +
content/zh/roadmap.html | 10 +
content/zh/roadmap/index.html | 10 +
content/zh/security.html | 10 +
content/zh/security/index.html | 10 +
content/zh/sitemap.xml | 653 +++
content/zh/tags/index.html | 594 +++
content/zh/tags/index.xml | 11 +
content/zh/tags/page/1/index.html | 10 +
content/zh/use-cases.html | 10 +
content/zh/use-cases/index.html | 10 +
content/zh/what-is-flink-ml/index.html | 631 +++
content/zh/what-is-flink-table-store/index.html | 631 +++
content/zh/what-is-flink/community/index.html | 1446 +++++
.../zh/what-is-flink/flink-applications/index.html | 829 +++
.../zh/what-is-flink/flink-architecture/index.html | 723 +++
.../zh/what-is-flink/flink-operations/index.html | 672 +++
content/zh/what-is-flink/index.html | 605 +++
content/zh/what-is-flink/index.xml | 74 +
content/zh/what-is-flink/powered-by/index.html | 1479 ++++++
content/zh/what-is-flink/roadmap/index.html | 868 +++
content/zh/what-is-flink/security/index.html | 720 +++
content/zh/what-is-flink/special-thanks/index.html | 666 +++
content/zh/what-is-flink/use-cases/index.html | 808 +++
content/zh/what-is-stateful-functions/index.html | 631 +++
.../index.html | 631 +++
docs/config.toml | 2 +-
...ease-1.19.2.md => 2025-02-12-release-1.20.1.md} | 99 +-
docs/data/flink.yml | 14 +-
docs/data/release_archive.yml | 4 +
1338 files changed, 340754 insertions(+), 233 deletions(-)
create mode 100644 content/2014/08/26/apache-flink-0.6-available/index.html
create mode 100644 content/2014/09/26/apache-flink-0.6.1-available/index.html
create mode 100644 content/2014/10/03/upcoming-events/index.html
create mode 100644 content/2014/11/04/apache-flink-0.7.0-available/index.html
create mode 100644 content/2014/11/18/hadoop-compatibility-in-flink/index.html
create mode 100644 content/2015/01/06/december-2014-in-the-flink-community/index.html
create mode 100644 content/2015/01/21/apache-flink-0.8.0-available/index.html
create mode 100644 content/2015/02/04/january-2015-in-the-flink-community/index.html
create mode 100644 content/2015/02/09/introducing-flink-streaming/index.html
create mode 100644 content/2015/03/02/february-2015-in-the-flink-community/index.html
create mode 100644 content/2015/03/13/peeking-into-apache-flinks-engine-room/index.html
create mode 100644 content/2015/04/07/march-2015-in-the-flink-community/index.html
create mode 100644 content/2015/04/13/announcing-flink-0.9.0-milestone1-preview-release/index.html
create mode 100644 content/2015/05/11/juggling-with-bits-and-bytes/index.html
create mode 100644 content/2015/05/14/april-2015-in-the-flink-community/index.html
create mode 100644 content/2015/06/24/announcing-apache-flink-0.9.0/index.html
create mode 100644 content/2015/08/24/introducing-gelly-graph-processing-with-apache-flink/index.html
create mode 100644 content/2015/09/01/apache-flink-0.9.1-available/index.html
create mode 100644 content/2015/09/03/announcing-flink-forward-2015/index.html
create mode 100644 content/2015/09/16/off-heap-memory-in-apache-flink-and-the-curious-jit-compiler/index.html
create mode 100644 content/2015/11/16/announcing-apache-flink-0.10.0/index.html
create mode 100644 content/2015/11/27/flink-0.10.1-released/index.html
create mode 100644 content/2015/12/04/introducing-stream-windows-in-apache-flink/index.html
create mode 100644 content/2015/12/11/storm-compatibility-in-apache-flink-how-to-run-existing-storm-topologies-on-flink/index.html
create mode 100644 content/2015/12/18/flink-2015-a-year-in-review-and-a-lookout-to-2016/index.html
create mode 100644 content/2016/02/11/flink-0.10.2-released/index.html
create mode 100644 content/2016/03/08/announcing-apache-flink-1.0.0/index.html
create mode 100644 content/2016/04/06/flink-1.0.1-released/index.html
create mode 100644 content/2016/04/06/introducing-complex-event-processing-cep-with-apache-flink/index.html
create mode 100644 content/2016/04/14/flink-forward-2016-call-for-submissions-is-now-open/index.html
create mode 100644 content/2016/04/22/flink-1.0.2-released/index.html
create mode 100644 content/2016/05/11/flink-1.0.3-released/index.html
create mode 100644 content/2016/05/24/stream-processing-for-everyone-with-sql-and-apache-flink/index.html
create mode 100644 content/2016/08/04/announcing-apache-flink-1.1.0/index.html
create mode 100644 content/2016/08/04/flink-1.1.1-released/index.html
create mode 100644 content/2016/08/24/flink-forward-2016-announcing-schedule-keynotes-and-panel-discussion/index.html
create mode 100644 content/2016/09/05/apache-flink-1.1.2-released/index.html
create mode 100644 content/2016/10/12/apache-flink-1.1.3-released/index.html
create mode 100644 content/2016/12/19/apache-flink-in-2016-year-in-review/index.html
create mode 100644 content/2016/12/21/apache-flink-1.1.4-released/index.html
create mode 100644 content/2017/02/06/announcing-apache-flink-1.2.0/index.html
create mode 100644 content/2017/03/23/apache-flink-1.1.5-released/index.html
create mode 100644 content/2017/03/29/from-streams-to-tables-and-back-again-an-update-on-flinks-table-sql-api/index.html
create mode 100644 content/2017/03/30/continuous-queries-on-dynamic-tables/index.html
create mode 100644 content/2017/04/26/apache-flink-1.2.1-released/index.html
create mode 100644 content/2017/05/16/introducing-docker-images-for-apache-flink/index.html
create mode 100644 content/2017/06/01/apache-flink-1.3.0-release-announcement/index.html
create mode 100644 content/2017/06/23/apache-flink-1.3.1-released/index.html
create mode 100644 content/2017/07/04/a-deep-dive-into-rescalable-state-in-apache-flink/index.html
create mode 100644 content/2017/08/05/apache-flink-1.3.2-released/index.html
create mode 100644 content/2017/11/21/looking-ahead-to-apache-flink-1.4.0-and-1.5.0/index.html
create mode 100644 content/2017/12/12/apache-flink-1.4.0-release-announcement/index.html
create mode 100644 content/2017/12/21/apache-flink-in-2017-year-in-review/index.html
create mode 100644 content/2018/01/30/managing-large-state-in-apache-flink-an-intro-to-incremental-checkpointing/index.html
create mode 100644 content/2018/02/15/apache-flink-1.4.1-released/index.html
create mode 100644 content/2018/02/28/an-overview-of-end-to-end-exactly-once-processing-in-apache-flink-with-apache-kafka-too/index.html
create mode 100644 content/2018/03/08/apache-flink-1.4.2-released/index.html
create mode 100644 content/2018/03/15/apache-flink-1.3.3-released/index.html
create mode 100644 content/2018/05/18/apache-flink-1.5.0-release-announcement/index.html
create mode 100644 content/2018/07/12/apache-flink-1.5.1-released/index.html
create mode 100644 content/2018/07/31/apache-flink-1.5.2-released/index.html
create mode 100644 content/2018/08/09/apache-flink-1.6.0-release-announcement/index.html
create mode 100644 content/2018/08/21/apache-flink-1.5.3-released/index.html
create mode 100644 content/2018/09/20/apache-flink-1.5.4-released/index.html
create mode 100644 content/2018/09/20/apache-flink-1.6.1-released/index.html
create mode 100644 content/2018/10/29/apache-flink-1.5.5-released/index.html
create mode 100644 content/2018/10/29/apache-flink-1.6.2-released/index.html
create mode 100644 content/2018/11/30/apache-flink-1.7.0-release-announcement/index.html
create mode 100644 content/2018/12/21/apache-flink-1.7.1-released/index.html
create mode 100644 content/2018/12/22/apache-flink-1.6.3-released/index.html
create mode 100644 content/2018/12/26/apache-flink-1.5.6-released/index.html
create mode 100644 content/2019/02/13/batch-as-a-special-case-of-streaming-and-alibabas-contribution-of-blink/index.html
create mode 100644 content/2019/02/15/apache-flink-1.7.2-released/index.html
create mode 100644 content/2019/02/21/monitoring-apache-flink-applications-101/index.html
create mode 100644 content/2019/02/25/apache-flink-1.6.4-released/index.html
create mode 100644 content/2019/03/06/what-to-expect-from-flink-forward-san-francisco-2019/index.html
create mode 100644 content/2019/03/11/flink-and-prometheus-cloud-native-monitoring-of-streaming-applications/index.html
create mode 100644 content/2019/04/09/apache-flink-1.8.0-release-announcement/index.html
create mode 100644 content/2019/04/17/apache-flinks-application-to-season-of-docs/index.html
create mode 100644 content/2019/05/03/pulsar-flink.html
create mode 100644 content/2019/05/03/when-flink-pulsar-come-together/index.html
create mode 100644 content/2019/05/14/flux-capacitor-huh-temporal-tables-and-joins-in-streaming-sql/index.html
create mode 100644 content/2019/05/14/temporal-tables.html
create mode 100644 content/2019/05/17/state-ttl-in-flink-1.8.0-how-to-automatically-cleanup-application-state-in-apache-flink/index.html
create mode 100644 content/2019/05/19/state-ttl.html
create mode 100644 content/2019/06/05/a-deep-dive-into-flinks-network-stack/index.html
create mode 100644 content/2019/06/05/flink-network-stack.html
create mode 100644 content/2019/06/26/a-practical-guide-to-broadcast-state-in-apache-flink/index.html
create mode 100644 content/2019/06/26/broadcast-state.html
create mode 100644 content/2019/07/02/apache-flink-1.8.1-released/index.html
create mode 100644 content/2019/07/23/flink-network-stack-2.html
create mode 100644 content/2019/07/23/flink-network-stack-vol.-2-monitoring-metrics-and-that-backpressure-thing/index.html
create mode 100644 content/2019/08/22/apache-flink-1.9.0-release-announcement/index.html
create mode 100644 content/2019/09/05/flink-community-update-september19/index.html
create mode 100644 content/2019/09/11/apache-flink-1.8.2-released/index.html
create mode 100644 content/2019/09/13/the-state-processor-api-how-to-read-write-and-modify-the-state-of-flink-applications/index.html
create mode 100644 content/2019/10/18/apache-flink-1.9.1-released/index.html
create mode 100644 content/2019/11/06/running-apache-flink-on-kubernetes-with-kudo/index.html
create mode 100644 content/2019/11/25/how-to-query-pulsar-streams-using-apache-flink/index.html
create mode 100644 content/2019/12/11/apache-flink-1.8.3-released/index.html
create mode 100644 content/2020/01/15/advanced-flink-application-patterns-vol.1-case-study-of-a-fraud-detection-system/index.html
create mode 100644 content/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink/index.html
create mode 100644 content/2020/01/30/apache-flink-1.9.2-released/index.html
create mode 100644 content/2020/02/03/a-guide-for-unit-testing-in-apache-flink/index.html
create mode 100644 content/2020/02/11/apache-flink-1.10.0-release-announcement/index.html
create mode 100644 content/2020/02/20/no-java-required-configuring-sources-and-sinks-in-sql/index.html
create mode 100644 content/2020/02/22/apache-beam-how-beam-runs-on-top-of-flink/index.html
create mode 100644 content/2020/03/24/advanced-flink-application-patterns-vol.2-dynamic-updates-of-application-logic/index.html
create mode 100644 content/2020/03/27/flink-as-unified-engine-for-modern-data-warehousing-production-ready-hive-integration/index.html
create mode 100644 content/2020/03/30/flink-community-update-april20/index.html
create mode 100644 content/2020/04/07/stateful-functions-2.0-an-event-driven-database-on-apache-flink/index.html
create mode 100644 content/2020/04/09/pyflink-introducing-python-support-for-udfs-in-flinks-table-api/index.html
create mode 100644 content/2020/04/09/pyflink-udf-support-flink.html
create mode 100644 content/2020/04/15/flink-serialization-tuning-vol.-1-choosing-your-serializer-if-you-can/index.html
create mode 100644 content/2020/04/21/memory-management-improvements-with-apache-flink-1.10/index.html
create mode 100644 content/2020/04/24/apache-flink-1.9.3-released/index.html
create mode 100644 content/2020/05/04/applying-to-google-season-of-docs-2020/index.html
create mode 100644 content/2020/05/06/flink-community-update-may20/index.html
copy docs/content/posts/2020-05-12-release-1.10.1.md => content/2020/05/12/apache-flink-1.10.1-released/index.html (58%)
create mode 100644 content/2020/06/09/stateful-functions-2.1.0-release-announcement/index.html
create mode 100644 content/2020/06/10/flink-community-update-june20/index.html
create mode 100644 content/2020/06/15/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-1/index.html
create mode 100644 content/2020/06/23/flink-on-zeppelin-notebooks-for-interactive-data-analysis-part-2/index.html
create mode 100644 content/2020/07/06/apache-flink-1.11.0-release-announcement/index.html
create mode 100644 content/2020/07/14/application-deployment-in-flink-current-state-and-the-new-application-mode/index.html
create mode 100644 content/2020/07/21/apache-flink-1.11.1-released/index.html
create mode 100644 content/2020/07/23/catalogs.html
create mode 100644 content/2020/07/23/sharing-is-caring-catalogs-in-flink-sql/index.html
create mode 100644 content/2020/07/28/flink-sql-demo-building-an-end-to-end-streaming-application/index.html
create mode 100644 content/2020/07/28/flink-sql-demo-building-e2e-streaming-application.html
create mode 100644 content/2020/07/29/flink-community-update-july20/index.html
create mode 100644 content/2020/07/30/advanced-flink-application-patterns-vol.3-custom-window-processing/index.html
create mode 100644 content/2020/08/04/pyflink-pandas-udf-support-flink.html
create mode 100644 content/2020/08/04/pyflink-the-integration-of-pandas-into-pyflink/index.html
create mode 100644 content/2020/08/06/accelerating-your-workload-with-gpu-and-other-external-resources/index.html
create mode 100644 content/2020/08/18/monitoring-and-controlling-networks-of-iot-devices-with-flink-stateful-functions/index.html
create mode 100644 content/2020/08/19/statefun.html
create mode 100644 content/2020/08/20/the-state-of-flink-on-docker/index.html
create mode 100644 content/2020/08/25/apache-flink-1.10.2-released/index.html
create mode 100644 content/2020/09/01/flink-1.11-memory-management-improvements.html
create mode 100644 content/2020/09/01/memory-management-improvements-for-flinks-jobmanager-in-apache-flink-1.11/index.html
create mode 100644 content/2020/09/04/flink-community-update-august20/index.html
create mode 100644 content/2020/09/17/apache-flink-1.11.2-released/index.html
create mode 100644 content/2020/09/28/stateful-functions-2.2.0-release-announcement/index.html
create mode 100644 content/2020/10/13/stateful-functions-internals-behind-the-scenes-of-stateful-serverless/index.html
create mode 100644 content/2020/10/15/from-aligned-to-unaligned-checkpoints-part-1-checkpoints-alignment-and-backpressure/index.html
create mode 100644 content/2020/10/15/from-aligned-to-unaligned-checkpoints-part-1.html
create mode 100644 content/2020/11/11/stateful-functions-2.2.1-release-announcement/index.html
create mode 100644 content/2020/12/02/improvements-in-task-scheduling-for-batch-workloads-in-apache-flink-1.12/index.html
create mode 100644 content/2020/12/10/apache-flink-1.12.0-release-announcement/index.html
create mode 100644 content/2020/12/15/pipelined-region-sheduling.html
copy docs/content/posts/2020-12-18-release-1.11.3.md => content/2020/12/18/apache-flink-1.11.3-released/index.html (57%)
create mode 100644 content/2021/01/02/stateful-functions-2.2.2-release-announcement/index.html
create mode 100644 content/2021/01/07/pulsar-flink-connector-270.html
create mode 100644 content/2021/01/07/whats-new-in-the-pulsar-flink-connector-2.7.0/index.html
create mode 100644 content/2021/01/11/exploring-fine-grained-recovery-of-bounded-data-sets-on-flink/index.html
create mode 100644 content/2021/01/18/rocksdb.html
create mode 100644 content/2021/01/18/using-rocksdb-state-backend-in-apache-flink-when-and-how/index.html
create mode 100644 content/2021/01/19/apache-flink-1.12.1-released/index.html
create mode 100644 content/2021/01/29/apache-flink-1.10.3-released/index.html
create mode 100644 content/2021/02/10/how-to-natively-deploy-flink-on-kubernetes-with-high-availability-ha/index.html
create mode 100644 content/2021/02/10/native-k8s-with-ha.html
create mode 100644 content/2021/03/03/apache-flink-1.12.2-released/index.html
create mode 100644 content/2021/03/11/a-rundown-of-batch-execution-mode-in-the-datastream-api/index.html
create mode 100644 content/2021/03/11/batch-execution-mode.html
create mode 100644 content/2021/04/15/stateful-functions-3.0.0-remote-functions-front-and-center/index.html
create mode 100644 content/2021/04/29/apache-flink-1.12.3-released/index.html
create mode 100644 content/2021/05/03/apache-flink-1.13.0-release-announcement/index.html
create mode 100644 content/2021/05/06/reactive-mode.html
create mode 100644 content/2021/05/06/scaling-flink-automatically-with-reactive-mode/index.html
create mode 100644 content/2021/05/21/apache-flink-1.12.4-released/index.html
create mode 100644 content/2021/05/28/apache-flink-1.13.1-released/index.html
create mode 100644 content/2021/07/07/backpressure.html
create mode 100644 content/2021/07/07/how-to-identify-the-source-of-backpressure/index.html
create mode 100644 content/2021/08/06/apache-flink-1.12.5-released/index.html
copy docs/content/posts/2021-08-06-release-1.13.2.md => content/2021/08/06/apache-flink-1.13.2-released/index.html (51%)
create mode 100644 content/2021/08/09/apache-flink-1.11.4-released/index.html
create mode 100644 content/2021/08/31/help-us-stabilize-apache-flink-1.14.0-rc0/index.html
create mode 100644 content/2021/08/31/stateful-functions-3.1.0-release-announcement/index.html
create mode 100644 content/2021/09/07/connector-table-sql-api-part1.html
create mode 100644 content/2021/09/07/connector-table-sql-api-part2.html
create mode 100644 content/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-one/index.html
create mode 100644 content/2021/09/07/implementing-a-custom-source-connector-for-table-api-and-sql-part-two/index.html
create mode 100644 content/2021/09/29/apache-flink-1.14.0-release-announcement/index.html
create mode 100644 content/2021/10/19/apache-flink-1.13.3-released/index.html
create mode 100644 content/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-one/index.html
create mode 100644 content/2021/10/26/sort-based-blocking-shuffle-implementation-in-flink-part-two/index.html
create mode 100644 content/2021/10/26/sort-shuffle-part1.html
create mode 100644 content/2021/10/26/sort-shuffle-part2.html
create mode 100644 content/2021/11/03/flink-backward-the-apache-flink-retrospective/index.html
create mode 100644 content/2021/11/03/flink-backward.html
create mode 100644 content/2021/12/10/advise-on-apache-log4j-zero-day-cve-2021-44228/index.html
create mode 100644 content/2021/12/10/log4j-cve.html
create mode 100644 content/2021/12/16/apache-flink-log4j-emergency-releases/index.html
create mode 100644 content/2021/12/22/apache-flink-statefun-log4j-emergency-release/index.html
create mode 100644 content/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-one/index.html
create mode 100644 content/2022/01/04/how-we-improved-scheduler-performance-for-large-scale-jobs-part-two/index.html
create mode 100644 content/2022/01/04/scheduler-performance-part-one.html
create mode 100644 content/2022/01/04/scheduler-performance-part-two.html
create mode 100644 content/2022/01/07/apache-flink-ml-2.0.0-release-announcement/index.html
copy docs/content/posts/2022-01-17-release-1.14.3.md => content/2022/01/17/apache-flink-1.14.3-release-announcement/index.html (52%)
create mode 100644 content/2022/01/20/pravega-connector-101.html
create mode 100644 content/2022/01/20/pravega-flink-connector-101/index.html
create mode 100644 content/2022/01/31/stateful-functions-3.2.0-release-announcement/index.html
create mode 100644 content/2022/02/18/apache-flink-1.13.6-release-announcement/index.html
create mode 100644 content/2022/02/22/scala-free-in-one-fifteen/index.html
create mode 100644 content/2022/02/22/scala-free.html
create mode 100644 content/2022/03/11/apache-flink-1.14.4-release-announcement/index.html
create mode 100644 content/2022/03/16/the-generic-asynchronous-base-sink/index.html
create mode 100644 content/2022/04/03/apache-flink-kubernetes-operator-0.1.0-release-announcement/index.html
create mode 100644 content/2022/05/05/announcing-the-release-of-apache-flink-1.15/index.html
create mode 100644 content/2022/05/06/async-sink-base.html
create mode 100644 content/2022/05/06/exploring-the-thread-mode-in-pyflink/index.html
create mode 100644 content/2022/05/06/improvements-to-flink-operations-snapshots-ownership-and-savepoint-formats/index.html
create mode 100644 content/2022/05/06/pyflink-1.15-thread-mode.html
create mode 100644 content/2022/05/06/restore-modes.html
create mode 100644 content/2022/05/11/apache-flink-table-store-0.1.0-release-announcement/index.html
create mode 100644 content/2022/05/18/getting-into-low-latency-gears-with-apache-flink-part-one/index.html
create mode 100644 content/2022/05/18/latency-part1.html
create mode 100644 content/2022/05/23/getting-into-low-latency-gears-with-apache-flink-part-two/index.html
create mode 100644 content/2022/05/23/latency-part2.html
create mode 100644 content/2022/05/30/changelog-state-backend.html
create mode 100644 content/2022/05/30/improving-speed-and-stability-of-checkpointing-with-generic-log-based-incremental-checkpoints/index.html
create mode 100644 content/2022/06/05/apache-flink-kubernetes-operator-1.0.0-release-announcement/index.html
create mode 100644 content/2022/06/17/adaptive-batch-scheduler-automatically-decide-parallelism-of-flink-batch-jobs/index.html
create mode 100644 content/2022/06/17/adaptive-batch-scheduler.html
create mode 100644 content/2022/06/22/apache-flink-1.14.5-release-announcement/index.html
create mode 100644 content/2022/07/06/apache-flink-1.15.1-release-announcement/index.html
create mode 100644 content/2022/07/11/final-checkpoint-part1.html
create mode 100644 content/2022/07/11/final-checkpoint-part2.html
create mode 100644 content/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-one/index.html
create mode 100644 content/2022/07/11/flip-147-support-checkpoints-after-tasks-finished-part-two/index.html
create mode 100644 content/2022/07/12/apache-flink-ml-2.1.0-release-announcement/index.html
create mode 100644 content/2022/07/25/apache-flink-kubernetes-operator-1.1.0-release-announcement/index.html
create mode 100644 content/2022/08/24/apache-flink-1.15.2-release-announcement/index.html
create mode 100644 content/2022/08/29/apache-flink-table-store-0.2.0-release-announcement/index.html
create mode 100644 content/2022/09/08/regarding-akkas-licensing-change/index.html
create mode 100644 content/2022/09/28/apache-flink-1.14.6-release-announcement/index.html
create mode 100644 content/2022/10/07/apache-flink-kubernetes-operator-1.2.0-release-announcement/index.html
create mode 100644 content/2022/10/13/apache-flink-table-store-0.2.1-release-announcement/index.html
create mode 100644 content/2022/10/28/announcing-the-release-of-apache-flink-1.16/index.html
create mode 100644 content/2022/11/10/apache-flink-1.15.3-release-announcement/index.html
create mode 100644 content/2022/11/25/async-sink-rate-limiting-strategy.html
create mode 100644 content/2022/11/25/optimising-the-throughput-of-async-sinks-using-a-custom-ratelimitingstrategy/index.html
create mode 100644 content/2022/12/14/apache-flink-kubernetes-operator-1.3.0-release-announcement/index.html
create mode 100644 content/2023/01/10/apache-flink-kubernetes-operator-1.3.1-release-announcement/index.html
create mode 100644 content/2023/01/13/apache-flink-table-store-0.3.0-release-announcement/index.html
create mode 100644 content/2023/01/20/delegation-token-framework-obtain-distribute-and-use-temporary-credentials-automatically/index.html
create mode 100644 content/2023/01/30/apache-flink-1.16.1-release-announcement/index.html
create mode 100644 content/2023/02/27/apache-flink-kubernetes-operator-1.4.0-release-announcement/index.html
create mode 100644 content/2023/03/15/apache-flink-1.15.4-release-announcement/index.html
create mode 100644 content/2023/03/23/announcing-the-release-of-apache-flink-1.17/index.html
create mode 100644 content/2023/04/19/apache-flink-ml-2.2.0-release-announcement/index.html
create mode 100644 content/2023/05/03/howto-create-a-batch-source-with-the-new-source-framework/index.html
create mode 100644 content/2023/05/09/howto-migrate-a-real-life-batch-pipeline-from-the-dataset-api-to-the-datastream-api/index.html
create mode 100644 content/2023/05/12/howto-test-a-batch-source-with-the-new-source-framework/index.html
create mode 100644 content/2023/05/17/apache-flink-kubernetes-operator-1.5.0-release-announcement/index.html
create mode 100644 content/2023/05/25/apache-flink-1.16.2-release-announcement/index.html
create mode 100644 content/2023/05/25/apache-flink-1.17.1-release-announcement/index.html
create mode 100644 content/2023/07/03/sigmod-systems-award-for-apache-flink/index.html
create mode 100644 content/2023/08/04/announcing-three-new-apache-flink-connectors-the-new-connector-versioning-strategy-and-externalization/index.html
create mode 100644 content/2023/08/15/apache-flink-kubernetes-operator-1.6.0-release-announcement/index.html
create mode 100644 content/2023/09/19/stateful-functions-3.3.0-release-announcement/index.html
create mode 100644 content/2023/10/24/announcing-the-release-of-apache-flink-1.18/index.html
create mode 100644 content/2023/10/27/apache-flink-kubernetes-operator-1.6.1-release-announcement/index.html
create mode 100644 content/2023/11/22/apache-flink-kubernetes-operator-1.7.0-release-announcement/index.html
create mode 100644 content/2023/11/29/apache-flink-1.16.3-release-announcement/index.html
create mode 100644 content/2023/11/29/apache-flink-1.17.2-release-announcement/index.html
create mode 100644 content/2024/01/19/apache-flink-1.18.1-release-announcement/index.html
create mode 100644 content/2024/03/18/announcing-the-release-of-apache-flink-1.19/index.html
create mode 100644 content/2024/03/21/apache-flink-kubernetes-operator-1.8.0-release-announcement/index.html
create mode 100644 content/2024/05/17/apache-flink-cdc-3.1.0-release-announcement/index.html
create mode 100644 content/2024/06/14/apache-flink-1.19.1-release-announcement/index.html
create mode 100644 content/2024/06/18/apache-flink-cdc-3.1.1-release-announcement/index.html
create mode 100644 content/2024/07/02/apache-flink-kubernetes-operator-1.9.0-release-announcement/index.html
create mode 100644 content/2024/08/02/announcing-the-release-of-apache-flink-1.20/index.html
create mode 100644 content/2024/09/05/apache-flink-cdc-3.2.0-release-announcement/index.html
create mode 100644 content/2024/10/23/preview-release-of-apache-flink-2.0/index.html
create mode 100644 content/2024/10/25/apache-flink-kubernetes-operator-1.10.0-release-announcement/index.html
create mode 100644 content/2024/11/25/introducing-the-new-amazon-kinesis-data-stream-and-amazon-dynamodb-stream-sources/index.html
create mode 100644 content/2024/11/27/apache-flink-cdc-3.2.1-release-announcement/index.html
create mode 100644 content/2024/12/05/introducing-the-new-prometheus-connector/index.html
create mode 100644 content/2025/01/21/apache-flink-cdc-3.3.0-release-announcement/index.html
create mode 100644 content/2025/02/12/apache-flink-1.19.2-release-announcement/index.html
create mode 100644 content/2025/02/12/apache-flink-1.20.1-release-announcement/index.html
create mode 100644 content/404.html
create mode 100644 content/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css
copy {docs/static => content}/bootstrap/css/bootstrap.min.css (100%)
copy {docs/static => content}/bootstrap/js/bootstrap.bundle.min.js (100%)
create mode 100644 content/categories/index.html
create mode 100644 content/categories/index.xml
create mode 100644 content/categories/page/1/index.html
create mode 100644 content/community.html
create mode 100644 content/community/index.html
create mode 100644 content/documentation/flink-cdc-master/index.html
create mode 100644 content/documentation/flink-cdc-stable/index.html
create mode 100644 content/documentation/flink-kubernetes-operator-master/index.html
create mode 100644 content/documentation/flink-kubernetes-operator-stable/index.html
create mode 100644 content/documentation/flink-master/index.html
create mode 100644 content/documentation/flink-preview/index.html
create mode 100644 content/documentation/flink-stable/index.html
create mode 100644 content/documentation/flink-stateful-functions-master/index.html
create mode 100644 content/documentation/flink-stateful-functions-stable/index.html
create mode 100644 content/documentation/flinkml-master/index.html
create mode 100644 content/documentation/flinkml-stable/index.html
create mode 100644 content/documentation/index.html
create mode 100644 content/documentation/index.xml
create mode 100644 content/downloads/index.html
create mode 100644 content/ecosystem/2020/02/22/apache-beam-how-beam-runs-on-top-of-flink.html
create mode 100644 content/ecosystem/2020/06/23/flink-on-zeppelin-part2.html
create mode 100644 content/en.search-data.min.2ddc259b4bee1b02cd4823af6cb949dbb89a952523e3286c74d59f87b513314a.js
create mode 100644 content/en.search.min.c34b8a3404aa0f9423d81bbba3f4b7195e00d999fc077279ac6672e2d7adbab6.js
create mode 100644 content/en/index.html
create mode 100644 content/en/sitemap.xml
copy {docs/static => content}/favicon.png (100%)
create mode 100644 content/favicon.svg
create mode 100644 content/feature/2019/09/13/state-processor-api.html
create mode 100644 content/features/2017/07/04/flink-rescalable-state.html
create mode 100644 content/features/2018/01/30/incremental-checkpointing.html
create mode 100644 content/features/2018/03/01/end-to-end-exactly-once-apache-flink.html
create mode 100644 content/features/2019/03/11/prometheus-monitoring.html
create mode 100644 content/features/2020/03/27/flink-for-data-warehouse.html
copy {docs/static => content}/fig/LICENSE.txt (100%)
create mode 100644 content/flexsearch.min.js
copy {docs/static => content}/flink-header-logo.svg (100%)
create mode 100644 content/flink-packages/index.html
copy {docs/static => content}/font-awesome/css/font-awesome.css (100%)
copy {docs/static => content}/font-awesome/css/font-awesome.min.css (100%)
copy {docs/static => content}/font-awesome/fonts/FontAwesome.otf (100%)
copy {docs/static => content}/font-awesome/fonts/fontawesome-webfont.eot (100%)
copy {docs/static => content}/font-awesome/fonts/fontawesome-webfont.svg (100%)
copy {docs/static => content}/font-awesome/fonts/fontawesome-webfont.ttf (100%)
copy {docs/static => content}/font-awesome/fonts/fontawesome-webfont.woff (100%)
copy {docs/static => content}/font-awesome/fonts/fontawesome-webfont.woff2 (100%)
copy {docs/static => content}/font-glyphicons/glyphicons-halflings-regular.eot (100%)
copy {docs/static => content}/font-glyphicons/glyphicons-halflings-regular.svg (100%)
copy {docs/static => content}/font-glyphicons/glyphicons-halflings-regular.ttf (100%)
copy {docs/static => content}/font-glyphicons/glyphicons-halflings-regular.woff (100%)
copy {docs/static => content}/font-glyphicons/glyphicons-halflings-regular.woff2 (100%)
create mode 100644 content/fonts/roboto-mono-v6-latin-regular.woff
create mode 100644 content/fonts/roboto-mono-v6-latin-regular.woff2
create mode 100644 content/fonts/roboto-v19-latin-300italic.woff
create mode 100644 content/fonts/roboto-v19-latin-300italic.woff2
create mode 100644 content/fonts/roboto-v19-latin-700.woff
create mode 100644 content/fonts/roboto-v19-latin-700.woff2
create mode 100644 content/fonts/roboto-v19-latin-regular.woff
create mode 100644 content/fonts/roboto-v19-latin-regular.woff2
copy {docs/static => content}/generated/rest_v1_dispatcher.yml (100%)
create mode 100644 content/getting-help.html
create mode 100644 content/getting-help/index.html
create mode 100644 content/getting-started/index.html
create mode 100644 content/getting-started/index.xml
create mode 100644 content/getting-started/training-course/index.html
create mode 100644 content/getting-started/with-flink-cdc/index.html
create mode 100644 content/getting-started/with-flink-kubernetes-operator/index.html
create mode 100644 content/getting-started/with-flink-ml/index.html
create mode 100644 content/getting-started/with-flink-stateful-functions/index.html
create mode 100644 content/getting-started/with-flink/index.html
create mode 100644 content/how-to-contribute/code-style-and-quality-common/index.html
create mode 100644 content/how-to-contribute/code-style-and-quality-components/index.html
create mode 100644 content/how-to-contribute/code-style-and-quality-formatting/index.html
create mode 100644 content/how-to-contribute/code-style-and-quality-java/index.html
create mode 100644 content/how-to-contribute/code-style-and-quality-preamble/index.html
create mode 100644 content/how-to-contribute/code-style-and-quality-pull-requests/index.html
create mode 100644 content/how-to-contribute/code-style-and-quality-scala/index.html
create mode 100644 content/how-to-contribute/contribute-code/index.html
create mode 100644 content/how-to-contribute/contribute-documentation/index.html
create mode 100644 content/how-to-contribute/documentation-style-guide/index.html
create mode 100644 content/how-to-contribute/getting-help/index.html
create mode 100644 content/how-to-contribute/improve-website/index.html
create mode 100644 content/how-to-contribute/index.html
create mode 100644 content/how-to-contribute/index.xml
create mode 100644 content/how-to-contribute/overview/index.html
create mode 100644 content/how-to-contribute/reviewing-prs/index.html
copy {docs/static => content}/img/alibaba-logo.png (100%)
copy {docs/static => content}/img/api-stack.png (100%)
copy {docs/static => content}/img/assets/WhatIsFlink.png (100%)
copy {docs/static => content}/img/assets/grep.png (100%)
copy {docs/static => content}/img/assets/hadoop-img.png (100%)
copy {docs/static => content}/img/assets/optimizer-visual.png (100%)
copy {docs/static => content}/img/assets/pagerank.pdf (100%)
copy {docs/static => content}/img/assets/pagerank.png (100%)
copy {docs/static => content}/img/blog/2019-02-21-monitoring-best-practices/fig-1.png (100%)
copy {docs/static => content}/img/blog/2019-02-21-monitoring-best-practices/fig-2.png (100%)
copy {docs/static => content}/img/blog/2019-02-21-monitoring-best-practices/fig-3.png (100%)
copy {docs/static => content}/img/blog/2019-02-21-monitoring-best-practices/fig-4.png (100%)
copy {docs/static => content}/img/blog/2019-02-21-monitoring-best-practices/fig-5.png (100%)
copy {docs/static => content}/img/blog/2019-02-21-monitoring-best-practices/fig-6.png (100%)
copy {docs/static => content}/img/blog/2019-02-21-monitoring-best-practices/fig-7.png (100%)
copy {docs/static => content}/img/blog/2019-02-21-monitoring-best-practices/fig-8.png (100%)
copy {docs/static => content}/img/blog/2019-03-11-prometheus-monitoring/prometheus.png (100%)
copy {docs/static => content}/img/blog/2019-03-11-prometheus-monitoring/prometheusalerts.png (100%)
copy {docs/static => content}/img/blog/2019-03-11-prometheus-monitoring/prometheusexamplejob.png (100%)
copy {docs/static => content}/img/blog/2019-05-13-temporal-tables/TemporalTables1.png (100%)
copy {docs/static => content}/img/blog/2019-05-13-temporal-tables/TemporalTables2.png (100%)
copy {docs/static => content}/img/blog/2019-05-13-temporal-tables/TemporalTables3.png (100%)
copy {docs/static => content}/img/blog/2019-05-13-temporal-tables/TemporalTables4.png (100%)
copy {docs/static => content}/img/blog/2019-06-05-network-stack/flink-network-stack1.png (100%)
copy {docs/static => content}/img/blog/2019-06-05-network-stack/flink-network-stack2.png (100%)
copy {docs/static => content}/img/blog/2019-06-05-network-stack/flink-network-stack3.png (100%)
copy {docs/static => content}/img/blog/2019-06-05-network-stack/flink-network-stack4.png (100%)
copy {docs/static => content}/img/blog/2019-06-05-network-stack/flink-network-stack5.png (100%)
copy {docs/static => content}/img/blog/2019-06-05-network-stack/flink-network-stack6.png (100%)
copy {docs/static => content}/img/blog/2019-06-05-network-stack/flink-network-stack7.png (100%)
copy {docs/static => content}/img/blog/2019-06-05-network-stack/flink-network-stack8.png (100%)
copy {docs/static => content}/img/blog/2019-06-05-network-stack/flink-network-stack9.png (100%)
copy {docs/static => content}/img/blog/2019-07-23-network-stack-2/back_pressure_sampling_high.png (100%)
copy {docs/static => content}/img/blog/2019-09-05-flink-community-update/2019-09-05-flink-community-update_1.png (100%)
copy {docs/static => content}/img/blog/2019-09-05-flink-community-update/2019-09-05-flink-community-update_2.png (100%)
copy {docs/static => content}/img/blog/2019-09-05-flink-community-update/2019-09-05-flink-community-update_3.png (100%)
copy {docs/static => content}/img/blog/2019-09-13-state-processor-api-blog/application-my-app-state-processor-api.png (100%)
copy {docs/static => content}/img/blog/2019-09-13-state-processor-api-blog/database-my-app-state-processor-api.png (100%)
copy {docs/static => content}/img/blog/2019-11-06-flink-kubernetes-kudo/flink-dashboard-ui.png (100%)
copy {docs/static => content}/img/blog/2019-11-06-flink-kubernetes-kudo/flink-kudo-architecture.png (100%)
copy {docs/static => content}/img/blog/2019-11-19-demo-fraud-detection/architecture.png (100%)
copy {docs/static => content}/img/blog/2019-11-19-demo-fraud-detection/end-to-end.png (100%)
copy {docs/static => content}/img/blog/2019-11-19-demo-fraud-detection/shuffle_function_1.png (100%)
copy {docs/static => content}/img/blog/2019-11-19-demo-fraud-detection/ui.png (100%)
copy {docs/static => content}/img/blog/2020-01-29-state-unlocked-interacting-with-state-in-apache-flink/managing-state-in-flink-state-processor-api-visual-1.png (100%)
copy {docs/static => content}/img/blog/2020-01-29-state-unlocked-interacting-with-state-in-apache-flink/managing-state-in-flink-state-processor-api-visual-2.png (100%)
copy {docs/static => content}/img/blog/2020-01-29-state-unlocked-interacting-with-state-in-apache-flink/managing-state-in-flink-visual-1.png (100%)
copy {docs/static => content}/img/blog/2020-01-29-state-unlocked-interacting-with-state-in-apache-flink/managing-state-in-flink-visual-2.png (100%)
copy {docs/static => content}/img/blog/2020-02-11-release-1.10.0/flink_1.10_nativek8s.png (100%)
copy {docs/static => content}/img/blog/2020-02-11-release-1.10.0/flink_1.10_pyflink.gif (100%)
copy {docs/static => content}/img/blog/2020-02-11-release-1.10.0/flink_1.10_zeppelin.png (100%)
copy {docs/static => content}/img/blog/2020-02-22-beam-on-flink/classic-flink-runner-beam.png (100%)
copy {docs/static => content}/img/blog/2020-02-22-beam-on-flink/flink-runner-beam-beam-vision.png (100%)
copy {docs/static => content}/img/blog/2020-02-22-beam-on-flink/flink-runner-beam-language-portability-architecture.png (100%)
copy {docs/static => content}/img/blog/2020-02-22-beam-on-flink/flink-runner-beam-language-portability.png (100%)
copy {docs/static => content}/img/blog/2020-02-22-beam-on-flink/flink-runner-beam-runner-translation-paths.png (100%)
copy {docs/static => content}/img/blog/2020-02-22-beam-on-flink/flink-runner-beam-serializers-coders.png (100%)
copy {docs/static => content}/img/blog/2020-03-30-flink-community-update/2020-03-30-flink-community-update_1.png (100%)
copy {docs/static => content}/img/blog/2020-03-30-flink-community-update/2020-03-30-flink-community-update_2.png (100%)
copy {docs/static => content}/img/blog/2020-03-30-flink-community-update/2020-03-30-flink-community-update_3.png (100%)
copy {docs/static => content}/img/blog/2020-04-07-release-statefun-2.0.0/image10.png (100%)
copy {docs/static => content}/img/blog/2020-04-07-release-statefun-2.0.0/image11.png (100%)
copy {docs/static => content}/img/blog/2020-04-07-release-statefun-2.0.0/image2.png (100%)
copy {docs/static => content}/img/blog/2020-04-07-release-statefun-2.0.0/image3.png (100%)
copy {docs/static => content}/img/blog/2020-04-07-release-statefun-2.0.0/image5.png (100%)
copy {docs/static => content}/img/blog/2020-04-07-release-statefun-2.0.0/image6.png (100%)
copy {docs/static => content}/img/blog/2020-04-07-release-statefun-2.0.0/image7.png (100%)
copy {docs/static => content}/img/blog/2020-04-07-release-statefun-2.0.0/image8.png (100%)
copy {docs/static => content}/img/blog/2020-04-07-release-statefun-2.0.0/image9.png (100%)
copy {docs/static => content}/img/blog/2020-04-09-pyflink-udfs/pyflink-udf-architecture.png (100%)
copy {docs/static => content}/img/blog/2020-04-09-pyflink-udfs/roadmap-of-pyflink.png (100%)
copy {docs/static => content}/img/blog/2020-04-15-flink-serialization-performance-results.svg (100%)
copy {docs/static => content}/img/blog/2020-04-21-memory-management-improvements-flink-1.10/flink-memory-setup.svg (100%)
copy {docs/static => content}/img/blog/2020-04-21-memory-management-improvements-flink-1.10/total-process-memory.svg (100%)
copy {docs/static => content}/img/blog/2020-05-04-season-of-docs/2020-04-30-season-of-docs_1.png (100%)
copy {docs/static => content}/img/blog/2020-05-06-community-update/2020-05-06-community-update_1.png (100%)
copy {docs/static => content}/img/blog/2020-05-06-community-update/2020-05-06-community-update_2.png (100%)
copy {docs/static => content}/img/blog/2020-06-10-community-update/FlinkForward_Banner_CFP_Global_2020.png (100%)
copy {docs/static => content}/img/blog/2020-06-15-flink-on-zeppelin/create_sink.png (100%)
copy {docs/static => content}/img/blog/2020-06-15-flink-on-zeppelin/create_source.png (100%)
copy {docs/static => content}/img/blog/2020-06-15-flink-on-zeppelin/etl.png (100%)
copy {docs/static => content}/img/blog/2020-06-15-flink-on-zeppelin/preview.png (100%)
copy {docs/static => content}/img/blog/2020-06-23-flink-on-zeppelin-part2/flink_append_mode.gif (100%)
copy {docs/static => content}/img/blog/2020-06-23-flink-on-zeppelin-part2/flink_python_udf.png (100%)
copy {docs/static => content}/img/blog/2020-06-23-flink-on-zeppelin-part2/flink_scala_udf.png (100%)
copy {docs/static => content}/img/blog/2020-06-23-flink-on-zeppelin-part2/flink_single_mode.gif (100%)
copy {docs/static => content}/img/blog/2020-06-23-flink-on-zeppelin-part2/flink_update_mode.gif (100%)
copy {docs/static => content}/img/blog/2020-07-06-release-1.11.0/image1.gif (100%)
copy {docs/static => content}/img/blog/2020-07-06-release-1.11.0/image2.png (100%)
copy {docs/static => content}/img/blog/2020-07-06-release-1.11.0/image3.png (100%)
copy {docs/static => content}/img/blog/2020-07-06-release-1.11.0/image4.png (100%)
copy {docs/static => content}/img/blog/2020-07-14-application-mode/application.png (100%)
copy {docs/static => content}/img/blog/2020-07-14-application-mode/session-per-job.png (100%)
copy {docs/static => content}/img/blog/2020-07-28-flink-sql-demo/image1.gif (100%)
copy {docs/static => content}/img/blog/2020-07-28-flink-sql-demo/image3.png (100%)
copy {docs/static => content}/img/blog/2020-07-28-flink-sql-demo/image4.jpg (100%)
copy {docs/static => content}/img/blog/2020-07-28-flink-sql-demo/image5.jpg (100%)
copy {docs/static => content}/img/blog/2020-07-28-flink-sql-demo/image6.jpg (100%)
copy {docs/static => content}/img/blog/2020-07-28-flink-sql-demo/image7.jpg (100%)
copy {docs/static => content}/img/blog/2020-07-28-flink-sql-demo/image8.jpg (100%)
copy {docs/static => content}/img/blog/2020-07-29-community-update/2020-07-29_releases.png (100%)
copy {docs/static => content}/img/blog/2020-08-04-pyflink-pandas/mission-of-pyFlink.gif (100%)
copy {docs/static => content}/img/blog/2020-08-04-pyflink-pandas/python-scientific-stack.png (100%)
copy {docs/static => content}/img/blog/2020-08-04-pyflink-pandas/vm-communication.png (100%)
copy {docs/static => content}/img/blog/2020-08-06-accelerate-with-external-resources/ai-workflow.png (100%)
copy {docs/static => content}/img/blog/2020-08-18-statefun/1.png (100%)
copy {docs/static => content}/img/blog/2020-08-18-statefun/2.png (100%)
copy {docs/static => content}/img/blog/2020-08-18-statefun/3_1.png (100%)
copy {docs/static => content}/img/blog/2020-08-18-statefun/3_2.png (100%)
copy {docs/static => content}/img/blog/2020-08-18-statefun/5.png (100%)
copy {docs/static => content}/img/blog/2020-08-18-statefun/6.png (100%)
copy {docs/static => content}/img/blog/2020-08-18-statefun/7.png (100%)
copy {docs/static => content}/img/blog/2020-08-18-statefun/rack.png (100%)
copy {docs/static => content}/img/blog/2020-09-01-flink-1.11-memory-management-improvements/total-process-memory-flink-1.11.png (100%)
copy {docs/static => content}/img/blog/2020-09-04-community-update/2020-09-04-community-update_1.png (100%)
copy {docs/static => content}/img/blog/2020-10-13-stateful-serverless-internals/abstract-deployment.png (100%)
copy {docs/static => content}/img/blog/2020-10-13-stateful-serverless-internals/aws-deployment.png (100%)
copy {docs/static => content}/img/blog/2020-10-13-stateful-serverless-internals/protocol-walkthrough-1.png (100%)
copy {docs/static => content}/img/blog/2020-10-13-stateful-serverless-internals/request-reply-protocol.png (100%)
copy {docs/static => content}/img/blog/2020-10-13-stateful-serverless-internals/shopping-cart-overview.png (100%)
copy {docs/static => content}/img/blog/2020-10-15-from-aligned-to-unaligned-checkpoints-part-1/from-aligned-to-unaligned-checkpoints-part-1-1.png (100%)
copy {docs/static => content}/img/blog/2020-10-15-from-aligned-to-unaligned-checkpoints-part-1/from-aligned-to-unaligned-checkpoints-part-1-2.png (100%)
copy {docs/static => content}/img/blog/2020-10-15-from-aligned-to-unaligned-checkpoints-part-1/from-aligned-to-unaligned-checkpoints-part-1-3.png (100%)
copy {docs/static => content}/img/blog/2020-10-15-from-aligned-to-unaligned-checkpoints-part-1/from-aligned-to-unaligned-checkpoints-part-1-4.png (100%)
copy {docs/static => content}/img/blog/2020-10-15-from-aligned-to-unaligned-checkpoints-part-1/from-aligned-to-unaligned-checkpoints-part-1-5.png (100%)
copy {docs/static => content}/img/blog/2020-12-02-pipelined-region-sheduling/batch-job-example.png (100%)
copy {docs/static => content}/img/blog/2020-12-02-pipelined-region-sheduling/pipelined-regions.png (100%)
copy {docs/static => content}/img/blog/2020-12-02-pipelined-region-sheduling/sql-join-job-example.png (100%)
copy {docs/static => content}/img/blog/2020-12-02-pipelined-region-sheduling/streaming-job-example.png (100%)
copy {docs/static => content}/img/blog/2020-12-08-release-1.12.0/1.png (100%)
copy {docs/static => content}/img/blog/2020-12-08-release-1.12.0/2.png (100%)
copy {docs/static => content}/img/blog/2021-01-07-pulsar-flink/pulsar-flink-batch-stream.png (100%)
copy {docs/static => content}/img/blog/2021-01-07-pulsar-flink/pulsar-key-shared.png (100%)
copy {docs/static => content}/img/blog/2021-01-18-rocksdb/RocksDB-in-Flink.png (100%)
copy {docs/static => content}/img/blog/2021-02-10-native-k8s-with-ha/native-k8s-architecture.png (100%)
copy {docs/static => content}/img/blog/2021-02-10-native-k8s-with-ha/native-k8s-ha-architecture.png (100%)
copy {docs/static => content}/img/blog/2021-03-11-batch-execution-mode/batch-execution.png (100%)
copy {docs/static => content}/img/blog/2021-03-11-batch-execution-mode/stream-execution.png (100%)
copy {docs/static => content}/img/blog/2021-04-reactive-mode/arch.png (100%)
copy {docs/static => content}/img/blog/2021-04-reactive-mode/high-timeout.png (100%)
copy {docs/static => content}/img/blog/2021-04-reactive-mode/intro.svg (100%)
copy {docs/static => content}/img/blog/2021-04-reactive-mode/result.png (100%)
copy {docs/static => content}/img/blog/2021-05-03-release-1.13.0/7.png (100%)
copy {docs/static => content}/img/blog/2021-05-03-release-1.13.0/bottleneck.png (100%)
copy {docs/static => content}/img/blog/2021-07-07-backpressure/animated.png (100%)
copy {docs/static => content}/img/blog/2021-07-07-backpressure/bottleneck-zoom.png (100%)
copy {docs/static => content}/img/blog/2021-07-07-backpressure/simple-example.png (100%)
copy {docs/static => content}/img/blog/2021-07-07-backpressure/sliding-window.png (100%)
copy {docs/static => content}/img/blog/2021-07-07-backpressure/source-task-busy.png (100%)
copy {docs/static => content}/img/blog/2021-07-07-backpressure/subtasks.png (100%)
copy {docs/static => content}/img/blog/2021-09-07-connector-table-sql-api/VVP-SQL-Editor.png (100%)
copy {docs/static => content}/img/blog/2021-09-07-connector-table-sql-api/flink-sql-client.png (100%)
copy {docs/static => content}/img/blog/2021-09-25-release-1.14.0/buffer_debloating.svg (100%)
copy {docs/static => content}/img/blog/2021-09-25-release-1.14.0/fine_grained_resource_management.png (100%)
copy {docs/static => content}/img/blog/2021-09-25-release-1.14.0/fine_grained_resource_management.svg (100%)
copy {docs/static => content}/img/blog/2021-09-25-release-1.14.0/hybrid_source.png (100%)
copy {docs/static => content}/img/blog/2021-10-26-sort-shuffle/1.jpg (100%)
copy {docs/static => content}/img/blog/2021-10-26-sort-shuffle/2.jpg (100%)
copy {docs/static => content}/img/blog/2021-10-26-sort-shuffle/3.jpg (100%)
copy {docs/static => content}/img/blog/2021-10-26-sort-shuffle/4.jpg (100%)
copy {docs/static => content}/img/blog/2021-10-26-sort-shuffle/5.jpg (100%)
copy {docs/static => content}/img/blog/2021-11-03-flink-backward/1.14-weather.png (100%)
copy {docs/static => content}/img/blog/2022-01-05-scheduler-performance/1-distribution-pattern.svg (100%)
copy {docs/static => content}/img/blog/2022-01-05-scheduler-performance/2-groups.svg (100%)
copy {docs/static => content}/img/blog/2022-01-05-scheduler-performance/3-how-shuffle-descriptors-are-distributed.svg (100%)
copy {docs/static => content}/img/blog/2022-01-05-scheduler-performance/4-pipelined-region.svg (100%)
copy {docs/static => content}/img/blog/2022-01-05-scheduler-performance/5-scheduling-deadlock.svg (100%)
copy {docs/static => content}/img/blog/2022-01-05-scheduler-performance/6-building-pipelined-region.svg (100%)
copy {docs/static => content}/img/blog/2022-02-22-scala-free/flink-scala-3.jpeg (100%)
copy {docs/static => content}/img/blog/2022-04-03-release-kubernetes-operator-0.1.0/overview.svg (100%)
copy {docs/static => content}/img/blog/2022-05-06-pyflink-1.15-thread-mode/pemja.png (100%)
copy {docs/static => content}/img/blog/2022-05-06-pyflink-1.15-thread-mode/pyflink-architecture-overview.png (100%)
copy {docs/static => content}/img/blog/2022-05-06-pyflink-1.15-thread-mode/pyflink-checkpoint-time.jpg (100%)
copy {docs/static => content}/img/blog/2022-05-06-pyflink-1.15-thread-mode/pyflink-latency.jpg (100%)
copy {docs/static => content}/img/blog/2022-05-06-pyflink-1.15-thread-mode/pyflink-performance.jpg (100%)
copy {docs/static => content}/img/blog/2022-05-06-pyflink-1.15-thread-mode/pyflink-process-mode.png (100%)
copy {docs/static => content}/img/blog/2022-05-06-pyflink-1.15-thread-mode/pyflink-thread-mode.png (100%)
copy {docs/static => content}/img/blog/2022-05-06-restore-modes/restore-mode-claim.svg (100%)
copy {docs/static => content}/img/blog/2022-05-06-restore-modes/restore-mode-legacy.svg (100%)
copy {docs/static => content}/img/blog/2022-05-06-restore-modes/restore-mode-no_claim.svg (100%)
copy {docs/static => content}/img/blog/2022-05-18-latency-part1/buffer-timeout.png (100%)
copy {docs/static => content}/img/blog/2022-05-18-latency-part1/choose-state-backend.png (100%)
copy {docs/static => content}/img/blog/2022-05-18-latency-part1/increase-parallelism.png (100%)
copy {docs/static => content}/img/blog/2022-05-18-latency-part1/scenario1-simple.png (100%)
copy {docs/static => content}/img/blog/2022-05-18-latency-part1/scenario2-eventtime.png (100%)
copy {docs/static => content}/img/blog/2022-05-18-latency-part1/watermark-interval.png (100%)
copy {docs/static => content}/img/blog/2022-05-23-latency-part2/async-io.png (100%)
copy {docs/static => content}/img/blog/2022-05-23-latency-part2/enriching-with-async-io.png (100%)
copy {docs/static => content}/img/blog/2022-05-23-latency-part2/spread-work.png (100%)
copy {docs/static => content}/img/blog/2022-05-30-changelog-state-backend/changelog-simple.png (100%)
copy {docs/static => content}/img/blog/2022-05-30-changelog-state-backend/checkpoint-timing.png (100%)
copy {docs/static => content}/img/blog/2022-05-30-changelog-state-backend/failing-task.png (100%)
copy {docs/static => content}/img/blog/2022-05-30-changelog-state-backend/log_checkpoints_1.png (100%)
copy {docs/static => content}/img/blog/2022-05-30-changelog-state-backend/log_checkpoints_2.png (100%)
copy {docs/static => content}/img/blog/2022-05-30-changelog-state-backend/log_checkpoints_3.png (100%)
copy {docs/static => content}/img/blog/2022-06-17-adaptive-batch-scheduler/1-overall-structure.png (100%)
copy {docs/static => content}/img/blog/2022-06-17-adaptive-batch-scheduler/2-dynamic-graph.png (100%)
copy {docs/static => content}/img/blog/2022-06-17-adaptive-batch-scheduler/3-static-graph-subpartition-mapping.png (100%)
copy {docs/static => content}/img/blog/2022-06-17-adaptive-batch-scheduler/4-dynamic-graph-subpartition-mapping.png (100%)
copy {docs/static => content}/img/blog/2022-06-17-adaptive-batch-scheduler/5-auto-rebalance.png (100%)
copy {docs/static => content}/img/blog/2022-06-17-adaptive-batch-scheduler/parallelism-formula.png (100%)
copy {docs/static => content}/img/blog/2022-06-17-adaptive-batch-scheduler/range-formula.png (100%)
copy {docs/static => content}/img/blog/2022-07-11-final-checkpoint/checkpoint_format.png (100%)
copy {docs/static => content}/img/blog/2022-07-11-final-checkpoint/checkpoint_trigger.png (100%)
copy {docs/static => content}/img/blog/2022-07-11-final-checkpoint/example_job.png (100%)
copy {docs/static => content}/img/blog/2022-07-11-final-checkpoint/example_job_finish.png (100%)
copy {docs/static => content}/img/blog/2022-07-11-final-checkpoint/finish_cmp.png (100%)
copy {docs/static => content}/img/blog/2022-07-11-final-checkpoint/stream_batch_cmp.png (100%)
copy {docs/static => content}/img/blog/2023-01-20-delegation-token-framework/delegation_token_framework.svg (100%)
copy {docs/static => content}/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig1.png (100%)
copy {docs/static => content}/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig2.png (100%)
copy {docs/static => content}/img/blog/2023-02-27-release-kubernetes-operator-1.4.0/autoscaler_fig3.png (100%)
copy {docs/static => content}/img/blog/2023-03-23-release-1.17.0/beneifts-after-enabling-gic-in-wordcount-case.png (100%)
copy {docs/static => content}/img/blog/2023-03-23-release-1.17.0/costs-after-enabling-gic-in-wordcount-case.png (100%)
copy {docs/static => content}/img/blog/2023-03-23-release-1.17.0/subtask-level-flame-graph.png (100%)
copy {docs/static => content}/img/blog/2023-03-23-release-1.17.0/tpc-ds-benchmark.png (100%)
copy {docs/static => content}/img/blog/2023-05-03-howto-create-batch-source/source_components.svg (100%)
copy {docs/static => content}/img/blog/2023-05-03-howto-create-batch-source/source_reader.svg (100%)
copy {docs/static => content}/img/blog/2023-10-24-release-1.18.0/backpressure_monitor.png (100%)
copy {docs/static => content}/img/blog/2023-10-24-release-1.18.0/rescaling_performance.png (100%)
copy {docs/static => content}/img/blog/2023-10-24-release-1.18.0/tpc-ds-benchmark.png (100%)
copy {docs/static => content}/img/blog/2024-03-18-release-1.19.0/minibatch_join.png (100%)
copy {docs/static => content}/img/blog/2024-03-18-release-1.19.0/profiling-res.png (100%)
copy {docs/static => content}/img/blog/2024-03-18-release-1.19.0/profiling.png (100%)
copy {docs/static => content}/img/blog/2024-11-25-whats-new-aws-connectors/kinesis_records_sharding.png (100%)
copy {docs/static => content}/img/blog/2024-11-25-whats-new-aws-connectors/kinesis_resharding.png (100%)
copy {docs/static => content}/img/blog/2024-12-05-introducing-new-prometheus-connector/prometheus-data-model.png (100%)
copy {docs/static => content}/img/blog/GSA-plan.png (100%)
copy {docs/static => content}/img/blog/appeared-in.png (100%)
copy {docs/static => content}/img/blog/batch-fine-grained-fault-tolerance/example.png (100%)
copy {docs/static => content}/img/blog/batch-fine-grained-fault-tolerance/job.png (100%)
copy {docs/static => content}/img/blog/batch-fine-grained-fault-tolerance/recov.png (100%)
copy {docs/static => content}/img/blog/batch-fine-grained-fault-tolerance/result.png (100%)
copy {docs/static => content}/img/blog/blog_basic_window.png (100%)
copy {docs/static => content}/img/blog/blog_data_driven.png (100%)
copy {docs/static => content}/img/blog/blog_multi_input.png (100%)
copy {docs/static => content}/img/blog/blog_social_media.png (100%)
copy {docs/static => content}/img/blog/blog_stream_join.png (100%)
copy {docs/static => content}/img/blog/broadcastState/fig1.png (100%)
copy {docs/static => content}/img/blog/broadcastState/fig2.png (100%)
copy {docs/static => content}/img/blog/broadcastState/fig3.png (100%)
copy {docs/static => content}/img/blog/broadcastState/fig4.png (100%)
copy {docs/static => content}/img/blog/broadcastState/fig5.png (100%)
copy {docs/static => content}/img/blog/broadcastState/fig6.png (100%)
copy {docs/static => content}/img/blog/cep-monitoring.svg (100%)
copy {docs/static => content}/img/blog/code-growth.png (100%)
copy {docs/static => content}/img/blog/commit-stats.png (100%)
copy {docs/static => content}/img/blog/community-growth.png (100%)
copy {docs/static => content}/img/blog/data-serialization.png (100%)
copy {docs/static => content}/img/blog/dynamic-tables/append-mode.png (100%)
copy {docs/static => content}/img/blog/dynamic-tables/query-append-out.png (100%)
copy {docs/static => content}/img/blog/dynamic-tables/query-groupBy-cnt.png (100%)
copy {docs/static => content}/img/blog/dynamic-tables/query-groupBy-window-cnt.png (100%)
copy {docs/static => content}/img/blog/dynamic-tables/query-update-out.png (100%)
copy {docs/static => content}/img/blog/dynamic-tables/redo-mode.png (100%)
copy {docs/static => content}/img/blog/dynamic-tables/replace-mode.png (100%)
copy {docs/static => content}/img/blog/dynamic-tables/stream-query-stream.png (100%)
copy {docs/static => content}/img/blog/dynamic-tables/streams.png (100%)
copy {docs/static => content}/img/blog/dynamic-tables/undo-redo-mode.png (100%)
copy {docs/static => content}/img/blog/emr-firefoxsettings.png (100%)
copy {docs/static => content}/img/blog/emr-hadoopversion.png (100%)
copy {docs/static => content}/img/blog/emr-jobmanager.png (100%)
copy {docs/static => content}/img/blog/emr-running.png (100%)
copy {docs/static => content}/img/blog/emr-security.png (100%)
copy {docs/static => content}/img/blog/emr-yarnappmaster.png (100%)
copy {docs/static => content}/img/blog/eo-post-graphic-1.png (100%)
copy {docs/static => content}/img/blog/eo-post-graphic-2.png (100%)
copy {docs/static => content}/img/blog/eo-post-graphic-3.png (100%)
copy {docs/static => content}/img/blog/eo-post-graphic-4.png (100%)
copy {docs/static => content}/img/blog/eo-post-graphic-5.png (100%)
copy {docs/static => content}/img/blog/feature-timeline.png (100%)
copy {docs/static => content}/img/blog/ff-speakers.png (100%)
copy {docs/static => content}/img/blog/flink-1.0.png (100%)
copy {docs/static => content}/img/blog/flink-docker/flink-docker.gif (100%)
copy {docs/static => content}/img/blog/flink-dow-2016.png (100%)
copy {docs/static => content}/img/blog/flink-dow-2017.png (100%)
copy {docs/static => content}/img/blog/flink-forward-banner.png (100%)
copy {docs/static => content}/img/blog/flink-hod-2016.png (100%)
copy {docs/static => content}/img/blog/flink-hod-2017.png (100%)
copy {docs/static => content}/img/blog/flink-lines-of-code-2016.png (100%)
copy {docs/static => content}/img/blog/flink-lines-of-code-2017.png (100%)
copy {docs/static => content}/img/blog/flink-meetups-dec2016.png (100%)
copy {docs/static => content}/img/blog/flink-meetups-dec2017.png (100%)
copy {docs/static => content}/img/blog/flink-pulsar-sql-blog-post-visual-primitive-avro-schema.png (100%)
copy {docs/static => content}/img/blog/flink-pulsar-sql-blog-post-visual.png (100%)
copy {docs/static => content}/img/blog/flink-releases-2016.png (100%)
copy {docs/static => content}/img/blog/flink-releases-2017.png (100%)
copy {docs/static => content}/img/blog/flink-stack.png (100%)
copy {docs/static => content}/img/blog/flink-storm.png (100%)
copy {docs/static => content}/img/blog/flinkSer-int-gc.png (100%)
copy {docs/static => content}/img/blog/flinkSer-int-mem.png (100%)
copy {docs/static => content}/img/blog/github-stats-2016.png (100%)
copy {docs/static => content}/img/blog/github-stats-2017.png (100%)
copy {docs/static => content}/img/blog/hadoop-summit.png (100%)
copy {docs/static => content}/img/blog/hcompat-flow.png (100%)
copy {docs/static => content}/img/blog/hcompat-logos.png (100%)
copy {docs/static => content}/img/blog/incremental_cp_impl_example.svg (100%)
copy {docs/static => content}/img/blog/iteration.png (100%)
copy {docs/static => content}/img/blog/joins-broadcast.png (100%)
copy {docs/static => content}/img/blog/joins-dist-perf.png (100%)
copy {docs/static => content}/img/blog/joins-hhj.png (100%)
copy {docs/static => content}/img/blog/joins-memmgmt.png (100%)
copy {docs/static => content}/img/blog/joins-repartition.png (100%)
copy {docs/static => content}/img/blog/joins-single-perf.png (100%)
copy {docs/static => content}/img/blog/joins-smj.png (100%)
copy {docs/static => content}/img/blog/key-groups.svg (100%)
copy {docs/static => content}/img/blog/kryoSer-int-gc.png (100%)
copy {docs/static => content}/img/blog/kryoSer-int-mem.png (100%)
copy {docs/static => content}/img/blog/list-checkpointed.svg (100%)
copy {docs/static => content}/img/blog/meetup-map.png (100%)
copy {docs/static => content}/img/blog/memory-alloc.png (100%)
copy {docs/static => content}/img/blog/memory-mgmt.png (100%)
copy {docs/static => content}/img/blog/neighborhood.png (100%)
copy {docs/static => content}/img/blog/new-dashboard-screenshot.png (100%)
copy {docs/static => content}/img/blog/objHeap-int-gc.png (100%)
copy {docs/static => content}/img/blog/objHeap-int-mem.png (100%)
copy {docs/static => content}/img/blog/patterns-blog-2/broadcast.png (100%)
copy {docs/static => content}/img/blog/patterns-blog-2/forward.png (100%)
copy {docs/static => content}/img/blog/patterns-blog-2/hash.png (100%)
copy {docs/static => content}/img/blog/patterns-blog-2/job-graph.png (100%)
copy {docs/static => content}/img/blog/patterns-blog-2/rebalance.png (100%)
copy {docs/static => content}/img/blog/patterns-blog-2/rule-dsl.png (100%)
copy {docs/static => content}/img/blog/patterns-blog-3/evaluation-delays.png (100%)
copy {docs/static => content}/img/blog/patterns-blog-3/keyed-state-scoping.png (100%)
copy {docs/static => content}/img/blog/patterns-blog-3/late-events.png (100%)
copy {docs/static => content}/img/blog/patterns-blog-3/pre-aggregation.png (100%)
copy {docs/static => content}/img/blog/patterns-blog-3/sample-rule-definition.png (100%)
copy {docs/static => content}/img/blog/patterns-blog-3/time-windows.png (100%)
copy {docs/static => content}/img/blog/patterns-blog-3/type-kryo.png (100%)
copy {docs/static => content}/img/blog/patterns-blog-3/type-pojo.png (100%)
copy {docs/static => content}/img/blog/patterns-blog-3/widest-window.png (100%)
copy {docs/static => content}/img/blog/patterns-blog-3/window-clean-up.png (100%)
copy {docs/static => content}/img/blog/plan_visualizer1.png (100%)
copy {docs/static => content}/img/blog/plan_visualizer2.png (100%)
copy {docs/static => content}/img/blog/pulsar-flink/image-1.png (100%)
copy {docs/static => content}/img/blog/pulsar-flink/image-2.png (100%)
copy {docs/static => content}/img/blog/pulsar-flink/image-3.png (100%)
copy {docs/static => content}/img/blog/pulsar-flink/image-4.png (100%)
copy {docs/static => content}/img/blog/pulsar-flink/image-5.png (100%)
copy {docs/static => content}/img/blog/reduce-on-neighbors.png (100%)
copy {docs/static => content}/img/blog/release-19-flip1.png (100%)
copy {docs/static => content}/img/blog/release-19-stack.png (100%)
copy {docs/static => content}/img/blog/release-19-web1.png (100%)
copy {docs/static => content}/img/blog/release-19-web2.png (100%)
copy {docs/static => content}/img/blog/robomongo.png (100%)
copy {docs/static => content}/img/blog/session-windows.svg (100%)
copy {docs/static => content}/img/blog/smirk.png (100%)
copy {docs/static => content}/img/blog/sort-benchmark.png (100%)
copy {docs/static => content}/img/blog/sorting-binary-data-1.png (100%)
copy {docs/static => content}/img/blog/sorting-binary-data-2.png (100%)
copy {docs/static => content}/img/blog/sorting-binary-data-3.png (100%)
copy {docs/static => content}/img/blog/speaker-logos-ff2016.png (100%)
copy {docs/static => content}/img/blog/speaker-logos-ff2017.png (100%)
copy {docs/static => content}/img/blog/sql_client_demo.gif (100%)
copy {docs/static => content}/img/blog/sssp.png (100%)
copy {docs/static => content}/img/blog/stateless-stateful-streaming.svg (100%)
copy {docs/static => content}/img/blog/stream-sql/new-table-api.png (100%)
copy {docs/static => content}/img/blog/stream-sql/old-table-api.png (100%)
copy {docs/static => content}/img/blog/table-store/changelog-producer-full-compaction.png (100%)
copy {docs/static => content}/img/blog/table-store/table-store-0.2.png (100%)
copy {docs/static => content}/img/blog/table-store/table-store-architecture.png (100%)
copy {docs/static => content}/img/blog/unified-batch-streaming-blink/blink-flink-tpch.png (100%)
copy {docs/static => content}/img/blog/unified-batch-streaming-blink/blink-spark-tpcds.png (100%)
copy {docs/static => content}/img/blog/unified-batch-streaming-blink/bounded-unbounded.png (100%)
copy {docs/static => content}/img/blog/unified-batch-streaming-blink/sort-performance.png (100%)
copy {docs/static => content}/img/blog/unified-batch-streaming-blink/stream-batch-joins.png (100%)
copy {docs/static => content}/img/blog/user-song-graph.png (100%)
copy {docs/static => content}/img/blog/user-song-to-user-user.png (100%)
copy {docs/static => content}/img/blog/vertex-centric-plan.png (100%)
copy {docs/static => content}/img/blog/window-intro/window-mechanics.png (100%)
copy {docs/static => content}/img/blog/window-intro/window-rolling-sum.png (100%)
copy {docs/static => content}/img/blog/window-intro/window-sliding-window.png (100%)
copy {docs/static => content}/img/blog/window-intro/window-stream.png (100%)
copy {docs/static => content}/img/blog/window-intro/window-tumbling-window.png (100%)
copy {docs/static => content}/img/blog/window-intro/windows-keyed.png (100%)
copy {docs/static/img/blog/unified-batch-streaming-blink => content/img}/bounded-unbounded.png (100%)
copy {docs/static => content}/img/bouygues-logo.jpg (100%)
copy {docs/static => content}/img/capital-one-logo.png (100%)
copy {docs/static => content}/img/continuous_streams.png (100%)
copy {docs/static => content}/img/deployment-modes.png (100%)
copy {docs/static => content}/img/distributed_snapshots.png (100%)
copy {docs/static => content}/img/ecosystem_logos.png (100%)
copy {docs/static => content}/img/ericsson-logo.png (100%)
copy {docs/static => content}/img/exactly_once_state.png (100%)
copy {docs/static/img => content/img/features}/continuous_streams.png (100%)
copy {docs/static/img => content/img/features}/distributed_snapshots.png (100%)
copy {docs/static/img => content/img/features}/ecosystem_logos.png (100%)
copy {docs/static/img => content/img/features}/exactly_once_state.png (100%)
copy {docs/static => content}/img/features/iterations.png (100%)
copy {docs/static => content}/img/features/memory_heap_division.png (100%)
copy {docs/static => content}/img/features/one_runtime.png (100%)
copy {docs/static => content}/img/features/optimizer_choice.png (100%)
copy {docs/static => content}/img/features/out_of_order_stream.png (100%)
copy {docs/static => content}/img/features/streaming_performance.png (100%)
copy {docs/static => content}/img/features/windows.png (100%)
copy {docs/static => content}/img/flink-blog-icon-dark.svg (100%)
copy {docs/static => content}/img/flink-blog-icon-light.svg (100%)
copy {docs/static => content}/img/flink-compatibility-icon-dark.svg (100%)
copy {docs/static => content}/img/flink-compatibility-icon-light.svg (100%)
copy {docs/static => content}/img/flink-event-driven-icon-dark.svg (100%)
copy {docs/static => content}/img/flink-event-driven-icon-light.svg (100%)
copy {docs/static => content}/img/flink-forward-asia.png (100%)
copy {docs/static => content}/img/flink-forward.png (100%)
copy {docs/static => content}/img/flink-front-graphic-update.png (100%)
copy {docs/static => content}/img/flink-front-graphic.png (100%)
copy {docs/static => content}/img/flink-github-icon-dark.svg (100%)
copy {docs/static => content}/img/flink-github-icon-light.svg (100%)
copy {docs/static => content/img}/flink-header-logo.svg (100%)
copy {docs/static => content}/img/flink-home-graphic.png (100%)
copy {docs/static => content}/img/flink-layered-apis-icon-dark.svg (100%)
copy {docs/static => content}/img/flink-layered-apis-icon-light.svg (100%)
copy {docs/static => content}/img/flink-operational-icon-dark.svg (100%)
copy {docs/static => content}/img/flink-operational-icon-light.svg (100%)
copy {docs/static => content}/img/flink-performance-icon-dark.svg (100%)
copy {docs/static => content}/img/flink-performance-icon-light.svg (100%)
copy {docs/static => content}/img/flink-pipeline-etl-icon-dark.svg (100%)
copy {docs/static => content}/img/flink-pipeline-etl-icon-light.svg (100%)
copy {docs/static => content}/img/flink-scalability-icon-dark.svg (100%)
copy {docs/static => content}/img/flink-scalability-icon-light.svg (100%)
copy {docs/static => content}/img/flink-sine-wave-narrow.svg (100%)
copy {docs/static => content}/img/flink-sine-wave.svg (100%)
copy {docs/static => content}/img/flink-stack-frontpage.png (100%)
copy {docs/static => content}/img/flink-stack-small.png (100%)
copy {docs/static => content}/img/flink-stack.png (100%)
copy {docs/static => content}/img/flink-stream-batch-icon-dark.svg (100%)
copy {docs/static => content}/img/flink-stream-batch-icon-light.svg (100%)
copy {docs/static => content}/img/flink-summer-camp.png (100%)
copy {docs/static => content}/img/flink-twitter-icon-dark.svg (100%)
copy {docs/static => content}/img/flink-twitter-icon-light.svg (100%)
copy {docs/static => content}/img/flink_feature_radar.svg (100%)
copy {docs/static => content}/img/flink_feature_radar_2.svg (100%)
copy {docs/static => content}/img/flink_feature_radar_3.svg (100%)
copy {docs/static => content}/img/flink_feature_radar_4.svg (100%)
copy {docs/static => content}/img/flink_feature_radar_zh.svg (100%)
copy {docs/static => content}/img/flink_feature_radar_zh_2.svg (100%)
copy {docs/static => content}/img/flink_feature_radar_zh_3.svg (100%)
copy {docs/static => content}/img/flink_feature_radar_zh_4.svg (100%)
copy {docs/static => content}/img/function-state.png (100%)
copy {docs/static/img/features => content/img}/iterations.png (100%)
copy {docs/static => content}/img/king-logo.png (100%)
copy {docs/static => content}/img/local-state.png (100%)
copy {docs/static => content}/img/logo.zip (100%)
copy {docs/static => content}/img/logo/colors/flink_colors.pdf (100%)
copy {docs/static => content}/img/logo/colors/flink_colors.pptx (100%)
copy {docs/static => content}/img/logo/png/100/flink_squirrel_100_black.png (100%)
copy {docs/static => content}/img/logo/png/100/flink_squirrel_100_color.png (100%)
copy {docs/static => content}/img/logo/png/100/flink_squirrel_100_white.png (100%)
copy {docs/static => content}/img/logo/png/1000/flink1000_black.png (100%)
copy {docs/static => content}/img/logo/png/1000/flink1000_color_black.png (100%)
copy {docs/static => content}/img/logo/png/1000/flink1000_color_white.png (100%)
copy {docs/static => content}/img/logo/png/1000/flink1000_white.png (100%)
copy {docs/static => content}/img/logo/png/1000/flink_squirrel_1000.png (100%)
copy {docs/static => content}/img/logo/png/1000/flink_squirrel_black_1000.png (100%)
copy {docs/static => content}/img/logo/png/1000/flink_squirrel_white_1000.png (100%)
copy {docs/static => content}/img/logo/png/200/flink2_200_black.png (100%)
copy {docs/static => content}/img/logo/png/200/flink2_200_color_black.png (100%)
copy {docs/static => content}/img/logo/png/200/flink2_200_color_white.png (100%)
copy {docs/static => content}/img/logo/png/200/flink2_200_white.png (100%)
copy {docs/static => content}/img/logo/png/200/flink_squirrel_200_black.png (100%)
copy {docs/static => content}/img/logo/png/200/flink_squirrel_200_color.png (100%)
copy {docs/static => content}/img/logo/png/200/flink_squirrel_200_white.png (100%)
copy {docs/static => content}/img/logo/png/50/black_50.png (100%)
copy {docs/static => content}/img/logo/png/50/color_50.png (100%)
copy {docs/static => content}/img/logo/png/50/white_50.png (100%)
copy {docs/static => content}/img/logo/png/500/flink2_500_black.png (100%)
copy {docs/static => content}/img/logo/png/500/flink2_500_color_black.png (100%)
copy {docs/static => content}/img/logo/png/500/flink2_500_color_white.png (100%)
copy {docs/static => content}/img/logo/png/500/flink2_500_white.png (100%)
copy {docs/static => content}/img/logo/png/500/flink500_black.png (100%)
copy {docs/static => content}/img/logo/png/500/flink500_color_black.png (100%)
copy {docs/static => content}/img/logo/png/500/flink500_color_white.png (100%)
copy {docs/static => content}/img/logo/png/500/flink500_white.png (100%)
copy {docs/static => content}/img/logo/png/500/flink_3_500.png (100%)
copy {docs/static => content}/img/logo/png/500/flink_squirrel_500.png (100%)
copy {docs/static => content}/img/logo/png/500/flink_squirrel_500_black.png (100%)
copy {docs/static => content}/img/logo/png/500/flink_squirrel_500_white.png (100%)
copy {docs/static => content}/img/logo/psd/flink50.psd (100%)
copy {docs/static => content}/img/logo/psd/flink_1000.psd (100%)
copy {docs/static => content}/img/logo/psd/flink_3_500.psd (100%)
copy {docs/static => content}/img/logo/psd/flink_5000.psd (100%)
copy {docs/static => content}/img/logo/psd/flink_squirrel.psd (100%)
copy {docs/static => content}/img/logo/psd/flink_squirrel_1000.psd (100%)
copy {docs/static => content}/img/logo/rsz_1flink-stack.png (100%)
copy {docs/static => content}/img/logo/svg/black_outline.svg (100%)
copy {docs/static => content}/img/logo/svg/color_black.svg (100%)
copy {docs/static => content}/img/logo/svg/color_white.svg (100%)
copy {docs/static => content}/img/logo/svg/flink_logos.svg (100%)
copy {docs/static => content}/img/logo/svg/flink_logotypes.svg (100%)
copy {docs/static => content}/img/logo/svg/white_filled.svg (100%)
copy {docs/static => content}/img/managed-state.png (100%)
copy {docs/static/img/features => content/img}/memory_heap_division.png (100%)
copy {docs/static => content}/img/navbar-brand-logo.jpg (100%)
copy {docs/static => content}/img/navbar-brand-logo.png (100%)
copy {docs/static/img/features => content/img}/one_runtime.png (100%)
copy {docs/static/img/features => content/img}/optimizer_choice.png (100%)
copy {docs/static => content}/img/otto-group-logo.jpg (100%)
copy {docs/static/img/features => content/img}/out_of_order_stream.png (100%)
copy {docs/static => content}/img/parallel_dataflows.png (100%)
copy {docs/static => content}/img/poweredby/alibaba-logo.png (100%)
copy {docs/static => content}/img/poweredby/aws-logo.png (100%)
copy {docs/static => content}/img/poweredby/bettercloud-logo.png (100%)
copy {docs/static/img => content/img/poweredby}/bouygues-logo.jpg (100%)
copy {docs/static => content}/img/poweredby/capital-one-logo.png (100%)
copy {docs/static => content}/img/poweredby/comcast-logo.png (100%)
copy {docs/static => content}/img/poweredby/criteo-logo.png (100%)
copy {docs/static => content}/img/poweredby/didi-logo.png (100%)
copy {docs/static => content}/img/poweredby/dtrb-logo.png (100%)
copy {docs/static => content}/img/poweredby/ebay-logo.png (100%)
copy {docs/static => content}/img/poweredby/ericsson-logo.png (100%)
copy {docs/static => content}/img/poweredby/gojek-logo.png (100%)
copy {docs/static => content}/img/poweredby/huawei-logo.png (100%)
copy {docs/static => content}/img/poweredby/king-logo.png (100%)
copy {docs/static => content}/img/poweredby/klaviyo-logo.png (100%)
copy {docs/static => content}/img/poweredby/kuaishou-logo.jpg (100%)
copy {docs/static => content}/img/poweredby/lyft-logo.png (100%)
copy {docs/static => content}/img/poweredby/mediamath-logo.png (100%)
copy {docs/static => content}/img/poweredby/mux-logo.png (100%)
copy {docs/static => content}/img/poweredby/oppo-logo.png (100%)
copy {docs/static => content}/img/poweredby/otto-group-logo.png (100%)
copy {docs/static => content}/img/poweredby/ovh-logo.png (100%)
copy {docs/static => content}/img/poweredby/pinterest-logo.png (100%)
copy {docs/static => content}/img/poweredby/razorpay-logo.png (100%)
copy {docs/static => content}/img/poweredby/researchgate-logo.png (100%)
copy {docs/static => content}/img/poweredby/sktelecom-logo.png (100%)
copy {docs/static => content}/img/poweredby/telefonica-next-logo.png (100%)
copy {docs/static => content}/img/poweredby/tencent-logo.png (100%)
copy {docs/static => content}/img/poweredby/uber-logo.png (100%)
copy {docs/static => content}/img/poweredby/vip-logo.png (100%)
copy {docs/static => content}/img/poweredby/xiaomi-logo.png (100%)
copy {docs/static => content}/img/poweredby/yelp-logo.png (100%)
copy {docs/static => content}/img/poweredby/zalando-logo.jpg (100%)
copy {docs/static => content}/img/researchgate-logo.png (100%)
copy {docs/static => content}/img/rocksdb_rescaling_benchmark.png (100%)
copy {docs/static => content}/img/runtime.png (100%)
copy {docs/static => content}/img/savepoints.png (100%)
copy {docs/static => content}/img/source-transform-sink-update.png (100%)
copy {docs/static => content}/img/stack.png (100%)
copy {docs/static => content}/img/stateful-functions/favicon.png (100%)
copy {docs/static => content}/img/stateful-functions/flink_dataflow_graph.png (100%)
copy {docs/static => content}/img/stateful-functions/github-logo-link.png (100%)
copy {docs/static => content}/img/stateful-functions/model-score.svg (100%)
copy {docs/static => content}/img/stateful-functions/statefun-colocated.png (100%)
copy {docs/static => content}/img/stateful-functions/statefun-embedded.png (100%)
copy {docs/static => content}/img/stateful-functions/statefun-event-driven-db.png (100%)
copy {docs/static => content}/img/stateful-functions/statefun-overview.png (100%)
copy {docs/static => content}/img/stateful-functions/statefun-prop1.png (100%)
copy {docs/static => content}/img/stateful-functions/statefun-prop2.png (100%)
copy {docs/static => content}/img/stateful-functions/statefun-prop3.png (100%)
copy {docs/static => content}/img/stateful-functions/statefun-prop4.png (100%)
copy {docs/static => content}/img/stateful-functions/statefun-prop5.png (100%)
copy {docs/static => content}/img/stateful-functions/statefun-prop6.png (100%)
copy {docs/static => content}/img/stateful-functions/statefun-remote.png (100%)
copy {docs/static => content}/img/stateful-functions/twitter-logo-link.png (100%)
copy {docs/static/img/features => content/img}/streaming_performance.png (100%)
copy {docs/static => content}/img/test.drawio (100%)
copy {docs/static => content}/img/usecases-analytics.png (100%)
copy {docs/static => content}/img/usecases-datapipelines.png (100%)
copy {docs/static => content}/img/usecases-eventdrivenapps.png (100%)
copy {docs/static/img/features => content/img}/windows.png (100%)
copy {docs/static => content}/img/zalando-logo.png (100%)
create mode 100644 content/index.html
create mode 100644 content/index.xml
copy {docs/static => content}/js/anchor.min.js (100%)
copy {docs/static => content}/js/flink.js (100%)
copy {docs/static => content}/js/track-search-terms.js (100%)
create mode 100644 content/katex/auto-render.min.js
create mode 100644 content/katex/fonts/KaTeX_AMS-Regular.ttf
create mode 100644 content/katex/fonts/KaTeX_AMS-Regular.woff
create mode 100644 content/katex/fonts/KaTeX_AMS-Regular.woff2
create mode 100644 content/katex/fonts/KaTeX_Caligraphic-Bold.ttf
create mode 100644 content/katex/fonts/KaTeX_Caligraphic-Bold.woff
create mode 100644 content/katex/fonts/KaTeX_Caligraphic-Bold.woff2
create mode 100644 content/katex/fonts/KaTeX_Caligraphic-Regular.ttf
create mode 100644 content/katex/fonts/KaTeX_Caligraphic-Regular.woff
create mode 100644 content/katex/fonts/KaTeX_Caligraphic-Regular.woff2
create mode 100644 content/katex/fonts/KaTeX_Fraktur-Bold.ttf
create mode 100644 content/katex/fonts/KaTeX_Fraktur-Bold.woff
create mode 100644 content/katex/fonts/KaTeX_Fraktur-Bold.woff2
create mode 100644 content/katex/fonts/KaTeX_Fraktur-Regular.ttf
create mode 100644 content/katex/fonts/KaTeX_Fraktur-Regular.woff
create mode 100644 content/katex/fonts/KaTeX_Fraktur-Regular.woff2
create mode 100644 content/katex/fonts/KaTeX_Main-Bold.ttf
create mode 100644 content/katex/fonts/KaTeX_Main-Bold.woff
create mode 100644 content/katex/fonts/KaTeX_Main-Bold.woff2
create mode 100644 content/katex/fonts/KaTeX_Main-BoldItalic.ttf
create mode 100644 content/katex/fonts/KaTeX_Main-BoldItalic.woff
create mode 100644 content/katex/fonts/KaTeX_Main-BoldItalic.woff2
create mode 100644 content/katex/fonts/KaTeX_Main-Italic.ttf
create mode 100644 content/katex/fonts/KaTeX_Main-Italic.woff
create mode 100644 content/katex/fonts/KaTeX_Main-Italic.woff2
create mode 100644 content/katex/fonts/KaTeX_Main-Regular.ttf
create mode 100644 content/katex/fonts/KaTeX_Main-Regular.woff
create mode 100644 content/katex/fonts/KaTeX_Main-Regular.woff2
create mode 100644 content/katex/fonts/KaTeX_Math-BoldItalic.ttf
create mode 100644 content/katex/fonts/KaTeX_Math-BoldItalic.woff
create mode 100644 content/katex/fonts/KaTeX_Math-BoldItalic.woff2
create mode 100644 content/katex/fonts/KaTeX_Math-Italic.ttf
create mode 100644 content/katex/fonts/KaTeX_Math-Italic.woff
create mode 100644 content/katex/fonts/KaTeX_Math-Italic.woff2
create mode 100644 content/katex/fonts/KaTeX_SansSerif-Bold.ttf
create mode 100644 content/katex/fonts/KaTeX_SansSerif-Bold.woff
create mode 100644 content/katex/fonts/KaTeX_SansSerif-Bold.woff2
create mode 100644 content/katex/fonts/KaTeX_SansSerif-Italic.ttf
create mode 100644 content/katex/fonts/KaTeX_SansSerif-Italic.woff
create mode 100644 content/katex/fonts/KaTeX_SansSerif-Italic.woff2
create mode 100644 content/katex/fonts/KaTeX_SansSerif-Regular.ttf
create mode 100644 content/katex/fonts/KaTeX_SansSerif-Regular.woff
create mode 100644 content/katex/fonts/KaTeX_SansSerif-Regular.woff2
create mode 100644 content/katex/fonts/KaTeX_Script-Regular.ttf
create mode 100644 content/katex/fonts/KaTeX_Script-Regular.woff
create mode 100644 content/katex/fonts/KaTeX_Script-Regular.woff2
create mode 100644 content/katex/fonts/KaTeX_Size1-Regular.ttf
create mode 100644 content/katex/fonts/KaTeX_Size1-Regular.woff
create mode 100644 content/katex/fonts/KaTeX_Size1-Regular.woff2
create mode 100644 content/katex/fonts/KaTeX_Size2-Regular.ttf
create mode 100644 content/katex/fonts/KaTeX_Size2-Regular.woff
create mode 100644 content/katex/fonts/KaTeX_Size2-Regular.woff2
create mode 100644 content/katex/fonts/KaTeX_Size3-Regular.ttf
create mode 100644 content/katex/fonts/KaTeX_Size3-Regular.woff
create mode 100644 content/katex/fonts/KaTeX_Size3-Regular.woff2
create mode 100644 content/katex/fonts/KaTeX_Size4-Regular.ttf
create mode 100644 content/katex/fonts/KaTeX_Size4-Regular.woff
create mode 100644 content/katex/fonts/KaTeX_Size4-Regular.woff2
create mode 100644 content/katex/fonts/KaTeX_Typewriter-Regular.ttf
create mode 100644 content/katex/fonts/KaTeX_Typewriter-Regular.woff
create mode 100644 content/katex/fonts/KaTeX_Typewriter-Regular.woff2
create mode 100644 content/katex/katex.min.css
create mode 100644 content/katex/katex.min.js
create mode 100644 content/manifest.json
create mode 100644 content/material/index.html
create mode 100644 content/mermaid.min.js
copy {docs/static/img => content}/navbar-brand-logo.jpg (100%)
create mode 100644 content/news/2014/08/26/release-0.6.html
create mode 100644 content/news/2014/09/26/release-0.6.1.html
create mode 100644 content/news/2014/10/03/upcoming_events.html
create mode 100644 content/news/2014/11/04/release-0.7.0.html
create mode 100644 content/news/2014/11/18/hadoop-compatibility.html
create mode 100644 content/news/2015/01/06/december-in-flink.html
create mode 100644 content/news/2015/01/21/release-0.8.html
create mode 100644 content/news/2015/02/04/january-in-flink.html
create mode 100644 content/news/2015/02/09/streaming-example.html
create mode 100644 content/news/2015/03/02/february-2015-in-flink.html
create mode 100644 content/news/2015/03/13/peeking-into-Apache-Flinks-Engine-Room.html
create mode 100644 content/news/2015/04/07/march-in-flink.html
create mode 100644 content/news/2015/04/13/release-0.9.0-milestone1.html
create mode 100644 content/news/2015/05/11/Juggling-with-Bits-and-Bytes.html
create mode 100644 content/news/2015/05/14/Community-update-April.html
create mode 100644 content/news/2015/06/24/announcing-apache-flink-0.9.0-release.html
create mode 100644 content/news/2015/08/24/introducing-flink-gelly.html
create mode 100644 content/news/2015/09/01/release-0.9.1.html
create mode 100644 content/news/2015/09/03/flink-forward.html
create mode 100644 content/news/2015/09/16/off-heap-memory.html
create mode 100644 content/news/2015/11/16/release-0.10.0.html
create mode 100644 content/news/2015/11/27/release-0.10.1.html
create mode 100644 content/news/2015/12/04/Introducing-windows.html
create mode 100644 content/news/2015/12/11/storm-compatibility.html
create mode 100644 content/news/2015/12/18/a-year-in-review.html
create mode 100644 content/news/2016/02/11/release-0.10.2.html
create mode 100644 content/news/2016/03/08/release-1.0.0.html
create mode 100644 content/news/2016/04/06/cep-monitoring.html
create mode 100644 content/news/2016/04/06/release-1.0.1.html
create mode 100644 content/news/2016/04/14/flink-forward-announce.html
create mode 100644 content/news/2016/04/22/release-1.0.2.html
create mode 100644 content/news/2016/05/11/release-1.0.3.html
create mode 100644 content/news/2016/05/24/stream-sql.html
create mode 100644 content/news/2016/08/08/release-1.1.0.html
create mode 100644 content/news/2016/08/11/release-1.1.1.html
create mode 100644 content/news/2016/08/24/ff16-keynotes-panels.html
create mode 100644 content/news/2016/09/05/release-1.1.2.html
create mode 100644 content/news/2016/10/12/release-1.1.3.html
create mode 100644 content/news/2016/12/19/2016-year-in-review.html
create mode 100644 content/news/2016/12/21/release-1.1.4.html
create mode 100644 content/news/2017/02/06/release-1.2.0.html
create mode 100644 content/news/2017/03/23/release-1.1.5.html
create mode 100644 content/news/2017/03/29/table-sql-api-update.html
create mode 100644 content/news/2017/04/04/dynamic-tables.html
create mode 100644 content/news/2017/04/26/release-1.2.1.html
create mode 100644 content/news/2017/05/16/official-docker-image.html
create mode 100644 content/news/2017/06/01/release-1.3.0.html
create mode 100644 content/news/2017/06/23/release-1.3.1.html
create mode 100644 content/news/2017/08/05/release-1.3.2.html
create mode 100644 content/news/2017/11/22/release-1.4-and-1.5-timeline.html
create mode 100644 content/news/2017/12/12/release-1.4.0.html
create mode 100644 content/news/2017/12/21/2017-year-in-review.html
create mode 100644 content/news/2018/02/15/release-1.4.1.html
create mode 100644 content/news/2018/03/08/release-1.4.2.html
create mode 100644 content/news/2018/03/15/release-1.3.3.html
create mode 100644 content/news/2018/05/25/release-1.5.0.html
create mode 100644 content/news/2018/07/12/release-1.5.1.html
create mode 100644 content/news/2018/07/31/release-1.5.2.html
create mode 100644 content/news/2018/08/09/release-1.6.0.html
create mode 100644 content/news/2018/08/21/release-1.5.3.html
create mode 100644 content/news/2018/09/20/release-1.5.4.html
create mode 100644 content/news/2018/09/20/release-1.6.1.html
create mode 100644 content/news/2018/10/29/release-1.5.5.html
create mode 100644 content/news/2018/10/29/release-1.6.2.html
create mode 100644 content/news/2018/11/30/release-1.7.0.html
create mode 100644 content/news/2018/12/21/release-1.7.1.html
create mode 100644 content/news/2018/12/22/release-1.6.3.html
create mode 100644 content/news/2018/12/26/release-1.5.6.html
create mode 100644 content/news/2019/02/13/unified-batch-streaming-blink.html
create mode 100644 content/news/2019/02/15/release-1.7.2.html
create mode 100644 content/news/2019/02/25/monitoring-best-practices.html
create mode 100644 content/news/2019/02/25/release-1.6.4.html
create mode 100644 content/news/2019/03/06/ffsf-preview.html
create mode 100644 content/news/2019/04/09/release-1.8.0.html
create mode 100644 content/news/2019/04/17/sod.html
create mode 100644 content/news/2019/07/02/release-1.8.1.html
create mode 100644 content/news/2019/08/22/release-1.9.0.html
create mode 100644 content/news/2019/09/10/community-update.html
create mode 100644 content/news/2019/09/11/release-1.8.2.html
create mode 100644 content/news/2019/10/18/release-1.9.1.html
create mode 100644 content/news/2019/11/25/query-pulsar-streams-using-apache-flink.html
create mode 100644 content/news/2019/12/09/flink-kubernetes-kudo.html
create mode 100644 content/news/2019/12/11/release-1.8.3.html
create mode 100644 content/news/2020/01/15/demo-fraud-detection.html
create mode 100644 content/news/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink.html
create mode 100644 content/news/2020/01/30/release-1.9.2.html
create mode 100644 content/news/2020/02/07/a-guide-for-unit-testing-in-apache-flink.html
create mode 100644 content/news/2020/02/11/release-1.10.0.html
create mode 100644 content/news/2020/02/20/ddl.html
create mode 100644 content/news/2020/03/24/demo-fraud-detection-2.html
create mode 100644 content/news/2020/04/01/community-update.html
create mode 100644 content/news/2020/04/07/release-statefun-2.0.0.html
create mode 100644 content/news/2020/04/15/flink-serialization-tuning-vol-1.html
create mode 100644 content/news/2020/04/21/memory-management-improvements-flink-1.10.html
create mode 100644 content/news/2020/04/24/release-1.9.3.html
create mode 100644 content/news/2020/05/04/season-of-docs.html
create mode 100644 content/news/2020/05/07/community-update.html
create mode 100644 content/news/2020/05/12/release-1.10.1.html
create mode 100644 content/news/2020/06/09/release-statefun-2.1.0.html
create mode 100644 content/news/2020/06/11/community-update.html
create mode 100644 content/news/2020/06/15/flink-on-zeppelin-part1.html
create mode 100644 content/news/2020/07/06/release-1.11.0.html
create mode 100644 content/news/2020/07/14/application-mode.html
create mode 100644 content/news/2020/07/21/release-1.11.1.html
create mode 100644 content/news/2020/07/27/community-update.html
create mode 100644 content/news/2020/07/30/demo-fraud-detection-3.html
create mode 100644 content/news/2020/08/06/external-resource.html
create mode 100644 content/news/2020/08/20/flink-docker.html
create mode 100644 content/news/2020/08/25/release-1.10.2.html
create mode 100644 content/news/2020/09/04/community-update.html
create mode 100644 content/news/2020/09/17/release-1.11.2.html
create mode 100644 content/news/2020/09/28/release-statefun-2.2.0.html
create mode 100644 content/news/2020/10/13/stateful-serverless-internals.html
create mode 100644 content/news/2020/11/11/release-statefun-2.2.1.html
create mode 100644 content/news/2020/12/10/release-1.12.0.html
create mode 100644 content/news/2020/12/18/release-1.11.3.html
create mode 100644 content/news/2021/01/02/release-statefun-2.2.2.html
create mode 100644 content/news/2021/01/11/batch-fine-grained-fault-tolerance.html
create mode 100644 content/news/2021/01/19/release-1.12.1.html
create mode 100644 content/news/2021/01/29/release-1.10.3.html
create mode 100644 content/news/2021/03/03/release-1.12.2.html
create mode 100644 content/news/2021/04/15/release-statefun-3.0.0.html
create mode 100644 content/news/2021/04/29/release-1.12.3.html
create mode 100644 content/news/2021/05/03/release-1.13.0.html
create mode 100644 content/news/2021/05/21/release-1.12.4.html
create mode 100644 content/news/2021/05/28/release-1.13.1.html
create mode 100644 content/news/2021/08/06/release-1.12.5.html
create mode 100644 content/news/2021/08/06/release-1.13.2.html
create mode 100644 content/news/2021/08/09/release-1.11.4.html
create mode 100644 content/news/2021/08/31/release-1.14.0-rc0.html
create mode 100644 content/news/2021/08/31/release-statefun-3.1.0.html
create mode 100644 content/news/2021/09/29/release-1.14.0.html
create mode 100644 content/news/2021/10/19/release-1.13.3.html
create mode 100644 content/news/2021/12/16/log4j-patch-releases.html
create mode 100644 content/news/2021/12/22/log4j-statefun-release.html
create mode 100644 content/news/2022/01/07/release-ml-2.0.0.html
create mode 100644 content/news/2022/01/17/release-1.14.3.html
create mode 100644 content/news/2022/01/31/release-statefun-3.2.0.html
create mode 100644 content/news/2022/02/18/release-1.13.6.html
create mode 100644 content/news/2022/03/11/release-1.14.4.html
create mode 100644 content/news/2022/04/03/release-kubernetes-operator-0.1.0.html
create mode 100644 content/news/2022/05/05/1.15-announcement.html
create mode 100644 content/news/2022/05/11/release-table-store-0.1.0.html
create mode 100644 content/news/2022/06/05/release-kubernetes-operator-1.0.0.html
create mode 100644 content/news/2022/06/22/release-1.14.5.html
create mode 100644 content/news/2022/07/06/release-1.15.1.html
create mode 100644 content/news/2022/07/12/release-ml-2.1.0.html
create mode 100644 content/news/2022/07/25/release-kubernetes-operator-1.1.0.html
create mode 100644 content/news/2022/08/25/release-1.15.2.html
create mode 100644 content/news/2022/08/29/release-table-store-0.2.0.html
create mode 100644 content/news/2022/09/08/akka-license-change.html
create mode 100644 content/news/2022/09/28/release-1.14.6.html
create mode 100644 content/news/2022/10/07/release-kubernetes-operator-1.2.0.html
create mode 100644 content/news/2022/10/13/release-table-store-0.2.1.html
create mode 100644 content/news/2022/10/28/1.16-announcement.html
create mode 100644 content/news/2022/11/10/release-1.15.3.html
create mode 100644 content/news/2022/12/14/release-kubernetes-operator-1.3.0.html
create mode 100644 content/news/2023/01/10/release-kubernetes-operator-1.3.1.html
create mode 100644 content/news/2023/01/13/release-table-store-0.3.0.html
create mode 100644 content/news/2023/01/20/delegation-token-framework.html
create mode 100644 content/news/2023/01/30/release-1.16.1.html
create mode 100644 content/news/2023/02/27/release-kubernetes-operator-1.4.0.html
create mode 100644 content/news/2023/03/23/release-1.17.0.html
create mode 100644 content/news/2023/04/19/release-ml-2.2.0.html
create mode 100644 content/news/2023/05/17/release-kubernetes-operator-1.5.0.html
create mode 100644 content/news/2023/05/25/release-1.16.2.html
create mode 100644 content/news/2023/05/25/release-1.17.1.html
create mode 100644 content/news/2023/07/03/sigmod-system-award.html
create mode 100644 content/news/2023/08/04/externalized-connectors.html
create mode 100644 content/news/2023/08/15/release-kubernetes-operator-1.6.0.html
create mode 100644 content/news/2023/10/10/release-1.18.0.html
create mode 100644 content/news/2023/10/27/release-kubernetes-operator-1.6.1.html
create mode 100644 content/news/2023/11/22/release-kubernetes-operator-1.7.0.html
create mode 100644 content/news/2023/11/29/release-1.16.3.html
create mode 100644 content/news/2023/11/29/release-1.17.2.html
create mode 100644 content/news/2024/01/19/release-1.18.1.html
create mode 100644 content/news/2024/03/18/release-1.19.0.html
create mode 100644 content/news/2024/03/21/release-kubernetes-operator-1.8.0.html
create mode 100644 content/news/2024/05/17/release-cdc-3.1.0.html
create mode 100644 content/news/2024/06/14/release-1.19.1.html
create mode 100644 content/news/2024/06/18/release-release-cdc-3.1.1.html
create mode 100644 content/news/2024/07/02/release-kubernetes-operator-1.9.0.html
create mode 100644 content/news/2024/08/02/release-1.20.0.html
create mode 100644 content/news/2024/09/05/release-release-cdc-3.2.0.html
create mode 100644 content/news/2024/10/23/release-2.0-preview.html
create mode 100644 content/news/2024/10/30/release-kubernetes-operator-1.10.0.html
create mode 100644 content/news/2024/11/27/release-release-cdc-3.2.1.html
create mode 100644 content/news/2025/01/21/release-cdc-3.3.0.html
create mode 100644 content/news/2025/02/12/release-1.19.2.html
create mode 100644 content/news/2025/02/12/release-1.20.1.html
create mode 100644 content/posts/index.html
create mode 100644 content/posts/index.xml
create mode 100644 content/posts/page/1/index.html
create mode 100644 content/posts/page/10/index.html
create mode 100644 content/posts/page/11/index.html
create mode 100644 content/posts/page/12/index.html
create mode 100644 content/posts/page/13/index.html
create mode 100644 content/posts/page/14/index.html
create mode 100644 content/posts/page/15/index.html
create mode 100644 content/posts/page/16/index.html
create mode 100644 content/posts/page/17/index.html
create mode 100644 content/posts/page/18/index.html
create mode 100644 content/posts/page/19/index.html
create mode 100644 content/posts/page/2/index.html
create mode 100644 content/posts/page/20/index.html
create mode 100644 content/posts/page/21/index.html
create mode 100644 content/posts/page/22/index.html
create mode 100644 content/posts/page/23/index.html
create mode 100644 content/posts/page/24/index.html
create mode 100644 content/posts/page/25/index.html
create mode 100644 content/posts/page/3/index.html
create mode 100644 content/posts/page/4/index.html
create mode 100644 content/posts/page/5/index.html
create mode 100644 content/posts/page/6/index.html
create mode 100644 content/posts/page/7/index.html
create mode 100644 content/posts/page/8/index.html
create mode 100644 content/posts/page/9/index.html
create mode 100644 content/powered-by.html
create mode 100644 content/powered-by/index.html
create mode 100644 content/roadmap.html
create mode 100644 content/roadmap/index.html
create mode 100644 content/security.html
create mode 100644 content/security/index.html
create mode 100644 content/sitemap.xml
create mode 100644 content/svg/calendar.svg
create mode 100644 content/svg/edit.svg
create mode 100644 content/svg/menu.svg
create mode 100644 content/svg/toc.svg
create mode 100644 content/svg/translate.svg
create mode 100644 content/tags/index.html
create mode 100644 content/tags/index.xml
create mode 100644 content/tags/page/1/index.html
create mode 100644 content/use-cases.html
create mode 100644 content/use-cases/index.html
create mode 100644 content/what-is-flink-ml/index.html
create mode 100644 content/what-is-flink-table-store/index.html
create mode 100644 content/what-is-flink/community/index.html
create mode 100644 content/what-is-flink/flink-applications/index.html
create mode 100644 content/what-is-flink/flink-architecture/index.html
create mode 100644 content/what-is-flink/flink-operations/index.html
create mode 100644 content/what-is-flink/index.html
create mode 100644 content/what-is-flink/index.xml
create mode 100644 content/what-is-flink/powered-by/index.html
create mode 100644 content/what-is-flink/roadmap/index.html
create mode 100644 content/what-is-flink/security/index.html
create mode 100644 content/what-is-flink/special-thanks/index.html
create mode 100644 content/what-is-flink/use-cases/index.html
create mode 100644 content/what-is-stateful-functions/index.html
create mode 100644 content/what-is-the-flink-kubernetes-operator/index.html
create mode 100644 content/zh.search-data.min.60f3f53a3c5bb4856fd00c56254a1feff879558a57fcaa63d7822dca7d8fd513.js
create mode 100644 content/zh.search.min.a8ffe5b99abaee80c22e63a42a544257a8a958f002fc92240a01c1b89771fc07.js
create mode 100644 content/zh/404.html
create mode 100644 content/zh/categories/index.html
create mode 100644 content/zh/categories/index.xml
create mode 100644 content/zh/categories/page/1/index.html
create mode 100644 content/zh/community.html
create mode 100644 content/zh/community/index.html
create mode 100644 content/zh/documentation/flink-cdc-master/index.html
create mode 100644 content/zh/documentation/flink-cdc-stable/index.html
create mode 100644 content/zh/documentation/flink-kubernetes-operator-master/index.html
create mode 100644 content/zh/documentation/flink-kubernetes-operator-stable/index.html
create mode 100644 content/zh/documentation/flink-master/index.html
create mode 100644 content/zh/documentation/flink-preview/index.html
create mode 100644 content/zh/documentation/flink-stable/index.html
create mode 100644 content/zh/documentation/flink-stateful-functions-master/index.html
create mode 100644 content/zh/documentation/flink-stateful-functions-stable/index.html
create mode 100644 content/zh/documentation/flinkml-master/index.html
create mode 100644 content/zh/documentation/flinkml-stable/index.html
create mode 100644 content/zh/documentation/index.html
create mode 100644 content/zh/documentation/index.xml
create mode 100644 content/zh/downloads/index.html
create mode 100644 content/zh/flink-packages/index.html
create mode 100644 content/zh/getting-help.html
create mode 100644 content/zh/getting-help/index.html
create mode 100644 content/zh/getting-started/index.html
create mode 100644 content/zh/getting-started/index.xml
create mode 100644 content/zh/getting-started/training-course/index.html
create mode 100644 content/zh/getting-started/with-flink-cdc/index.html
create mode 100644 content/zh/getting-started/with-flink-kubernetes-operator/index.html
create mode 100644 content/zh/getting-started/with-flink-ml/index.html
create mode 100644 content/zh/getting-started/with-flink-stateful-functions/index.html
create mode 100644 content/zh/getting-started/with-flink/index.html
create mode 100644 content/zh/how-to-contribute/code-style-and-quality-common/index.html
create mode 100644 content/zh/how-to-contribute/code-style-and-quality-components/index.html
create mode 100644 content/zh/how-to-contribute/code-style-and-quality-formatting/index.html
create mode 100644 content/zh/how-to-contribute/code-style-and-quality-java/index.html
create mode 100644 content/zh/how-to-contribute/code-style-and-quality-preamble/index.html
create mode 100644 content/zh/how-to-contribute/code-style-and-quality-pull-requests/index.html
create mode 100644 content/zh/how-to-contribute/code-style-and-quality-scala/index.html
create mode 100644 content/zh/how-to-contribute/contribute-code/index.html
create mode 100644 content/zh/how-to-contribute/contribute-documentation/index.html
create mode 100644 content/zh/how-to-contribute/documentation-style-guide/index.html
create mode 100644 content/zh/how-to-contribute/getting-help/index.html
create mode 100644 content/zh/how-to-contribute/improve-website/index.html
create mode 100644 content/zh/how-to-contribute/index.html
create mode 100644 content/zh/how-to-contribute/index.xml
create mode 100644 content/zh/how-to-contribute/overview/index.html
create mode 100644 content/zh/how-to-contribute/reviewing-prs/index.html
create mode 100644 content/zh/index.html
create mode 100644 content/zh/index.xml
create mode 100644 content/zh/material/index.html
create mode 100644 content/zh/powered-by.html
create mode 100644 content/zh/powered-by/index.html
create mode 100644 content/zh/roadmap.html
create mode 100644 content/zh/roadmap/index.html
create mode 100644 content/zh/security.html
create mode 100644 content/zh/security/index.html
create mode 100644 content/zh/sitemap.xml
create mode 100644 content/zh/tags/index.html
create mode 100644 content/zh/tags/index.xml
create mode 100644 content/zh/tags/page/1/index.html
create mode 100644 content/zh/use-cases.html
create mode 100644 content/zh/use-cases/index.html
create mode 100644 content/zh/what-is-flink-ml/index.html
create mode 100644 content/zh/what-is-flink-table-store/index.html
create mode 100644 content/zh/what-is-flink/community/index.html
create mode 100644 content/zh/what-is-flink/flink-applications/index.html
create mode 100644 content/zh/what-is-flink/flink-architecture/index.html
create mode 100644 content/zh/what-is-flink/flink-operations/index.html
create mode 100644 content/zh/what-is-flink/index.html
create mode 100644 content/zh/what-is-flink/index.xml
create mode 100644 content/zh/what-is-flink/powered-by/index.html
create mode 100644 content/zh/what-is-flink/roadmap/index.html
create mode 100644 content/zh/what-is-flink/security/index.html
create mode 100644 content/zh/what-is-flink/special-thanks/index.html
create mode 100644 content/zh/what-is-flink/use-cases/index.html
create mode 100644 content/zh/what-is-stateful-functions/index.html
create mode 100644 content/zh/what-is-the-flink-kubernetes-operator/index.html
copy docs/content/posts/{2025-02-12-release-1.19.2.md => 2025-02-12-release-1.20.1.md} (69%)
(flink-web) 02/02: Rebuild site
Posted by af...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
afedulov pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/flink-web.git
commit 40b54ffd7eaf9596d10efd185301aad47fbf25e6
Author: Alexander Fedulov <a_...@apple.com>
AuthorDate: Wed Feb 19 12:57:29 2025 +0000
Rebuild site
---
.../08/26/apache-flink-0.6-available/index.html | 707 +++
.../09/26/apache-flink-0.6.1-available/index.html | 632 ++
content/2014/10/03/upcoming-events/index.html | 733 +++
.../11/04/apache-flink-0.7.0-available/index.html | 695 +++
.../11/18/hadoop-compatibility-in-flink/index.html | 707 +++
.../index.html | 720 +++
.../01/21/apache-flink-0.8.0-available/index.html | 720 +++
.../january-2015-in-the-flink-community/index.html | 705 +++
.../02/09/introducing-flink-streaming/index.html | 1216 ++++
.../index.html | 765 +++
.../index.html | 798 +++
.../march-2015-in-the-flink-community/index.html | 714 +++
.../index.html | 887 +++
.../05/11/juggling-with-bits-and-bytes/index.html | 799 +++
.../april-2015-in-the-flink-community/index.html | 682 +++
.../06/24/announcing-apache-flink-0.9.0/index.html | 869 +++
.../index.html | 1052 ++++
.../09/01/apache-flink-0.9.1-available/index.html | 679 +++
.../09/03/announcing-flink-forward-2015/index.html | 664 ++
.../index.html | 1465 +++++
.../16/announcing-apache-flink-0.10.0/index.html | 824 +++
.../2015/11/27/flink-0.10.1-released/index.html | 686 +++
.../index.html | 755 +++
.../index.html | 759 +++
.../index.html | 824 +++
.../2016/02/11/flink-0.10.2-released/index.html | 665 ++
.../03/08/announcing-apache-flink-1.0.0/index.html | 763 +++
content/2016/04/06/flink-1.0.1-released/index.html | 697 +++
.../index.html | 792 +++
.../index.html | 629 ++
content/2016/04/22/flink-1.0.2-released/index.html | 687 +++
content/2016/05/11/flink-1.0.3-released/index.html | 684 +++
.../index.html | 749 +++
.../08/04/announcing-apache-flink-1.1.0/index.html | 852 +++
content/2016/08/04/flink-1.1.1-released/index.html | 647 ++
.../index.html | 632 ++
.../09/05/apache-flink-1.1.2-released/index.html | 689 +++
.../10/12/apache-flink-1.1.3-released/index.html | 732 +++
.../apache-flink-in-2016-year-in-review/index.html | 796 +++
.../12/21/apache-flink-1.1.4-released/index.html | 862 +++
.../02/06/announcing-apache-flink-1.2.0/index.html | 883 +++
.../03/23/apache-flink-1.1.5-released/index.html | 709 +++
.../index.html | 778 +++
.../index.html | 787 +++
.../04/26/apache-flink-1.2.1-released/index.html | 827 +++
.../index.html | 638 ++
.../index.html | 807 +++
.../06/23/apache-flink-1.3.1-released/index.html | 761 +++
.../index.html | 760 +++
.../08/05/apache-flink-1.3.2-released/index.html | 819 +++
.../index.html | 766 +++
.../index.html | 866 +++
.../apache-flink-in-2017-year-in-review/index.html | 747 +++
.../index.html | 717 +++
.../02/15/apache-flink-1.4.1-released/index.html | 789 +++
.../index.html | 751 +++
.../03/08/apache-flink-1.4.2-released/index.html | 705 +++
.../03/15/apache-flink-1.3.3-released/index.html | 675 ++
.../index.html | 757 +++
.../07/12/apache-flink-1.5.1-released/index.html | 821 +++
.../07/31/apache-flink-1.5.2-released/index.html | 755 +++
.../index.html | 844 +++
.../08/21/apache-flink-1.5.3-released/index.html | 727 +++
.../09/20/apache-flink-1.5.4-released/index.html | 708 +++
.../09/20/apache-flink-1.6.1-released/index.html | 792 +++
.../10/29/apache-flink-1.5.5-released/index.html | 723 +++
.../10/29/apache-flink-1.6.2-released/index.html | 749 +++
.../index.html | 738 +++
.../12/21/apache-flink-1.7.1-released/index.html | 719 +++
.../12/22/apache-flink-1.6.3-released/index.html | 836 +++
.../12/26/apache-flink-1.5.6-released/index.html | 763 +++
.../index.html | 785 +++
.../02/15/apache-flink-1.7.2-released/index.html | 765 +++
.../index.html | 1191 ++++
.../02/25/apache-flink-1.6.4-released/index.html | 713 +++
.../index.html | 664 ++
.../index.html | 745 +++
.../index.html | 893 +++
.../index.html | 690 +++
content/2019/05/03/pulsar-flink.html | 10 +
.../03/when-flink-pulsar-come-together/index.html | 772 +++
.../index.html | 728 +++
content/2019/05/14/temporal-tables.html | 10 +
.../index.html | 764 +++
content/2019/05/19/state-ttl.html | 10 +
.../index.html | 952 +++
content/2019/06/05/flink-network-stack.html | 10 +
.../index.html | 805 +++
content/2019/06/26/broadcast-state.html | 10 +
.../07/02/apache-flink-1.8.1-released/index.html | 764 +++
content/2019/07/23/flink-network-stack-2.html | 10 +
.../index.html | 955 +++
.../index.html | 976 +++
.../flink-community-update-september19/index.html | 802 +++
.../09/11/apache-flink-1.8.2-released/index.html | 712 +++
.../index.html | 689 +++
.../10/18/apache-flink-1.9.1-released/index.html | 844 +++
.../index.html | 728 +++
.../index.html | 814 +++
.../12/11/apache-flink-1.8.3-released/index.html | 758 +++
.../index.html | 807 +++
.../index.html | 847 +++
.../01/30/apache-flink-1.9.2-released/index.html | 904 +++
.../index.html | 838 +++
.../index.html | 830 +++
.../index.html | 750 +++
.../index.html | 798 +++
.../index.html | 802 +++
.../index.html | 744 +++
.../30/flink-community-update-april20/index.html | 783 +++
.../index.html | 846 +++
.../index.html | 797 +++
content/2020/04/09/pyflink-udf-support-flink.html | 10 +
.../index.html | 895 +++
.../index.html | 722 +++
.../04/24/apache-flink-1.9.3-released/index.html | 750 +++
.../index.html | 710 +++
.../05/06/flink-community-update-may20/index.html | 847 +++
.../05/12/apache-flink-1.10.1-released/index.html | 1000 +++
.../index.html | 712 +++
.../06/10/flink-community-update-june20/index.html | 752 +++
.../index.html | 715 +++
.../index.html | 748 +++
.../index.html | 922 +++
.../index.html | 918 +++
.../07/21/apache-flink-1.11.1-released/index.html | 766 +++
content/2020/07/23/catalogs.html | 10 +
.../index.html | 826 +++
.../index.html | 877 +++
...ql-demo-building-e2e-streaming-application.html | 10 +
.../07/29/flink-community-update-july20/index.html | 855 +++
.../index.html | 1272 ++++
.../08/04/pyflink-pandas-udf-support-flink.html | 10 +
.../index.html | 836 +++
.../index.html | 756 +++
.../index.html | 828 +++
content/2020/08/19/statefun.html | 10 +
.../08/20/the-state-of-flink-on-docker/index.html | 708 +++
.../08/25/apache-flink-1.10.2-released/index.html | 826 +++
.../flink-1.11-memory-management-improvements.html | 10 +
.../index.html | 736 +++
.../04/flink-community-update-august20/index.html | 871 +++
.../09/17/apache-flink-1.11.2-released/index.html | 866 +++
.../index.html | 820 +++
.../index.html | 832 +++
.../index.html | 752 +++
...om-aligned-to-unaligned-checkpoints-part-1.html | 10 +
.../index.html | 691 +++
.../index.html | 929 +++
.../index.html | 950 +++
content/2020/12/15/pipelined-region-sheduling.html | 10 +
.../12/18/apache-flink-1.11.3-released/index.html | 982 +++
.../index.html | 658 ++
content/2021/01/07/pulsar-flink-connector-270.html | 10 +
.../index.html | 815 +++
.../index.html | 731 +++
content/2021/01/18/rocksdb.html | 10 +
.../index.html | 756 +++
.../01/19/apache-flink-1.12.1-released/index.html | 835 +++
.../01/29/apache-flink-1.10.3-released/index.html | 740 +++
.../index.html | 755 +++
content/2021/02/10/native-k8s-with-ha.html | 10 +
.../03/03/apache-flink-1.12.2-released/index.html | 845 +++
.../index.html | 831 +++
content/2021/03/11/batch-execution-mode.html | 10 +
.../index.html | 824 +++
.../04/29/apache-flink-1.12.3-released/index.html | 812 +++
.../index.html | 1191 ++++
content/2021/05/06/reactive-mode.html | 10 +
.../index.html | 756 +++
.../05/21/apache-flink-1.12.4-released/index.html | 706 +++
.../05/28/apache-flink-1.13.1-released/index.html | 775 +++
content/2021/07/07/backpressure.html | 10 +
.../index.html | 819 +++
.../08/06/apache-flink-1.12.5-released/index.html | 816 +++
.../08/06/apache-flink-1.13.2-released/index.html | 928 +++
.../08/09/apache-flink-1.11.4-released/index.html | 825 +++
.../index.html | 660 ++
.../index.html | 850 +++
.../2021/09/07/connector-table-sql-api-part1.html | 10 +
.../2021/09/07/connector-table-sql-api-part2.html | 10 +
.../index.html | 832 +++
.../index.html | 1075 ++++
.../index.html | 988 +++
.../10/19/apache-flink-1.13.3-released/index.html | 703 +++
.../index.html | 843 +++
.../index.html | 792 +++
content/2021/10/26/sort-shuffle-part1.html | 10 +
content/2021/10/26/sort-shuffle-part2.html | 10 +
.../index.html | 711 +++
content/2021/11/03/flink-backward.html | 10 +
.../index.html | 646 ++
content/2021/12/10/log4j-cve.html | 10 +
.../index.html | 658 ++
.../index.html | 640 ++
.../index.html | 698 +++
.../index.html | 767 +++
.../2022/01/04/scheduler-performance-part-one.html | 10 +
.../2022/01/04/scheduler-performance-part-two.html | 10 +
.../index.html | 896 +++
.../index.html | 935 +++
content/2022/01/20/pravega-connector-101.html | 10 +
.../01/20/pravega-flink-connector-101/index.html | 855 +++
.../index.html | 742 +++
.../index.html | 836 +++
.../02/22/scala-free-in-one-fifteen/index.html | 721 +++
content/2022/02/22/scala-free.html | 10 +
.../index.html | 805 +++
.../the-generic-asynchronous-base-sink/index.html | 782 +++
.../index.html | 745 +++
.../index.html | 1069 ++++
content/2022/05/06/async-sink-base.html | 10 +
.../index.html | 1087 ++++
.../index.html | 911 +++
content/2022/05/06/pyflink-1.15-thread-mode.html | 10 +
content/2022/05/06/restore-modes.html | 10 +
.../index.html | 734 +++
.../index.html | 738 +++
content/2022/05/18/latency-part1.html | 10 +
.../index.html | 728 +++
content/2022/05/23/latency-part2.html | 10 +
content/2022/05/30/changelog-state-backend.html | 10 +
.../index.html | 1031 ++++
.../index.html | 783 +++
.../index.html | 853 +++
content/2022/06/17/adaptive-batch-scheduler.html | 10 +
.../index.html | 823 +++
.../index.html | 826 +++
content/2022/07/11/final-checkpoint-part1.html | 10 +
content/2022/07/11/final-checkpoint-part2.html | 10 +
.../index.html | 789 +++
.../index.html | 862 +++
.../index.html | 795 +++
.../index.html | 767 +++
.../index.html | 778 +++
.../index.html | 829 +++
.../08/regarding-akkas-licensing-change/index.html | 690 +++
.../index.html | 743 +++
.../index.html | 703 +++
.../index.html | 694 +++
.../index.html | 1125 ++++
.../index.html | 815 +++
.../11/25/async-sink-rate-limiting-strategy.html | 10 +
.../index.html | 816 +++
.../index.html | 705 +++
.../index.html | 691 +++
.../index.html | 855 +++
.../index.html | 736 +++
.../index.html | 869 +++
.../index.html | 733 +++
.../index.html | 778 +++
.../index.html | 1112 ++++
.../index.html | 745 +++
.../index.html | 916 +++
.../index.html | 820 +++
.../index.html | 851 +++
.../index.html | 743 +++
.../index.html | 850 +++
.../index.html | 832 +++
.../index.html | 639 ++
.../index.html | 741 +++
.../index.html | 714 +++
.../index.html | 694 +++
.../index.html | 1292 ++++
.../index.html | 687 +++
.../index.html | 732 +++
.../index.html | 777 +++
.../index.html | 835 +++
.../index.html | 765 +++
.../index.html | 1185 ++++
.../index.html | 814 +++
.../index.html | 720 +++
.../index.html | 765 +++
.../index.html | 690 +++
.../index.html | 732 +++
.../index.html | 1253 ++++
.../index.html | 804 +++
.../preview-release-of-apache-flink-2.0/index.html | 2747 +++++++++
.../index.html | 716 +++
.../index.html | 845 +++
.../index.html | 716 +++
.../index.html | 858 +++
.../index.html | 748 +++
.../index.html | 835 +++
.../index.html | 839 +++
content/404.html | 62 +
...345edd6f215a40474022dfee39b63befb5fb3c596b5.css | 1 +
content/bootstrap/css/bootstrap.min.css | 7 +
content/bootstrap/js/bootstrap.bundle.min.js | 7 +
content/categories/index.html | 606 ++
content/categories/index.xml | 11 +
content/categories/page/1/index.html | 10 +
content/community.html | 10 +
content/community/index.html | 10 +
content/documentation/flink-cdc-master/index.html | 645 ++
content/documentation/flink-cdc-stable/index.html | 645 ++
.../flink-kubernetes-operator-master/index.html | 645 ++
.../flink-kubernetes-operator-stable/index.html | 645 ++
content/documentation/flink-master/index.html | 645 ++
content/documentation/flink-preview/index.html | 645 ++
content/documentation/flink-stable/index.html | 645 ++
.../flink-stateful-functions-master/index.html | 645 ++
.../flink-stateful-functions-stable/index.html | 645 ++
content/documentation/flinkml-master/index.html | 645 ++
content/documentation/flinkml-stable/index.html | 645 ++
content/documentation/index.html | 626 ++
content/documentation/index.xml | 88 +
content/downloads/index.html | 1546 +++++
.../apache-beam-how-beam-runs-on-top-of-flink.html | 10 +
.../2020/06/23/flink-on-zeppelin-part2.html | 10 +
...23af6cb949dbb89a952523e3286c74d59f87b513314a.js | 5601 +++++++++++++++++
...1bbba3f4b7195e00d999fc077279ac6672e2d7adbab6.js | 1 +
content/en/index.html | 10 +
content/en/sitemap.xml | 1392 +++++
content/favicon.png | Bin 0 -> 1150 bytes
content/favicon.svg | 1 +
.../feature/2019/09/13/state-processor-api.html | 10 +
.../2017/07/04/flink-rescalable-state.html | 10 +
.../2018/01/30/incremental-checkpointing.html | 10 +
.../01/end-to-end-exactly-once-apache-flink.html | 10 +
.../features/2019/03/11/prometheus-monitoring.html | 10 +
.../2020/03/27/flink-for-data-warehouse.html | 10 +
content/fig/LICENSE.txt | 17 +
content/flexsearch.min.js | 42 +
content/flink-header-logo.svg | 211 +
content/flink-packages/index.html | 641 ++
content/font-awesome/css/font-awesome.css | 2199 +++++++
content/font-awesome/css/font-awesome.min.css | 4 +
content/font-awesome/fonts/FontAwesome.otf | Bin 0 -> 124988 bytes
content/font-awesome/fonts/fontawesome-webfont.eot | Bin 0 -> 76518 bytes
content/font-awesome/fonts/fontawesome-webfont.svg | 685 +++
content/font-awesome/fonts/fontawesome-webfont.ttf | Bin 0 -> 152796 bytes
.../font-awesome/fonts/fontawesome-webfont.woff | Bin 0 -> 90412 bytes
.../font-awesome/fonts/fontawesome-webfont.woff2 | Bin 0 -> 71896 bytes
.../glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes
.../glyphicons-halflings-regular.svg | 288 +
.../glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes
.../glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes
.../glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes
content/fonts/roboto-mono-v6-latin-regular.woff | Bin 0 -> 19972 bytes
content/fonts/roboto-mono-v6-latin-regular.woff2 | Bin 0 -> 16328 bytes
content/fonts/roboto-v19-latin-300italic.woff | Bin 0 -> 22204 bytes
content/fonts/roboto-v19-latin-300italic.woff2 | Bin 0 -> 17448 bytes
content/fonts/roboto-v19-latin-700.woff | Bin 0 -> 20356 bytes
content/fonts/roboto-v19-latin-700.woff2 | Bin 0 -> 15816 bytes
content/fonts/roboto-v19-latin-regular.woff | Bin 0 -> 20268 bytes
content/fonts/roboto-v19-latin-regular.woff2 | Bin 0 -> 15736 bytes
content/generated/rest_v1_dispatcher.yml | 2907 +++++++++
content/getting-help.html | 10 +
content/getting-help/index.html | 10 +
content/getting-started/index.html | 626 ++
content/getting-started/index.xml | 53 +
content/getting-started/training-course/index.html | 645 ++
content/getting-started/with-flink-cdc/index.html | 645 ++
.../with-flink-kubernetes-operator/index.html | 645 ++
content/getting-started/with-flink-ml/index.html | 645 ++
.../with-flink-stateful-functions/index.html | 645 ++
content/getting-started/with-flink/index.html | 645 ++
.../code-style-and-quality-common/index.html | 1051 ++++
.../code-style-and-quality-components/index.html | 810 +++
.../code-style-and-quality-formatting/index.html | 816 +++
.../code-style-and-quality-java/index.html | 807 +++
.../code-style-and-quality-preamble/index.html | 675 ++
.../index.html | 735 +++
.../code-style-and-quality-scala/index.html | 745 +++
.../how-to-contribute/contribute-code/index.html | 855 +++
.../contribute-documentation/index.html | 683 +++
.../documentation-style-guide/index.html | 1168 ++++
content/how-to-contribute/getting-help/index.html | 813 +++
.../how-to-contribute/improve-website/index.html | 718 +++
content/how-to-contribute/index.html | 626 ++
content/how-to-contribute/index.xml | 109 +
content/how-to-contribute/overview/index.html | 747 +++
content/how-to-contribute/reviewing-prs/index.html | 710 +++
content/img/alibaba-logo.png | Bin 0 -> 22897 bytes
content/img/api-stack.png | Bin 0 -> 173731 bytes
content/img/assets/WhatIsFlink.png | Bin 0 -> 248892 bytes
content/img/assets/grep.png | Bin 0 -> 121239 bytes
content/img/assets/hadoop-img.png | Bin 0 -> 67841 bytes
content/img/assets/optimizer-visual.png | Bin 0 -> 204452 bytes
content/img/assets/pagerank.pdf | Bin 0 -> 21052 bytes
content/img/assets/pagerank.png | Bin 0 -> 135851 bytes
.../2019-02-21-monitoring-best-practices/fig-1.png | Bin 0 -> 19621 bytes
.../2019-02-21-monitoring-best-practices/fig-2.png | Bin 0 -> 6637 bytes
.../2019-02-21-monitoring-best-practices/fig-3.png | Bin 0 -> 28722 bytes
.../2019-02-21-monitoring-best-practices/fig-4.png | Bin 0 -> 15780 bytes
.../2019-02-21-monitoring-best-practices/fig-5.png | Bin 0 -> 37684 bytes
.../2019-02-21-monitoring-best-practices/fig-6.png | Bin 0 -> 26912 bytes
.../2019-02-21-monitoring-best-practices/fig-7.png | Bin 0 -> 25941 bytes
.../2019-02-21-monitoring-best-practices/fig-8.png | Bin 0 -> 32185 bytes
.../prometheus.png | Bin 0 -> 56449 bytes
.../prometheusalerts.png | Bin 0 -> 80256 bytes
.../prometheusexamplejob.png | Bin 0 -> 60456 bytes
.../2019-05-13-temporal-tables/TemporalTables1.png | Bin 0 -> 25109 bytes
.../2019-05-13-temporal-tables/TemporalTables2.png | Bin 0 -> 35586 bytes
.../2019-05-13-temporal-tables/TemporalTables3.png | Bin 0 -> 21276 bytes
.../2019-05-13-temporal-tables/TemporalTables4.png | Bin 0 -> 106890 bytes
.../flink-network-stack1.png | Bin 0 -> 64901 bytes
.../flink-network-stack2.png | Bin 0 -> 179428 bytes
.../flink-network-stack3.png | Bin 0 -> 188687 bytes
.../flink-network-stack4.png | Bin 0 -> 235585 bytes
.../flink-network-stack5.png | Bin 0 -> 57016 bytes
.../flink-network-stack6.png | Bin 0 -> 285039 bytes
.../flink-network-stack7.png | Bin 0 -> 175814 bytes
.../flink-network-stack8.png | Bin 0 -> 184570 bytes
.../flink-network-stack9.png | Bin 0 -> 37644 bytes
.../back_pressure_sampling_high.png | Bin 0 -> 77546 bytes
.../2019-09-05-flink-community-update_1.png | Bin 0 -> 97175 bytes
.../2019-09-05-flink-community-update_2.png | Bin 0 -> 86011 bytes
.../2019-09-05-flink-community-update_3.png | Bin 0 -> 1102360 bytes
.../application-my-app-state-processor-api.png | Bin 0 -> 49938 bytes
.../database-my-app-state-processor-api.png | Bin 0 -> 50174 bytes
.../flink-dashboard-ui.png | Bin 0 -> 86433 bytes
.../flink-kudo-architecture.png | Bin 0 -> 151743 bytes
.../architecture.png | Bin 0 -> 214660 bytes
.../2019-11-19-demo-fraud-detection/end-to-end.png | Bin 0 -> 195993 bytes
.../shuffle_function_1.png | Bin 0 -> 152296 bytes
.../blog/2019-11-19-demo-fraud-detection/ui.png | Bin 0 -> 1296038 bytes
...state-in-flink-state-processor-api-visual-1.png | Bin 0 -> 52723 bytes
...state-in-flink-state-processor-api-visual-2.png | Bin 0 -> 46207 bytes
.../managing-state-in-flink-visual-1.png | Bin 0 -> 419621 bytes
.../managing-state-in-flink-visual-2.png | Bin 0 -> 408204 bytes
.../flink_1.10_nativek8s.png | Bin 0 -> 180259 bytes
.../flink_1.10_pyflink.gif | Bin 0 -> 2561122 bytes
.../flink_1.10_zeppelin.png | Bin 0 -> 123263 bytes
.../classic-flink-runner-beam.png | Bin 0 -> 254000 bytes
.../flink-runner-beam-beam-vision.png | Bin 0 -> 314000 bytes
...nner-beam-language-portability-architecture.png | Bin 0 -> 852926 bytes
.../flink-runner-beam-language-portability.png | Bin 0 -> 675989 bytes
.../flink-runner-beam-runner-translation-paths.png | Bin 0 -> 77258 bytes
.../flink-runner-beam-serializers-coders.png | Bin 0 -> 107341 bytes
.../2020-03-30-flink-community-update_1.png | Bin 0 -> 74378 bytes
.../2020-03-30-flink-community-update_2.png | Bin 0 -> 104660 bytes
.../2020-03-30-flink-community-update_3.png | Bin 0 -> 957647 bytes
.../2020-04-07-release-statefun-2.0.0/image10.png | Bin 0 -> 69535 bytes
.../2020-04-07-release-statefun-2.0.0/image11.png | Bin 0 -> 72946 bytes
.../2020-04-07-release-statefun-2.0.0/image2.png | Bin 0 -> 76458 bytes
.../2020-04-07-release-statefun-2.0.0/image3.png | Bin 0 -> 39240 bytes
.../2020-04-07-release-statefun-2.0.0/image5.png | Bin 0 -> 117111 bytes
.../2020-04-07-release-statefun-2.0.0/image6.png | Bin 0 -> 122733 bytes
.../2020-04-07-release-statefun-2.0.0/image7.png | Bin 0 -> 69060 bytes
.../2020-04-07-release-statefun-2.0.0/image8.png | Bin 0 -> 40097 bytes
.../2020-04-07-release-statefun-2.0.0/image9.png | Bin 0 -> 91067 bytes
.../pyflink-udf-architecture.png | Bin 0 -> 928431 bytes
.../2020-04-09-pyflink-udfs/roadmap-of-pyflink.png | Bin 0 -> 1191798 bytes
...-15-flink-serialization-performance-results.svg | 1 +
.../flink-memory-setup.svg | 1 +
.../total-process-memory.svg | 1 +
.../2020-04-30-season-of-docs_1.png | Bin 0 -> 97061 bytes
.../2020-05-06-community-update_1.png | Bin 0 -> 329337 bytes
.../2020-05-06-community-update_2.png | Bin 0 -> 117111 bytes
.../FlinkForward_Banner_CFP_Global_2020.png | Bin 0 -> 405263 bytes
.../2020-06-15-flink-on-zeppelin/create_sink.png | Bin 0 -> 138803 bytes
.../2020-06-15-flink-on-zeppelin/create_source.png | Bin 0 -> 147213 bytes
.../img/blog/2020-06-15-flink-on-zeppelin/etl.png | Bin 0 -> 55319 bytes
.../blog/2020-06-15-flink-on-zeppelin/preview.png | Bin 0 -> 89756 bytes
.../flink_append_mode.gif | Bin 0 -> 294307 bytes
.../flink_python_udf.png | Bin 0 -> 83093 bytes
.../flink_scala_udf.png | Bin 0 -> 84516 bytes
.../flink_single_mode.gif | Bin 0 -> 58198 bytes
.../flink_update_mode.gif | Bin 0 -> 131055 bytes
.../img/blog/2020-07-06-release-1.11.0/image1.gif | Bin 0 -> 65524 bytes
.../img/blog/2020-07-06-release-1.11.0/image2.png | Bin 0 -> 127907 bytes
.../img/blog/2020-07-06-release-1.11.0/image3.png | Bin 0 -> 135960 bytes
.../img/blog/2020-07-06-release-1.11.0/image4.png | Bin 0 -> 263731 bytes
.../2020-07-14-application-mode/application.png | Bin 0 -> 94513 bytes
.../session-per-job.png | Bin 0 -> 184784 bytes
.../img/blog/2020-07-28-flink-sql-demo/image1.gif | Bin 0 -> 964219 bytes
.../img/blog/2020-07-28-flink-sql-demo/image3.png | Bin 0 -> 99027 bytes
.../img/blog/2020-07-28-flink-sql-demo/image4.jpg | Bin 0 -> 418490 bytes
.../img/blog/2020-07-28-flink-sql-demo/image5.jpg | Bin 0 -> 262516 bytes
.../img/blog/2020-07-28-flink-sql-demo/image6.jpg | Bin 0 -> 296556 bytes
.../img/blog/2020-07-28-flink-sql-demo/image7.jpg | Bin 0 -> 336316 bytes
.../img/blog/2020-07-28-flink-sql-demo/image8.jpg | Bin 0 -> 322865 bytes
.../2020-07-29_releases.png | Bin 0 -> 60571 bytes
.../mission-of-pyFlink.gif | Bin 0 -> 656600 bytes
.../python-scientific-stack.png | Bin 0 -> 535909 bytes
.../2020-08-04-pyflink-pandas/vm-communication.png | Bin 0 -> 51408 bytes
.../ai-workflow.png | Bin 0 -> 286466 bytes
content/img/blog/2020-08-18-statefun/1.png | Bin 0 -> 33747 bytes
content/img/blog/2020-08-18-statefun/2.png | Bin 0 -> 21984 bytes
content/img/blog/2020-08-18-statefun/3_1.png | Bin 0 -> 246327 bytes
content/img/blog/2020-08-18-statefun/3_2.png | Bin 0 -> 293276 bytes
content/img/blog/2020-08-18-statefun/5.png | Bin 0 -> 266226 bytes
content/img/blog/2020-08-18-statefun/6.png | Bin 0 -> 151264 bytes
content/img/blog/2020-08-18-statefun/7.png | Bin 0 -> 15555 bytes
content/img/blog/2020-08-18-statefun/rack.png | Bin 0 -> 94874 bytes
.../total-process-memory-flink-1.11.png | Bin 0 -> 12476 bytes
.../2020-09-04-community-update_1.png | Bin 0 -> 197178 bytes
.../abstract-deployment.png | Bin 0 -> 122292 bytes
.../aws-deployment.png | Bin 0 -> 251991 bytes
.../protocol-walkthrough-1.png | Bin 0 -> 165851 bytes
.../request-reply-protocol.png | Bin 0 -> 149165 bytes
.../shopping-cart-overview.png | Bin 0 -> 109615 bytes
...m-aligned-to-unaligned-checkpoints-part-1-1.png | Bin 0 -> 31754 bytes
...m-aligned-to-unaligned-checkpoints-part-1-2.png | Bin 0 -> 335330 bytes
...m-aligned-to-unaligned-checkpoints-part-1-3.png | Bin 0 -> 199162 bytes
...m-aligned-to-unaligned-checkpoints-part-1-4.png | Bin 0 -> 177701 bytes
...m-aligned-to-unaligned-checkpoints-part-1-5.png | Bin 0 -> 75609 bytes
.../batch-job-example.png | Bin 0 -> 25335 bytes
.../pipelined-regions.png | Bin 0 -> 25161 bytes
.../sql-join-job-example.png | Bin 0 -> 10355 bytes
.../streaming-job-example.png | Bin 0 -> 7974 bytes
content/img/blog/2020-12-08-release-1.12.0/1.png | Bin 0 -> 109867 bytes
content/img/blog/2020-12-08-release-1.12.0/2.png | Bin 0 -> 169293 bytes
.../pulsar-flink-batch-stream.png | Bin 0 -> 281084 bytes
.../2021-01-07-pulsar-flink/pulsar-key-shared.png | Bin 0 -> 109552 bytes
.../blog/2021-01-18-rocksdb/RocksDB-in-Flink.png | Bin 0 -> 72641 bytes
.../native-k8s-architecture.png | Bin 0 -> 855847 bytes
.../native-k8s-ha-architecture.png | Bin 0 -> 927605 bytes
.../batch-execution.png | Bin 0 -> 19798 bytes
.../stream-execution.png | Bin 0 -> 21173 bytes
content/img/blog/2021-04-reactive-mode/arch.png | Bin 0 -> 54735 bytes
.../blog/2021-04-reactive-mode/high-timeout.png | Bin 0 -> 715791 bytes
content/img/blog/2021-04-reactive-mode/intro.svg | 1 +
content/img/blog/2021-04-reactive-mode/result.png | Bin 0 -> 898175 bytes
content/img/blog/2021-05-03-release-1.13.0/7.png | Bin 0 -> 169877 bytes
.../blog/2021-05-03-release-1.13.0/bottleneck.png | Bin 0 -> 256667 bytes
.../img/blog/2021-07-07-backpressure/animated.png | Bin 0 -> 847082 bytes
.../2021-07-07-backpressure/bottleneck-zoom.png | Bin 0 -> 185048 bytes
.../2021-07-07-backpressure/simple-example.png | Bin 0 -> 102308 bytes
.../2021-07-07-backpressure/sliding-window.png | Bin 0 -> 22391 bytes
.../2021-07-07-backpressure/source-task-busy.png | Bin 0 -> 25852 bytes
.../img/blog/2021-07-07-backpressure/subtasks.png | Bin 0 -> 137756 bytes
.../VVP-SQL-Editor.png | Bin 0 -> 165632 bytes
.../flink-sql-client.png | Bin 0 -> 26982 bytes
.../buffer_debloating.svg | 1 +
.../fine_grained_resource_management.png | Bin 0 -> 94168 bytes
.../fine_grained_resource_management.svg | 261 +
.../2021-09-25-release-1.14.0/hybrid_source.png | Bin 0 -> 61706 bytes
content/img/blog/2021-10-26-sort-shuffle/1.jpg | Bin 0 -> 46205 bytes
content/img/blog/2021-10-26-sort-shuffle/2.jpg | Bin 0 -> 61490 bytes
content/img/blog/2021-10-26-sort-shuffle/3.jpg | Bin 0 -> 45590 bytes
content/img/blog/2021-10-26-sort-shuffle/4.jpg | Bin 0 -> 73730 bytes
content/img/blog/2021-10-26-sort-shuffle/5.jpg | Bin 0 -> 96581 bytes
.../2021-11-03-flink-backward/1.14-weather.png | Bin 0 -> 174546 bytes
.../1-distribution-pattern.svg | 4 +
.../2022-01-05-scheduler-performance/2-groups.svg | 4 +
.../3-how-shuffle-descriptors-are-distributed.svg | 4 +
.../4-pipelined-region.svg | 4 +
.../5-scheduling-deadlock.svg | 4 +
.../6-building-pipelined-region.svg | 4 +
.../blog/2022-02-22-scala-free/flink-scala-3.jpeg | Bin 0 -> 59023 bytes
.../overview.svg | 22 +
.../2022-05-06-pyflink-1.15-thread-mode/pemja.png | Bin 0 -> 175802 bytes
.../pyflink-architecture-overview.png | Bin 0 -> 370877 bytes
.../pyflink-checkpoint-time.jpg | Bin 0 -> 128108 bytes
.../pyflink-latency.jpg | Bin 0 -> 124935 bytes
.../pyflink-performance.jpg | Bin 0 -> 131092 bytes
.../pyflink-process-mode.png | Bin 0 -> 265074 bytes
.../pyflink-thread-mode.png | Bin 0 -> 241629 bytes
.../restore-mode-claim.svg | 21 +
.../restore-mode-legacy.svg | 21 +
.../restore-mode-no_claim.svg | 21 +
.../2022-05-18-latency-part1/buffer-timeout.png | Bin 0 -> 175799 bytes
.../choose-state-backend.png | Bin 0 -> 371407 bytes
.../increase-parallelism.png | Bin 0 -> 420930 bytes
.../2022-05-18-latency-part1/scenario1-simple.png | Bin 0 -> 41583 bytes
.../scenario2-eventtime.png | Bin 0 -> 42495 bytes
.../watermark-interval.png | Bin 0 -> 205735 bytes
.../img/blog/2022-05-23-latency-part2/async-io.png | Bin 0 -> 110500 bytes
.../enriching-with-async-io.png | Bin 0 -> 246599 bytes
.../blog/2022-05-23-latency-part2/spread-work.png | Bin 0 -> 153305 bytes
.../changelog-simple.png | Bin 0 -> 91196 bytes
.../checkpoint-timing.png | Bin 0 -> 14324 bytes
.../failing-task.png | Bin 0 -> 52639 bytes
.../log_checkpoints_1.png | Bin 0 -> 41532 bytes
.../log_checkpoints_2.png | Bin 0 -> 31553 bytes
.../log_checkpoints_3.png | Bin 0 -> 27329 bytes
.../1-overall-structure.png | Bin 0 -> 159198 bytes
.../2-dynamic-graph.png | Bin 0 -> 237074 bytes
.../3-static-graph-subpartition-mapping.png | Bin 0 -> 65781 bytes
.../4-dynamic-graph-subpartition-mapping.png | Bin 0 -> 224171 bytes
.../5-auto-rebalance.png | Bin 0 -> 97770 bytes
.../parallelism-formula.png | Bin 0 -> 70215 bytes
.../range-formula.png | Bin 0 -> 50121 bytes
.../checkpoint_format.png | Bin 0 -> 96886 bytes
.../checkpoint_trigger.png | Bin 0 -> 146793 bytes
.../2022-07-11-final-checkpoint/example_job.png | Bin 0 -> 26922 bytes
.../example_job_finish.png | Bin 0 -> 42969 bytes
.../2022-07-11-final-checkpoint/finish_cmp.png | Bin 0 -> 26074 bytes
.../stream_batch_cmp.png | Bin 0 -> 44100 bytes
.../delegation_token_framework.svg | 23 +
.../autoscaler_fig1.png | Bin 0 -> 168727 bytes
.../autoscaler_fig2.png | Bin 0 -> 181157 bytes
.../autoscaler_fig3.png | Bin 0 -> 178610 bytes
...neifts-after-enabling-gic-in-wordcount-case.png | Bin 0 -> 223220 bytes
.../costs-after-enabling-gic-in-wordcount-case.png | Bin 0 -> 133642 bytes
.../subtask-level-flame-graph.png | Bin 0 -> 215780 bytes
.../2023-03-23-release-1.17.0/tpc-ds-benchmark.png | Bin 0 -> 603385 bytes
.../source_components.svg | 20 +
.../source_reader.svg | 20 +
.../backpressure_monitor.png | Bin 0 -> 166226 bytes
.../rescaling_performance.png | Bin 0 -> 63024 bytes
.../2023-10-24-release-1.18.0/tpc-ds-benchmark.png | Bin 0 -> 1299594 bytes
.../2024-03-18-release-1.19.0/minibatch_join.png | Bin 0 -> 249117 bytes
.../2024-03-18-release-1.19.0/profiling-res.png | Bin 0 -> 359154 bytes
.../blog/2024-03-18-release-1.19.0/profiling.png | Bin 0 -> 1798443 bytes
.../kinesis_records_sharding.png | Bin 0 -> 242869 bytes
.../kinesis_resharding.png | Bin 0 -> 124755 bytes
.../prometheus-data-model.png | Bin 0 -> 105961 bytes
content/img/blog/GSA-plan.png | Bin 0 -> 54646 bytes
content/img/blog/appeared-in.png | Bin 0 -> 317098 bytes
.../batch-fine-grained-fault-tolerance/example.png | Bin 0 -> 14833 bytes
.../batch-fine-grained-fault-tolerance/job.png | Bin 0 -> 9701 bytes
.../batch-fine-grained-fault-tolerance/recov.png | Bin 0 -> 20718 bytes
.../batch-fine-grained-fault-tolerance/result.png | Bin 0 -> 96319 bytes
content/img/blog/blog_basic_window.png | Bin 0 -> 144158 bytes
content/img/blog/blog_data_driven.png | Bin 0 -> 96886 bytes
content/img/blog/blog_multi_input.png | Bin 0 -> 112104 bytes
content/img/blog/blog_social_media.png | Bin 0 -> 98666 bytes
content/img/blog/blog_stream_join.png | Bin 0 -> 112305 bytes
content/img/blog/broadcastState/fig1.png | Bin 0 -> 36168 bytes
content/img/blog/broadcastState/fig2.png | Bin 0 -> 44996 bytes
content/img/blog/broadcastState/fig3.png | Bin 0 -> 51518 bytes
content/img/blog/broadcastState/fig4.png | Bin 0 -> 16836 bytes
content/img/blog/broadcastState/fig5.png | Bin 0 -> 14580 bytes
content/img/blog/broadcastState/fig6.png | Bin 0 -> 50676 bytes
content/img/blog/cep-monitoring.svg | 2838 +++++++++
content/img/blog/code-growth.png | Bin 0 -> 87120 bytes
content/img/blog/commit-stats.png | Bin 0 -> 55555 bytes
content/img/blog/community-growth.png | Bin 0 -> 102186 bytes
content/img/blog/data-serialization.png | Bin 0 -> 395455 bytes
content/img/blog/dynamic-tables/append-mode.png | Bin 0 -> 28566 bytes
.../img/blog/dynamic-tables/query-append-out.png | Bin 0 -> 189962 bytes
.../img/blog/dynamic-tables/query-groupBy-cnt.png | Bin 0 -> 125589 bytes
.../dynamic-tables/query-groupBy-window-cnt.png | Bin 0 -> 154035 bytes
.../img/blog/dynamic-tables/query-update-out.png | Bin 0 -> 302496 bytes
content/img/blog/dynamic-tables/redo-mode.png | Bin 0 -> 81266 bytes
content/img/blog/dynamic-tables/replace-mode.png | Bin 0 -> 23172 bytes
.../blog/dynamic-tables/stream-query-stream.png | Bin 0 -> 177708 bytes
content/img/blog/dynamic-tables/streams.png | Bin 0 -> 409340 bytes
content/img/blog/dynamic-tables/undo-redo-mode.png | Bin 0 -> 72870 bytes
content/img/blog/emr-firefoxsettings.png | Bin 0 -> 176706 bytes
content/img/blog/emr-hadoopversion.png | Bin 0 -> 97799 bytes
content/img/blog/emr-jobmanager.png | Bin 0 -> 84576 bytes
content/img/blog/emr-running.png | Bin 0 -> 78210 bytes
content/img/blog/emr-security.png | Bin 0 -> 76951 bytes
content/img/blog/emr-yarnappmaster.png | Bin 0 -> 85393 bytes
content/img/blog/eo-post-graphic-1.png | Bin 0 -> 106477 bytes
content/img/blog/eo-post-graphic-2.png | Bin 0 -> 124079 bytes
content/img/blog/eo-post-graphic-3.png | Bin 0 -> 160968 bytes
content/img/blog/eo-post-graphic-4.png | Bin 0 -> 225687 bytes
content/img/blog/eo-post-graphic-5.png | Bin 0 -> 184375 bytes
content/img/blog/feature-timeline.png | Bin 0 -> 182292 bytes
content/img/blog/ff-speakers.png | Bin 0 -> 367370 bytes
content/img/blog/flink-1.0.png | Bin 0 -> 114360 bytes
content/img/blog/flink-docker/flink-docker.gif | Bin 0 -> 4844328 bytes
content/img/blog/flink-dow-2016.png | Bin 0 -> 3251 bytes
content/img/blog/flink-dow-2017.png | Bin 0 -> 3356 bytes
content/img/blog/flink-forward-banner.png | Bin 0 -> 37458 bytes
content/img/blog/flink-hod-2016.png | Bin 0 -> 3090 bytes
content/img/blog/flink-hod-2017.png | Bin 0 -> 3225 bytes
content/img/blog/flink-lines-of-code-2016.png | Bin 0 -> 3935 bytes
content/img/blog/flink-lines-of-code-2017.png | Bin 0 -> 3931 bytes
content/img/blog/flink-meetups-dec2016.png | Bin 0 -> 560426 bytes
content/img/blog/flink-meetups-dec2017.png | Bin 0 -> 158700 bytes
...-sql-blog-post-visual-primitive-avro-schema.png | Bin 0 -> 543150 bytes
.../img/blog/flink-pulsar-sql-blog-post-visual.png | Bin 0 -> 68506 bytes
content/img/blog/flink-releases-2016.png | Bin 0 -> 109796 bytes
content/img/blog/flink-releases-2017.png | Bin 0 -> 74945 bytes
content/img/blog/flink-stack.png | Bin 0 -> 32934 bytes
content/img/blog/flink-storm.png | Bin 0 -> 127217 bytes
content/img/blog/flinkSer-int-gc.png | Bin 0 -> 12405 bytes
content/img/blog/flinkSer-int-mem.png | Bin 0 -> 15689 bytes
content/img/blog/github-stats-2016.png | Bin 0 -> 93704 bytes
content/img/blog/github-stats-2017.png | Bin 0 -> 260619 bytes
content/img/blog/hadoop-summit.png | Bin 0 -> 330780 bytes
content/img/blog/hcompat-flow.png | Bin 0 -> 102575 bytes
content/img/blog/hcompat-logos.png | Bin 0 -> 320253 bytes
content/img/blog/incremental_cp_impl_example.svg | 3 +
content/img/blog/iteration.png | Bin 0 -> 24531 bytes
content/img/blog/joins-broadcast.png | Bin 0 -> 399358 bytes
content/img/blog/joins-dist-perf.png | Bin 0 -> 68996 bytes
content/img/blog/joins-hhj.png | Bin 0 -> 552537 bytes
content/img/blog/joins-memmgmt.png | Bin 0 -> 361298 bytes
content/img/blog/joins-repartition.png | Bin 0 -> 429729 bytes
content/img/blog/joins-single-perf.png | Bin 0 -> 73030 bytes
content/img/blog/joins-smj.png | Bin 0 -> 511803 bytes
content/img/blog/key-groups.svg | 4 +
content/img/blog/kryoSer-int-gc.png | Bin 0 -> 12018 bytes
content/img/blog/kryoSer-int-mem.png | Bin 0 -> 16747 bytes
content/img/blog/list-checkpointed.svg | 4 +
content/img/blog/meetup-map.png | Bin 0 -> 176074 bytes
content/img/blog/memory-alloc.png | Bin 0 -> 299878 bytes
content/img/blog/memory-mgmt.png | Bin 0 -> 360975 bytes
content/img/blog/neighborhood.png | Bin 0 -> 18813 bytes
content/img/blog/new-dashboard-screenshot.png | Bin 0 -> 570241 bytes
content/img/blog/objHeap-int-gc.png | Bin 0 -> 22921 bytes
content/img/blog/objHeap-int-mem.png | Bin 0 -> 17259 bytes
content/img/blog/patterns-blog-2/broadcast.png | Bin 0 -> 156450 bytes
content/img/blog/patterns-blog-2/forward.png | Bin 0 -> 112715 bytes
content/img/blog/patterns-blog-2/hash.png | Bin 0 -> 259743 bytes
content/img/blog/patterns-blog-2/job-graph.png | Bin 0 -> 426837 bytes
content/img/blog/patterns-blog-2/rebalance.png | Bin 0 -> 142683 bytes
content/img/blog/patterns-blog-2/rule-dsl.png | Bin 0 -> 166981 bytes
.../img/blog/patterns-blog-3/evaluation-delays.png | Bin 0 -> 29120 bytes
.../blog/patterns-blog-3/keyed-state-scoping.png | Bin 0 -> 199113 bytes
content/img/blog/patterns-blog-3/late-events.png | Bin 0 -> 20483 bytes
.../img/blog/patterns-blog-3/pre-aggregation.png | Bin 0 -> 33817 bytes
.../patterns-blog-3/sample-rule-definition.png | Bin 0 -> 98413 bytes
content/img/blog/patterns-blog-3/time-windows.png | Bin 0 -> 37632 bytes
content/img/blog/patterns-blog-3/type-kryo.png | Bin 0 -> 28294 bytes
content/img/blog/patterns-blog-3/type-pojo.png | Bin 0 -> 34853 bytes
content/img/blog/patterns-blog-3/widest-window.png | Bin 0 -> 90233 bytes
.../img/blog/patterns-blog-3/window-clean-up.png | Bin 0 -> 15498 bytes
content/img/blog/plan_visualizer1.png | Bin 0 -> 68108 bytes
content/img/blog/plan_visualizer2.png | Bin 0 -> 149860 bytes
content/img/blog/pulsar-flink/image-1.png | Bin 0 -> 71491 bytes
content/img/blog/pulsar-flink/image-2.png | Bin 0 -> 180408 bytes
content/img/blog/pulsar-flink/image-3.png | Bin 0 -> 144626 bytes
content/img/blog/pulsar-flink/image-4.png | Bin 0 -> 312336 bytes
content/img/blog/pulsar-flink/image-5.png | Bin 0 -> 563779 bytes
content/img/blog/reduce-on-neighbors.png | Bin 0 -> 34903 bytes
content/img/blog/release-19-flip1.png | Bin 0 -> 32435 bytes
content/img/blog/release-19-stack.png | Bin 0 -> 66386 bytes
content/img/blog/release-19-web1.png | Bin 0 -> 121643 bytes
content/img/blog/release-19-web2.png | Bin 0 -> 133292 bytes
content/img/blog/robomongo.png | Bin 0 -> 81386 bytes
content/img/blog/session-windows.svg | 22 +
content/img/blog/smirk.png | Bin 0 -> 5176 bytes
content/img/blog/sort-benchmark.png | Bin 0 -> 73111 bytes
content/img/blog/sorting-binary-data-1.png | Bin 0 -> 251023 bytes
content/img/blog/sorting-binary-data-2.png | Bin 0 -> 335940 bytes
content/img/blog/sorting-binary-data-3.png | Bin 0 -> 278178 bytes
content/img/blog/speaker-logos-ff2016.png | Bin 0 -> 559588 bytes
content/img/blog/speaker-logos-ff2017.png | Bin 0 -> 87833 bytes
content/img/blog/sql_client_demo.gif | Bin 0 -> 924253 bytes
content/img/blog/sssp.png | Bin 0 -> 70736 bytes
content/img/blog/stateless-stateful-streaming.svg | 4 +
content/img/blog/stream-sql/new-table-api.png | Bin 0 -> 461211 bytes
content/img/blog/stream-sql/old-table-api.png | Bin 0 -> 336406 bytes
.../changelog-producer-full-compaction.png | Bin 0 -> 103043 bytes
content/img/blog/table-store/table-store-0.2.png | Bin 0 -> 225275 bytes
.../blog/table-store/table-store-architecture.png | Bin 0 -> 145608 bytes
.../blink-flink-tpch.png | Bin 0 -> 483500 bytes
.../blink-spark-tpcds.png | Bin 0 -> 50441 bytes
.../bounded-unbounded.png | Bin 0 -> 176524 bytes
.../sort-performance.png | Bin 0 -> 24953 bytes
.../stream-batch-joins.png | Bin 0 -> 47644 bytes
content/img/blog/user-song-graph.png | Bin 0 -> 16140 bytes
content/img/blog/user-song-to-user-user.png | Bin 0 -> 42974 bytes
content/img/blog/vertex-centric-plan.png | Bin 0 -> 37105 bytes
content/img/blog/window-intro/window-mechanics.png | Bin 0 -> 541234 bytes
.../img/blog/window-intro/window-rolling-sum.png | Bin 0 -> 87851 bytes
.../blog/window-intro/window-sliding-window.png | Bin 0 -> 342969 bytes
content/img/blog/window-intro/window-stream.png | Bin 0 -> 38116 bytes
.../blog/window-intro/window-tumbling-window.png | Bin 0 -> 234969 bytes
content/img/blog/window-intro/windows-keyed.png | Bin 0 -> 454123 bytes
content/img/bounded-unbounded.png | Bin 0 -> 176524 bytes
content/img/bouygues-logo.jpg | Bin 0 -> 10810 bytes
content/img/capital-one-logo.png | Bin 0 -> 32868 bytes
content/img/continuous_streams.png | Bin 0 -> 45433 bytes
content/img/deployment-modes.png | Bin 0 -> 256031 bytes
content/img/distributed_snapshots.png | Bin 0 -> 51039 bytes
content/img/ecosystem_logos.png | Bin 0 -> 234956 bytes
content/img/ericsson-logo.png | Bin 0 -> 3199 bytes
content/img/exactly_once_state.png | Bin 0 -> 11460 bytes
content/img/features/continuous_streams.png | Bin 0 -> 45433 bytes
content/img/features/distributed_snapshots.png | Bin 0 -> 51039 bytes
content/img/features/ecosystem_logos.png | Bin 0 -> 234956 bytes
content/img/features/exactly_once_state.png | Bin 0 -> 11460 bytes
content/img/features/iterations.png | Bin 0 -> 135824 bytes
content/img/features/memory_heap_division.png | Bin 0 -> 42006 bytes
content/img/features/one_runtime.png | Bin 0 -> 32450 bytes
content/img/features/optimizer_choice.png | Bin 0 -> 32423 bytes
content/img/features/out_of_order_stream.png | Bin 0 -> 16488 bytes
content/img/features/streaming_performance.png | Bin 0 -> 55480 bytes
content/img/features/windows.png | Bin 0 -> 5478 bytes
content/img/flink-blog-icon-dark.svg | 8 +
content/img/flink-blog-icon-light.svg | 8 +
content/img/flink-compatibility-icon-dark.svg | 17 +
content/img/flink-compatibility-icon-light.svg | 17 +
content/img/flink-event-driven-icon-dark.svg | 19 +
content/img/flink-event-driven-icon-light.svg | 20 +
content/img/flink-forward-asia.png | Bin 0 -> 267598 bytes
content/img/flink-forward.png | Bin 0 -> 19207 bytes
content/img/flink-front-graphic-update.png | Bin 0 -> 173318 bytes
content/img/flink-front-graphic.png | Bin 0 -> 43867 bytes
content/img/flink-github-icon-dark.svg | 4 +
content/img/flink-github-icon-light.svg | 4 +
content/img/flink-header-logo.svg | 211 +
content/img/flink-home-graphic.png | Bin 0 -> 448884 bytes
content/img/flink-layered-apis-icon-dark.svg | 18 +
content/img/flink-layered-apis-icon-light.svg | 18 +
content/img/flink-operational-icon-dark.svg | 16 +
content/img/flink-operational-icon-light.svg | 17 +
content/img/flink-performance-icon-dark.svg | 17 +
content/img/flink-performance-icon-light.svg | 17 +
content/img/flink-pipeline-etl-icon-dark.svg | 31 +
content/img/flink-pipeline-etl-icon-light.svg | 33 +
content/img/flink-scalability-icon-dark.svg | 19 +
content/img/flink-scalability-icon-light.svg | 19 +
content/img/flink-sine-wave-narrow.svg | 7 +
content/img/flink-sine-wave.svg | 7 +
content/img/flink-stack-frontpage.png | Bin 0 -> 33857 bytes
content/img/flink-stack-small.png | Bin 0 -> 55877 bytes
content/img/flink-stack.png | Bin 0 -> 87387 bytes
content/img/flink-stream-batch-icon-dark.svg | 17 +
content/img/flink-stream-batch-icon-light.svg | 17 +
content/img/flink-summer-camp.png | Bin 0 -> 375227 bytes
content/img/flink-twitter-icon-dark.svg | 5 +
content/img/flink-twitter-icon-light.svg | 5 +
content/img/flink_feature_radar.svg | 298 +
content/img/flink_feature_radar_2.svg | 3 +
content/img/flink_feature_radar_3.svg | 4 +
content/img/flink_feature_radar_4.svg | 739 +++
content/img/flink_feature_radar_zh.svg | 297 +
content/img/flink_feature_radar_zh_2.svg | 3 +
content/img/flink_feature_radar_zh_3.svg | 4 +
content/img/flink_feature_radar_zh_4.svg | 739 +++
content/img/function-state.png | Bin 0 -> 34088 bytes
content/img/iterations.png | Bin 0 -> 135824 bytes
content/img/king-logo.png | Bin 0 -> 42453 bytes
content/img/local-state.png | Bin 0 -> 172758 bytes
content/img/logo.zip | Bin 0 -> 7744668 bytes
content/img/logo/colors/flink_colors.pdf | 3990 ++++++++++++
content/img/logo/colors/flink_colors.pptx | Bin 0 -> 34582 bytes
.../img/logo/png/100/flink_squirrel_100_black.png | Bin 0 -> 7516 bytes
.../img/logo/png/100/flink_squirrel_100_color.png | Bin 0 -> 16446 bytes
.../img/logo/png/100/flink_squirrel_100_white.png | Bin 0 -> 6096 bytes
content/img/logo/png/1000/flink1000_black.png | Bin 0 -> 79026 bytes
.../img/logo/png/1000/flink1000_color_black.png | Bin 0 -> 192934 bytes
.../img/logo/png/1000/flink1000_color_white.png | Bin 0 -> 192809 bytes
content/img/logo/png/1000/flink1000_white.png | Bin 0 -> 69039 bytes
content/img/logo/png/1000/flink_squirrel_1000.png | Bin 0 -> 258648 bytes
.../logo/png/1000/flink_squirrel_black_1000.png | Bin 0 -> 105074 bytes
.../logo/png/1000/flink_squirrel_white_1000.png | Bin 0 -> 91158 bytes
content/img/logo/png/200/flink2_200_black.png | Bin 0 -> 8958 bytes
.../img/logo/png/200/flink2_200_color_black.png | Bin 0 -> 18470 bytes
.../img/logo/png/200/flink2_200_color_white.png | Bin 0 -> 18377 bytes
content/img/logo/png/200/flink2_200_white.png | Bin 0 -> 7180 bytes
.../img/logo/png/200/flink_squirrel_200_black.png | Bin 0 -> 16353 bytes
.../img/logo/png/200/flink_squirrel_200_color.png | Bin 0 -> 40591 bytes
.../img/logo/png/200/flink_squirrel_200_white.png | Bin 0 -> 13315 bytes
content/img/logo/png/50/black_50.png | Bin 0 -> 3487 bytes
content/img/logo/png/50/color_50.png | Bin 0 -> 6182 bytes
content/img/logo/png/50/white_50.png | Bin 0 -> 2457 bytes
content/img/logo/png/500/flink2_500_black.png | Bin 0 -> 25677 bytes
.../img/logo/png/500/flink2_500_color_black.png | Bin 0 -> 59849 bytes
.../img/logo/png/500/flink2_500_color_white.png | Bin 0 -> 59550 bytes
content/img/logo/png/500/flink2_500_white.png | Bin 0 -> 20590 bytes
content/img/logo/png/500/flink500_black.png | Bin 0 -> 36289 bytes
content/img/logo/png/500/flink500_color_black.png | Bin 0 -> 89112 bytes
content/img/logo/png/500/flink500_color_white.png | Bin 0 -> 89131 bytes
content/img/logo/png/500/flink500_white.png | Bin 0 -> 30192 bytes
content/img/logo/png/500/flink_3_500.png | Bin 0 -> 14804 bytes
content/img/logo/png/500/flink_squirrel_500.png | Bin 0 -> 119199 bytes
.../img/logo/png/500/flink_squirrel_500_black.png | Bin 0 -> 48815 bytes
.../img/logo/png/500/flink_squirrel_500_white.png | Bin 0 -> 41430 bytes
content/img/logo/psd/flink50.psd | Bin 0 -> 407654 bytes
content/img/logo/psd/flink_1000.psd | Bin 0 -> 1966600 bytes
content/img/logo/psd/flink_3_500.psd | Bin 0 -> 844305 bytes
content/img/logo/psd/flink_5000.psd | Bin 0 -> 1528938 bytes
content/img/logo/psd/flink_squirrel.psd | Bin 0 -> 1970196 bytes
content/img/logo/psd/flink_squirrel_1000.psd | Bin 0 -> 2283989 bytes
content/img/logo/rsz_1flink-stack.png | Bin 0 -> 55877 bytes
content/img/logo/svg/black_outline.svg | 473 ++
content/img/logo/svg/color_black.svg | 1568 +++++
content/img/logo/svg/color_white.svg | 1570 +++++
content/img/logo/svg/flink_logos.svg | 6425 ++++++++++++++++++++
content/img/logo/svg/flink_logotypes.svg | 3835 ++++++++++++
content/img/logo/svg/white_filled.svg | 231 +
content/img/managed-state.png | Bin 0 -> 22870 bytes
content/img/memory_heap_division.png | Bin 0 -> 42006 bytes
content/img/navbar-brand-logo.jpg | Bin 0 -> 18470 bytes
content/img/navbar-brand-logo.png | Bin 0 -> 11566 bytes
content/img/one_runtime.png | Bin 0 -> 32450 bytes
content/img/optimizer_choice.png | Bin 0 -> 32423 bytes
content/img/otto-group-logo.jpg | Bin 0 -> 125443 bytes
content/img/out_of_order_stream.png | Bin 0 -> 16488 bytes
content/img/parallel_dataflows.png | Bin 0 -> 74583 bytes
content/img/poweredby/alibaba-logo.png | Bin 0 -> 17811 bytes
content/img/poweredby/aws-logo.png | Bin 0 -> 29170 bytes
content/img/poweredby/bettercloud-logo.png | Bin 0 -> 51382 bytes
content/img/poweredby/bouygues-logo.jpg | Bin 0 -> 10810 bytes
content/img/poweredby/capital-one-logo.png | Bin 0 -> 17772 bytes
content/img/poweredby/comcast-logo.png | Bin 0 -> 33410 bytes
content/img/poweredby/criteo-logo.png | Bin 0 -> 27694 bytes
content/img/poweredby/didi-logo.png | Bin 0 -> 50878 bytes
content/img/poweredby/dtrb-logo.png | Bin 0 -> 24984 bytes
content/img/poweredby/ebay-logo.png | Bin 0 -> 23050 bytes
content/img/poweredby/ericsson-logo.png | Bin 0 -> 10685 bytes
content/img/poweredby/gojek-logo.png | Bin 0 -> 12795 bytes
content/img/poweredby/huawei-logo.png | Bin 0 -> 22468 bytes
content/img/poweredby/king-logo.png | Bin 0 -> 21236 bytes
content/img/poweredby/klaviyo-logo.png | Bin 0 -> 20004 bytes
content/img/poweredby/kuaishou-logo.jpg | Bin 0 -> 25224 bytes
content/img/poweredby/lyft-logo.png | Bin 0 -> 17387 bytes
content/img/poweredby/mediamath-logo.png | Bin 0 -> 24106 bytes
content/img/poweredby/mux-logo.png | Bin 0 -> 51065 bytes
content/img/poweredby/oppo-logo.png | Bin 0 -> 35963 bytes
content/img/poweredby/otto-group-logo.png | Bin 0 -> 16511 bytes
content/img/poweredby/ovh-logo.png | Bin 0 -> 18918 bytes
content/img/poweredby/pinterest-logo.png | Bin 0 -> 31802 bytes
content/img/poweredby/razorpay-logo.png | Bin 0 -> 22780 bytes
content/img/poweredby/researchgate-logo.png | Bin 0 -> 8766 bytes
content/img/poweredby/sktelecom-logo.png | Bin 0 -> 22554 bytes
content/img/poweredby/telefonica-next-logo.png | Bin 0 -> 62722 bytes
content/img/poweredby/tencent-logo.png | Bin 0 -> 4693 bytes
content/img/poweredby/uber-logo.png | Bin 0 -> 29295 bytes
content/img/poweredby/vip-logo.png | Bin 0 -> 21680 bytes
content/img/poweredby/xiaomi-logo.png | Bin 0 -> 48194 bytes
content/img/poweredby/yelp-logo.png | Bin 0 -> 36662 bytes
content/img/poweredby/zalando-logo.jpg | Bin 0 -> 9654 bytes
content/img/researchgate-logo.png | Bin 0 -> 10074 bytes
content/img/rocksdb_rescaling_benchmark.png | Bin 0 -> 450221 bytes
content/img/runtime.png | Bin 0 -> 20205 bytes
content/img/savepoints.png | Bin 0 -> 55433 bytes
content/img/source-transform-sink-update.png | Bin 0 -> 40353 bytes
content/img/stack.png | Bin 0 -> 87387 bytes
content/img/stateful-functions/favicon.png | Bin 0 -> 61427 bytes
.../stateful-functions/flink_dataflow_graph.png | Bin 0 -> 54524 bytes
.../img/stateful-functions/github-logo-link.png | Bin 0 -> 4268 bytes
content/img/stateful-functions/model-score.svg | 580 ++
.../img/stateful-functions/statefun-colocated.png | Bin 0 -> 91067 bytes
.../img/stateful-functions/statefun-embedded.png | Bin 0 -> 72946 bytes
.../statefun-event-driven-db.png | Bin 0 -> 69060 bytes
.../img/stateful-functions/statefun-overview.png | Bin 0 -> 66340 bytes
content/img/stateful-functions/statefun-prop1.png | Bin 0 -> 48405 bytes
content/img/stateful-functions/statefun-prop2.png | Bin 0 -> 51477 bytes
content/img/stateful-functions/statefun-prop3.png | Bin 0 -> 42167 bytes
content/img/stateful-functions/statefun-prop4.png | Bin 0 -> 39043 bytes
content/img/stateful-functions/statefun-prop5.png | Bin 0 -> 40658 bytes
content/img/stateful-functions/statefun-prop6.png | Bin 0 -> 32809 bytes
content/img/stateful-functions/statefun-remote.png | Bin 0 -> 117111 bytes
.../img/stateful-functions/twitter-logo-link.png | Bin 0 -> 8862 bytes
content/img/streaming_performance.png | Bin 0 -> 55480 bytes
content/img/test.drawio | 13 +
content/img/usecases-analytics.png | Bin 0 -> 130058 bytes
content/img/usecases-datapipelines.png | Bin 0 -> 98239 bytes
content/img/usecases-eventdrivenapps.png | Bin 0 -> 168354 bytes
content/img/windows.png | Bin 0 -> 5478 bytes
content/img/zalando-logo.png | Bin 0 -> 26407 bytes
content/index.html | 800 +++
content/index.xml | 2056 +++++++
content/js/anchor.min.js | 6 +
content/js/flink.js | 190 +
content/js/track-search-terms.js | 52 +
content/katex/auto-render.min.js | 1 +
content/katex/fonts/KaTeX_AMS-Regular.ttf | Bin 0 -> 70972 bytes
content/katex/fonts/KaTeX_AMS-Regular.woff | Bin 0 -> 38868 bytes
content/katex/fonts/KaTeX_AMS-Regular.woff2 | Bin 0 -> 32944 bytes
content/katex/fonts/KaTeX_Caligraphic-Bold.ttf | Bin 0 -> 19316 bytes
content/katex/fonts/KaTeX_Caligraphic-Bold.woff | Bin 0 -> 11696 bytes
content/katex/fonts/KaTeX_Caligraphic-Bold.woff2 | Bin 0 -> 10448 bytes
content/katex/fonts/KaTeX_Caligraphic-Regular.ttf | Bin 0 -> 18684 bytes
content/katex/fonts/KaTeX_Caligraphic-Regular.woff | Bin 0 -> 11460 bytes
.../katex/fonts/KaTeX_Caligraphic-Regular.woff2 | Bin 0 -> 10240 bytes
content/katex/fonts/KaTeX_Fraktur-Bold.ttf | Bin 0 -> 35660 bytes
content/katex/fonts/KaTeX_Fraktur-Bold.woff | Bin 0 -> 22632 bytes
content/katex/fonts/KaTeX_Fraktur-Bold.woff2 | Bin 0 -> 20360 bytes
content/katex/fonts/KaTeX_Fraktur-Regular.ttf | Bin 0 -> 34352 bytes
content/katex/fonts/KaTeX_Fraktur-Regular.woff | Bin 0 -> 22088 bytes
content/katex/fonts/KaTeX_Fraktur-Regular.woff2 | Bin 0 -> 19784 bytes
content/katex/fonts/KaTeX_Main-Bold.ttf | Bin 0 -> 60784 bytes
content/katex/fonts/KaTeX_Main-Bold.woff | Bin 0 -> 35464 bytes
content/katex/fonts/KaTeX_Main-Bold.woff2 | Bin 0 -> 30244 bytes
content/katex/fonts/KaTeX_Main-BoldItalic.ttf | Bin 0 -> 44496 bytes
content/katex/fonts/KaTeX_Main-BoldItalic.woff | Bin 0 -> 25352 bytes
content/katex/fonts/KaTeX_Main-BoldItalic.woff2 | Bin 0 -> 21944 bytes
content/katex/fonts/KaTeX_Main-Italic.ttf | Bin 0 -> 47640 bytes
content/katex/fonts/KaTeX_Main-Italic.woff | Bin 0 -> 26228 bytes
content/katex/fonts/KaTeX_Main-Italic.woff2 | Bin 0 -> 22748 bytes
content/katex/fonts/KaTeX_Main-Regular.ttf | Bin 0 -> 69520 bytes
content/katex/fonts/KaTeX_Main-Regular.woff | Bin 0 -> 38112 bytes
content/katex/fonts/KaTeX_Main-Regular.woff2 | Bin 0 -> 32464 bytes
content/katex/fonts/KaTeX_Math-BoldItalic.ttf | Bin 0 -> 39308 bytes
content/katex/fonts/KaTeX_Math-BoldItalic.woff | Bin 0 -> 22324 bytes
content/katex/fonts/KaTeX_Math-BoldItalic.woff2 | Bin 0 -> 19720 bytes
content/katex/fonts/KaTeX_Math-Italic.ttf | Bin 0 -> 40992 bytes
content/katex/fonts/KaTeX_Math-Italic.woff | Bin 0 -> 22844 bytes
content/katex/fonts/KaTeX_Math-Italic.woff2 | Bin 0 -> 20096 bytes
content/katex/fonts/KaTeX_SansSerif-Bold.ttf | Bin 0 -> 33688 bytes
content/katex/fonts/KaTeX_SansSerif-Bold.woff | Bin 0 -> 18516 bytes
content/katex/fonts/KaTeX_SansSerif-Bold.woff2 | Bin 0 -> 15732 bytes
content/katex/fonts/KaTeX_SansSerif-Italic.ttf | Bin 0 -> 30960 bytes
content/katex/fonts/KaTeX_SansSerif-Italic.woff | Bin 0 -> 17572 bytes
content/katex/fonts/KaTeX_SansSerif-Italic.woff2 | Bin 0 -> 15024 bytes
content/katex/fonts/KaTeX_SansSerif-Regular.ttf | Bin 0 -> 29812 bytes
content/katex/fonts/KaTeX_SansSerif-Regular.woff | Bin 0 -> 16228 bytes
content/katex/fonts/KaTeX_SansSerif-Regular.woff2 | Bin 0 -> 13708 bytes
content/katex/fonts/KaTeX_Script-Regular.ttf | Bin 0 -> 24620 bytes
content/katex/fonts/KaTeX_Script-Regular.woff | Bin 0 -> 13428 bytes
content/katex/fonts/KaTeX_Script-Regular.woff2 | Bin 0 -> 12064 bytes
content/katex/fonts/KaTeX_Size1-Regular.ttf | Bin 0 -> 12916 bytes
content/katex/fonts/KaTeX_Size1-Regular.woff | Bin 0 -> 6696 bytes
content/katex/fonts/KaTeX_Size1-Regular.woff2 | Bin 0 -> 5592 bytes
content/katex/fonts/KaTeX_Size2-Regular.ttf | Bin 0 -> 12172 bytes
content/katex/fonts/KaTeX_Size2-Regular.woff | Bin 0 -> 6436 bytes
content/katex/fonts/KaTeX_Size2-Regular.woff2 | Bin 0 -> 5392 bytes
content/katex/fonts/KaTeX_Size3-Regular.ttf | Bin 0 -> 8120 bytes
content/katex/fonts/KaTeX_Size3-Regular.woff | Bin 0 -> 4568 bytes
content/katex/fonts/KaTeX_Size3-Regular.woff2 | Bin 0 -> 3728 bytes
content/katex/fonts/KaTeX_Size4-Regular.ttf | Bin 0 -> 11016 bytes
content/katex/fonts/KaTeX_Size4-Regular.woff | Bin 0 -> 6184 bytes
content/katex/fonts/KaTeX_Size4-Regular.woff2 | Bin 0 -> 5028 bytes
content/katex/fonts/KaTeX_Typewriter-Regular.ttf | Bin 0 -> 35924 bytes
content/katex/fonts/KaTeX_Typewriter-Regular.woff | Bin 0 -> 20260 bytes
content/katex/fonts/KaTeX_Typewriter-Regular.woff2 | Bin 0 -> 17272 bytes
content/katex/katex.min.css | 1 +
content/katex/katex.min.js | 1 +
content/manifest.json | 15 +
content/material/index.html | 911 +++
content/mermaid.min.js | 49 +
content/navbar-brand-logo.jpg | Bin 0 -> 18470 bytes
content/news/2014/08/26/release-0.6.html | 10 +
content/news/2014/09/26/release-0.6.1.html | 10 +
content/news/2014/10/03/upcoming_events.html | 10 +
content/news/2014/11/04/release-0.7.0.html | 10 +
content/news/2014/11/18/hadoop-compatibility.html | 10 +
content/news/2015/01/06/december-in-flink.html | 10 +
content/news/2015/01/21/release-0.8.html | 10 +
content/news/2015/02/04/january-in-flink.html | 10 +
content/news/2015/02/09/streaming-example.html | 10 +
.../news/2015/03/02/february-2015-in-flink.html | 10 +
.../13/peeking-into-Apache-Flinks-Engine-Room.html | 10 +
content/news/2015/04/07/march-in-flink.html | 10 +
.../news/2015/04/13/release-0.9.0-milestone1.html | 10 +
.../2015/05/11/Juggling-with-Bits-and-Bytes.html | 10 +
.../news/2015/05/14/Community-update-April.html | 10 +
.../24/announcing-apache-flink-0.9.0-release.html | 10 +
.../news/2015/08/24/introducing-flink-gelly.html | 10 +
content/news/2015/09/01/release-0.9.1.html | 10 +
content/news/2015/09/03/flink-forward.html | 10 +
content/news/2015/09/16/off-heap-memory.html | 10 +
content/news/2015/11/16/release-0.10.0.html | 10 +
content/news/2015/11/27/release-0.10.1.html | 10 +
content/news/2015/12/04/Introducing-windows.html | 10 +
content/news/2015/12/11/storm-compatibility.html | 10 +
content/news/2015/12/18/a-year-in-review.html | 10 +
content/news/2016/02/11/release-0.10.2.html | 10 +
content/news/2016/03/08/release-1.0.0.html | 10 +
content/news/2016/04/06/cep-monitoring.html | 10 +
content/news/2016/04/06/release-1.0.1.html | 10 +
.../news/2016/04/14/flink-forward-announce.html | 10 +
content/news/2016/04/22/release-1.0.2.html | 10 +
content/news/2016/05/11/release-1.0.3.html | 10 +
content/news/2016/05/24/stream-sql.html | 10 +
content/news/2016/08/08/release-1.1.0.html | 10 +
content/news/2016/08/11/release-1.1.1.html | 10 +
content/news/2016/08/24/ff16-keynotes-panels.html | 10 +
content/news/2016/09/05/release-1.1.2.html | 10 +
content/news/2016/10/12/release-1.1.3.html | 10 +
content/news/2016/12/19/2016-year-in-review.html | 10 +
content/news/2016/12/21/release-1.1.4.html | 10 +
content/news/2017/02/06/release-1.2.0.html | 10 +
content/news/2017/03/23/release-1.1.5.html | 10 +
content/news/2017/03/29/table-sql-api-update.html | 10 +
content/news/2017/04/04/dynamic-tables.html | 10 +
content/news/2017/04/26/release-1.2.1.html | 10 +
content/news/2017/05/16/official-docker-image.html | 10 +
content/news/2017/06/01/release-1.3.0.html | 10 +
content/news/2017/06/23/release-1.3.1.html | 10 +
content/news/2017/08/05/release-1.3.2.html | 10 +
.../2017/11/22/release-1.4-and-1.5-timeline.html | 10 +
content/news/2017/12/12/release-1.4.0.html | 10 +
content/news/2017/12/21/2017-year-in-review.html | 10 +
content/news/2018/02/15/release-1.4.1.html | 10 +
content/news/2018/03/08/release-1.4.2.html | 10 +
content/news/2018/03/15/release-1.3.3.html | 10 +
content/news/2018/05/25/release-1.5.0.html | 10 +
content/news/2018/07/12/release-1.5.1.html | 10 +
content/news/2018/07/31/release-1.5.2.html | 10 +
content/news/2018/08/09/release-1.6.0.html | 10 +
content/news/2018/08/21/release-1.5.3.html | 10 +
content/news/2018/09/20/release-1.5.4.html | 10 +
content/news/2018/09/20/release-1.6.1.html | 10 +
content/news/2018/10/29/release-1.5.5.html | 10 +
content/news/2018/10/29/release-1.6.2.html | 10 +
content/news/2018/11/30/release-1.7.0.html | 10 +
content/news/2018/12/21/release-1.7.1.html | 10 +
content/news/2018/12/22/release-1.6.3.html | 10 +
content/news/2018/12/26/release-1.5.6.html | 10 +
.../2019/02/13/unified-batch-streaming-blink.html | 10 +
content/news/2019/02/15/release-1.7.2.html | 10 +
.../news/2019/02/25/monitoring-best-practices.html | 10 +
content/news/2019/02/25/release-1.6.4.html | 10 +
content/news/2019/03/06/ffsf-preview.html | 10 +
content/news/2019/04/09/release-1.8.0.html | 10 +
content/news/2019/04/17/sod.html | 10 +
content/news/2019/07/02/release-1.8.1.html | 10 +
content/news/2019/08/22/release-1.9.0.html | 10 +
content/news/2019/09/10/community-update.html | 10 +
content/news/2019/09/11/release-1.8.2.html | 10 +
content/news/2019/10/18/release-1.9.1.html | 10 +
.../query-pulsar-streams-using-apache-flink.html | 10 +
content/news/2019/12/09/flink-kubernetes-kudo.html | 10 +
content/news/2019/12/11/release-1.8.3.html | 10 +
content/news/2020/01/15/demo-fraud-detection.html | 10 +
...ked-interacting-with-state-in-apache-flink.html | 10 +
content/news/2020/01/30/release-1.9.2.html | 10 +
.../a-guide-for-unit-testing-in-apache-flink.html | 10 +
content/news/2020/02/11/release-1.10.0.html | 10 +
content/news/2020/02/20/ddl.html | 10 +
.../news/2020/03/24/demo-fraud-detection-2.html | 10 +
content/news/2020/04/01/community-update.html | 10 +
.../news/2020/04/07/release-statefun-2.0.0.html | 10 +
.../04/15/flink-serialization-tuning-vol-1.html | 10 +
.../memory-management-improvements-flink-1.10.html | 10 +
content/news/2020/04/24/release-1.9.3.html | 10 +
content/news/2020/05/04/season-of-docs.html | 10 +
content/news/2020/05/07/community-update.html | 10 +
content/news/2020/05/12/release-1.10.1.html | 10 +
.../news/2020/06/09/release-statefun-2.1.0.html | 10 +
content/news/2020/06/11/community-update.html | 10 +
.../news/2020/06/15/flink-on-zeppelin-part1.html | 10 +
content/news/2020/07/06/release-1.11.0.html | 10 +
content/news/2020/07/14/application-mode.html | 10 +
content/news/2020/07/21/release-1.11.1.html | 10 +
content/news/2020/07/27/community-update.html | 10 +
.../news/2020/07/30/demo-fraud-detection-3.html | 10 +
content/news/2020/08/06/external-resource.html | 10 +
content/news/2020/08/20/flink-docker.html | 10 +
content/news/2020/08/25/release-1.10.2.html | 10 +
content/news/2020/09/04/community-update.html | 10 +
content/news/2020/09/17/release-1.11.2.html | 10 +
.../news/2020/09/28/release-statefun-2.2.0.html | 10 +
.../2020/10/13/stateful-serverless-internals.html | 10 +
.../news/2020/11/11/release-statefun-2.2.1.html | 10 +
content/news/2020/12/10/release-1.12.0.html | 10 +
content/news/2020/12/18/release-1.11.3.html | 10 +
.../news/2021/01/02/release-statefun-2.2.2.html | 10 +
.../01/11/batch-fine-grained-fault-tolerance.html | 10 +
content/news/2021/01/19/release-1.12.1.html | 10 +
content/news/2021/01/29/release-1.10.3.html | 10 +
content/news/2021/03/03/release-1.12.2.html | 10 +
.../news/2021/04/15/release-statefun-3.0.0.html | 10 +
content/news/2021/04/29/release-1.12.3.html | 10 +
content/news/2021/05/03/release-1.13.0.html | 10 +
content/news/2021/05/21/release-1.12.4.html | 10 +
content/news/2021/05/28/release-1.13.1.html | 10 +
content/news/2021/08/06/release-1.12.5.html | 10 +
content/news/2021/08/06/release-1.13.2.html | 10 +
content/news/2021/08/09/release-1.11.4.html | 10 +
content/news/2021/08/31/release-1.14.0-rc0.html | 10 +
.../news/2021/08/31/release-statefun-3.1.0.html | 10 +
content/news/2021/09/29/release-1.14.0.html | 10 +
content/news/2021/10/19/release-1.13.3.html | 10 +
content/news/2021/12/16/log4j-patch-releases.html | 10 +
.../news/2021/12/22/log4j-statefun-release.html | 10 +
content/news/2022/01/07/release-ml-2.0.0.html | 10 +
content/news/2022/01/17/release-1.14.3.html | 10 +
.../news/2022/01/31/release-statefun-3.2.0.html | 10 +
content/news/2022/02/18/release-1.13.6.html | 10 +
content/news/2022/03/11/release-1.14.4.html | 10 +
.../04/03/release-kubernetes-operator-0.1.0.html | 10 +
content/news/2022/05/05/1.15-announcement.html | 10 +
.../news/2022/05/11/release-table-store-0.1.0.html | 10 +
.../06/05/release-kubernetes-operator-1.0.0.html | 10 +
content/news/2022/06/22/release-1.14.5.html | 10 +
content/news/2022/07/06/release-1.15.1.html | 10 +
content/news/2022/07/12/release-ml-2.1.0.html | 10 +
.../07/25/release-kubernetes-operator-1.1.0.html | 10 +
content/news/2022/08/25/release-1.15.2.html | 10 +
.../news/2022/08/29/release-table-store-0.2.0.html | 10 +
content/news/2022/09/08/akka-license-change.html | 10 +
content/news/2022/09/28/release-1.14.6.html | 10 +
.../10/07/release-kubernetes-operator-1.2.0.html | 10 +
.../news/2022/10/13/release-table-store-0.2.1.html | 10 +
content/news/2022/10/28/1.16-announcement.html | 10 +
content/news/2022/11/10/release-1.15.3.html | 10 +
.../12/14/release-kubernetes-operator-1.3.0.html | 10 +
.../01/10/release-kubernetes-operator-1.3.1.html | 10 +
.../news/2023/01/13/release-table-store-0.3.0.html | 10 +
.../2023/01/20/delegation-token-framework.html | 10 +
content/news/2023/01/30/release-1.16.1.html | 10 +
.../02/27/release-kubernetes-operator-1.4.0.html | 10 +
content/news/2023/03/23/release-1.17.0.html | 10 +
content/news/2023/04/19/release-ml-2.2.0.html | 10 +
.../05/17/release-kubernetes-operator-1.5.0.html | 10 +
content/news/2023/05/25/release-1.16.2.html | 10 +
content/news/2023/05/25/release-1.17.1.html | 10 +
content/news/2023/07/03/sigmod-system-award.html | 10 +
.../news/2023/08/04/externalized-connectors.html | 10 +
.../08/15/release-kubernetes-operator-1.6.0.html | 10 +
content/news/2023/10/10/release-1.18.0.html | 10 +
.../10/27/release-kubernetes-operator-1.6.1.html | 10 +
.../11/22/release-kubernetes-operator-1.7.0.html | 10 +
content/news/2023/11/29/release-1.16.3.html | 10 +
content/news/2023/11/29/release-1.17.2.html | 10 +
content/news/2024/01/19/release-1.18.1.html | 10 +
content/news/2024/03/18/release-1.19.0.html | 10 +
.../03/21/release-kubernetes-operator-1.8.0.html | 10 +
content/news/2024/05/17/release-cdc-3.1.0.html | 10 +
content/news/2024/06/14/release-1.19.1.html | 10 +
.../news/2024/06/18/release-release-cdc-3.1.1.html | 10 +
.../07/02/release-kubernetes-operator-1.9.0.html | 10 +
content/news/2024/08/02/release-1.20.0.html | 10 +
.../news/2024/09/05/release-release-cdc-3.2.0.html | 10 +
content/news/2024/10/23/release-2.0-preview.html | 10 +
.../10/30/release-kubernetes-operator-1.10.0.html | 10 +
.../news/2024/11/27/release-release-cdc-3.2.1.html | 10 +
content/news/2025/01/21/release-cdc-3.3.0.html | 10 +
content/news/2025/02/12/release-1.19.2.html | 10 +
content/news/2025/02/12/release-1.20.1.html | 10 +
content/posts/index.html | 1874 ++++++
content/posts/index.xml | 1727 ++++++
content/posts/page/1/index.html | 10 +
content/posts/page/10/index.html | 1889 ++++++
content/posts/page/11/index.html | 1875 ++++++
content/posts/page/12/index.html | 1881 ++++++
content/posts/page/13/index.html | 1875 ++++++
content/posts/page/14/index.html | 1871 ++++++
content/posts/page/15/index.html | 1879 ++++++
content/posts/page/16/index.html | 1881 ++++++
content/posts/page/17/index.html | 1869 ++++++
content/posts/page/18/index.html | 1866 ++++++
content/posts/page/19/index.html | 1864 ++++++
content/posts/page/2/index.html | 1898 ++++++
content/posts/page/20/index.html | 1874 ++++++
content/posts/page/21/index.html | 1832 ++++++
content/posts/page/22/index.html | 1824 ++++++
content/posts/page/23/index.html | 1821 ++++++
content/posts/page/24/index.html | 1826 ++++++
content/posts/page/25/index.html | 1715 ++++++
content/posts/page/3/index.html | 1893 ++++++
content/posts/page/4/index.html | 1882 ++++++
content/posts/page/5/index.html | 1869 ++++++
content/posts/page/6/index.html | 1888 ++++++
content/posts/page/7/index.html | 1887 ++++++
content/posts/page/8/index.html | 1897 ++++++
content/posts/page/9/index.html | 1893 ++++++
content/powered-by.html | 10 +
content/powered-by/index.html | 10 +
content/roadmap.html | 10 +
content/roadmap/index.html | 10 +
content/security.html | 10 +
content/security/index.html | 10 +
content/sitemap.xml | 16 +
content/svg/calendar.svg | 1 +
content/svg/edit.svg | 1 +
content/svg/menu.svg | 1 +
content/svg/toc.svg | 1 +
content/svg/translate.svg | 1 +
content/tags/index.html | 606 ++
content/tags/index.xml | 11 +
content/tags/page/1/index.html | 10 +
content/use-cases.html | 10 +
content/use-cases/index.html | 10 +
content/what-is-flink-ml/index.html | 641 ++
content/what-is-flink-table-store/index.html | 641 ++
content/what-is-flink/community/index.html | 1448 +++++
.../what-is-flink/flink-applications/index.html | 831 +++
.../what-is-flink/flink-architecture/index.html | 710 +++
content/what-is-flink/flink-operations/index.html | 672 ++
content/what-is-flink/index.html | 617 ++
content/what-is-flink/index.xml | 74 +
content/what-is-flink/powered-by/index.html | 1485 +++++
content/what-is-flink/roadmap/index.html | 864 +++
content/what-is-flink/security/index.html | 730 +++
content/what-is-flink/special-thanks/index.html | 677 +++
content/what-is-flink/use-cases/index.html | 796 +++
content/what-is-stateful-functions/index.html | 641 ++
.../index.html | 641 ++
...0c56254a1feff879558a57fcaa63d7822dca7d8fd513.js | 594 ++
...63a42a544257a8a958f002fc92240a01c1b89771fc07.js | 1 +
content/zh/404.html | 62 +
content/zh/categories/index.html | 594 ++
content/zh/categories/index.xml | 11 +
content/zh/categories/page/1/index.html | 10 +
content/zh/community.html | 10 +
content/zh/community/index.html | 10 +
.../zh/documentation/flink-cdc-master/index.html | 635 ++
.../zh/documentation/flink-cdc-stable/index.html | 635 ++
.../flink-kubernetes-operator-master/index.html | 635 ++
.../flink-kubernetes-operator-stable/index.html | 635 ++
content/zh/documentation/flink-master/index.html | 635 ++
content/zh/documentation/flink-preview/index.html | 635 ++
content/zh/documentation/flink-stable/index.html | 635 ++
.../flink-stateful-functions-master/index.html | 635 ++
.../flink-stateful-functions-stable/index.html | 635 ++
content/zh/documentation/flinkml-master/index.html | 635 ++
content/zh/documentation/flinkml-stable/index.html | 635 ++
content/zh/documentation/index.html | 614 ++
content/zh/documentation/index.xml | 88 +
content/zh/downloads/index.html | 1466 +++++
content/zh/flink-packages/index.html | 631 ++
content/zh/getting-help.html | 10 +
content/zh/getting-help/index.html | 10 +
content/zh/getting-started/index.html | 614 ++
content/zh/getting-started/index.xml | 53 +
.../zh/getting-started/training-course/index.html | 635 ++
.../zh/getting-started/with-flink-cdc/index.html | 635 ++
.../with-flink-kubernetes-operator/index.html | 635 ++
.../zh/getting-started/with-flink-ml/index.html | 635 ++
.../with-flink-stateful-functions/index.html | 635 ++
content/zh/getting-started/with-flink/index.html | 635 ++
.../code-style-and-quality-common/index.html | 1041 ++++
.../code-style-and-quality-components/index.html | 795 +++
.../code-style-and-quality-formatting/index.html | 806 +++
.../code-style-and-quality-java/index.html | 797 +++
.../code-style-and-quality-preamble/index.html | 675 ++
.../index.html | 727 +++
.../code-style-and-quality-scala/index.html | 738 +++
.../how-to-contribute/contribute-code/index.html | 849 +++
.../contribute-documentation/index.html | 689 +++
.../documentation-style-guide/index.html | 1048 ++++
.../zh/how-to-contribute/getting-help/index.html | 795 +++
.../how-to-contribute/improve-website/index.html | 718 +++
content/zh/how-to-contribute/index.html | 614 ++
content/zh/how-to-contribute/index.xml | 109 +
content/zh/how-to-contribute/overview/index.html | 743 +++
.../zh/how-to-contribute/reviewing-prs/index.html | 712 +++
content/zh/index.html | 788 +++
content/zh/index.xml | 340 ++
content/zh/material/index.html | 903 +++
content/zh/powered-by.html | 10 +
content/zh/powered-by/index.html | 10 +
content/zh/roadmap.html | 10 +
content/zh/roadmap/index.html | 10 +
content/zh/security.html | 10 +
content/zh/security/index.html | 10 +
content/zh/sitemap.xml | 653 ++
content/zh/tags/index.html | 594 ++
content/zh/tags/index.xml | 11 +
content/zh/tags/page/1/index.html | 10 +
content/zh/use-cases.html | 10 +
content/zh/use-cases/index.html | 10 +
content/zh/what-is-flink-ml/index.html | 631 ++
content/zh/what-is-flink-table-store/index.html | 631 ++
content/zh/what-is-flink/community/index.html | 1446 +++++
.../zh/what-is-flink/flink-applications/index.html | 829 +++
.../zh/what-is-flink/flink-architecture/index.html | 723 +++
.../zh/what-is-flink/flink-operations/index.html | 672 ++
content/zh/what-is-flink/index.html | 605 ++
content/zh/what-is-flink/index.xml | 74 +
content/zh/what-is-flink/powered-by/index.html | 1479 +++++
content/zh/what-is-flink/roadmap/index.html | 868 +++
content/zh/what-is-flink/security/index.html | 720 +++
content/zh/what-is-flink/special-thanks/index.html | 666 ++
content/zh/what-is-flink/use-cases/index.html | 808 +++
content/zh/what-is-stateful-functions/index.html | 631 ++
.../index.html | 631 ++
1334 files changed, 373152 insertions(+)
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
new file mode 100644
index 000000000..0296e478d
--- /dev/null
+++ b/content/2014/08/26/apache-flink-0.6-available/index.html
@@ -0,0 +1,707 @@
+
+<!DOCTYPE html>
+<html lang="en" dir=ZgotmplZ>
+
+<head>
+
+
+
+<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
+<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
+<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
+<script src="/js/anchor.min.js"></script>
+<script src="/js/flink.js"></script>
+<link rel="canonical" href="https://flink.apache.org/2014/08/26/apache-flink-0.6-available/">
+
+ <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.
+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.">
+<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Apache Flink 0.6 available" />
+<meta property="og: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.
+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." />
+<meta property="og:type" content="article" />
+<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.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
+<script defer src="/en.search.min.c34b8a3404aa0f9423d81bbba3f4b7195e00d999fc077279ac6672e2d7adbab6.js" integrity="sha256-w0uKNASqD5Qj2Bu7o/S3GV4A2Zn8B3J5rGZy4teturY="></script>
+<!--
+Made with Book Theme
+https://github.com/alex-shpak/hugo-book
+-->
+
+ <meta name="generator" content="Hugo 0.124.1">
+
+
+ <script>
+ var _paq = window._paq = window._paq || [];
+
+
+ _paq.push(['disableCookies']);
+
+ _paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="//analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '1']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+ </script>
+
+</head>
+
+<body dir=ZgotmplZ>
+
+
+
+<header>
+ <nav class="navbar navbar-expand-xl">
+ <div class="container-fluid">
+ <a class="navbar-brand" href="/">
+ <img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
+ <span>Apache Flink</span>
+ </a>
+ <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
+ <i class="fa fa-bars navbar-toggler-icon"></i>
+ </button>
+ <div class="collapse navbar-collapse" id="navbarSupportedContent">
+ <ul class="navbar-nav">
+
+
+
+
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/security/">Security</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable/docs/get-started/introduction/">With Flink CDC<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/">With Flink ML<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html">With Flink Stateful Functions<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/">Training Course<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 1.20 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-release-2.0-preview1/">Flink 2.0 (preview)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-master/">Flink Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">Kubernetes Operator 1.10 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main">Kubernetes Operator Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable">CDC 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-master">CDC Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">ML 2.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-master">ML Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">Stateful Functions 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-master">Stateful Functions Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">How to Contribute</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/overview/">Overview</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-code/">Contribute Code</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/reviewing-prs/">Review Pull Requests</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/code-style-and-quality-preamble/">Code Style and Quality Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-documentation/">Contribute Documentation</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/documentation-style-guide/">Documentation Style Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/improve-website/">Contribute to the Website</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/getting-help/">Getting Help</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/posts/">Flink Blog</a>
+
+
+ </li>
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/downloads/">Downloads</a>
+
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </ul>
+ <div class="book-search">
+ <div class="book-search-spinner hidden">
+ <i class="fa fa-refresh fa-spin"></i>
+ </div>
+ <form class="search-bar d-flex" onsubmit="return false;"su>
+ <input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/">
+ <i class="fa fa-search search"></i>
+ <i class="fa fa-circle-o-notch fa-spin spinner"></i>
+ </form>
+ <div class="book-search-spinner hidden"></div>
+ <ul id="book-search-results"></ul>
+ </div>
+ </div>
+ </div>
+ </nav>
+ <div class="navbar-clearfix"></div>
+</header>
+
+
+ <main class="flex">
+ <section class="container book-page">
+
+<article class="markdown">
+ <h1>
+ <a href="/2014/08/26/apache-flink-0.6-available/">Apache Flink 0.6 available</a>
+ </h1>
+
+
+
+ August 26, 2014 -
+
+
+
+
+
+ <p><p>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.</p>
+<h2 id="what-is-flink">
+ What is Flink?
+ <a class="anchor" href="#what-is-flink">#</a>
+</h2>
+<p>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’s own runtime engine. Flink
+features:</p>
+<p><strong>Robust in-memory and out-of-core processing:</strong> 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.</p>
+<p><strong>POJO-based APIs:</strong> 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.</p>
+<p><strong>Efficient iterative processing:</strong> Flink contains explicit “iterate” operators
+that enable very efficient loops over data sets, e.g., for machine
+learning and graph applications.</p>
+<p><strong>A modular system stack:</strong> Flink is not a direct implementation of its
+APIs but a layered system. All programming APIs are translated to an
+intermediate program representation that is compiled and optimized
+via a cost-based optimizer. Lower-level layers of Flink also expose
+programming APIs for extending the system.</p>
+<p><strong>Data pipelining/streaming:</strong> Flink’s runtime is designed as a
+pipelined data processing engine rather than a batch processing
+engine. Operators do not wait for their predecessors to finish in
+order to start processing data. This results to very efficient
+handling of large data sets.</p>
+<h2 id="release-06">
+ Release 0.6
+ <a class="anchor" href="#release-06">#</a>
+</h2>
+<p>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.</p>
+<p>The full release notes are available <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315522&version=12327101">here</a>.</p>
+<p>Download the release <a href="http://flink.incubator.apache.org/downloads.html">here</a>.</p>
+<h2 id="contributors">
+ Contributors
+ <a class="anchor" href="#contributors">#</a>
+</h2>
+<ul>
+<li>Wilson Cao</li>
+<li>Ufuk Celebi</li>
+<li>Stephan Ewen</li>
+<li>Jonathan Hasenburg</li>
+<li>Markus Holzemer</li>
+<li>Fabian Hueske</li>
+<li>Sebastian Kunert</li>
+<li>Vikhyat Korrapati</li>
+<li>Aljoscha Krettek</li>
+<li>Sebastian Kruse</li>
+<li>Raymond Liu</li>
+<li>Robert Metzger</li>
+<li>Mingliang Qi</li>
+<li>Till Rohrmann</li>
+<li>Henry Saputra</li>
+<li>Chesnay Schepler</li>
+<li>Kostas Tzoumas</li>
+<li>Robert Waury</li>
+<li>Timo Walther</li>
+<li>Daniel Warneke</li>
+<li>Tobias Wiens</li>
+</ul>
+</p>
+</article>
+
+
+
+
+
+
+
+ <div class="edit-this-page">
+ <p>
+ <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
+ </p>
+ <p>
+ <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2014-08-26-release-0.6.md">
+ Edit This Page<i class="fa fa-edit fa-fw"></i>
+ </a>
+ </p>
+ </div>
+
+ </section>
+
+ <aside class="book-toc">
+
+
+
+<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
+ <ul>
+ <li>
+ <ul>
+ <li><a href="#what-is-flink">What is Flink?</a></li>
+ <li><a href="#release-06">Release 0.6</a></li>
+ <li><a href="#contributors">Contributors</a></li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+
+ </aside>
+ <aside class="expand-toc hidden">
+ <a class="toc" onclick="expandToc()" href="javascript:void(0)">
+ <i class="fa fa-bars" aria-hidden="true"></i>
+ </a>
+ </aside>
+
+ </main>
+
+ <footer>
+
+
+
+<div class="separator"></div>
+<div class="panels">
+ <div class="wrapper">
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="https://flink-packages.org/">flink-packages.org</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/">Apache Software Foundation</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/licenses/">License</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li>
+ <a href="/zh/">
+ <i class="fa fa-globe" aria-hidden="true"></i> 中文版
+ </a>
+ </li>
+
+
+
+ </ul>
+ </div>
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="/what-is-flink/security">Security</a-->
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+ </li>
+ </ul>
+ </div>
+ <div class="panel icons">
+ <div>
+ <a href="/posts">
+ <div class="icon flink-blog-icon"></div>
+ <span>Flink blog</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://github.com/apache/flink">
+ <div class="icon flink-github-icon"></div>
+ <span>Github</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://twitter.com/apacheflink">
+ <div class="icon flink-twitter-icon"></div>
+ <span>Twitter</span>
+ </a>
+ </div>
+ </div>
+ </div>
+</div>
+
+<hr/>
+
+<div class="container disclaimer">
+ <p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
+</div>
+
+
+
+ </footer>
+
+ </body>
+</html>
+
+
+
+
+
+
diff --git a/content/2014/09/26/apache-flink-0.6.1-available/index.html b/content/2014/09/26/apache-flink-0.6.1-available/index.html
new file mode 100644
index 000000000..d2a1a6ca2
--- /dev/null
+++ b/content/2014/09/26/apache-flink-0.6.1-available/index.html
@@ -0,0 +1,632 @@
+
+<!DOCTYPE html>
+<html lang="en" dir=ZgotmplZ>
+
+<head>
+
+
+
+<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
+<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
+<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
+<script src="/js/anchor.min.js"></script>
+<script src="/js/flink.js"></script>
+<link rel="canonical" href="https://flink.apache.org/2014/09/26/apache-flink-0.6.1-available/">
+
+ <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.
+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.">
+<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Apache Flink 0.6.1 available" />
+<meta property="og:description" 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." />
+<meta property="og:type" content="article" />
+<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.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
+<script defer src="/en.search.min.c34b8a3404aa0f9423d81bbba3f4b7195e00d999fc077279ac6672e2d7adbab6.js" integrity="sha256-w0uKNASqD5Qj2Bu7o/S3GV4A2Zn8B3J5rGZy4teturY="></script>
+<!--
+Made with Book Theme
+https://github.com/alex-shpak/hugo-book
+-->
+
+ <meta name="generator" content="Hugo 0.124.1">
+
+
+ <script>
+ var _paq = window._paq = window._paq || [];
+
+
+ _paq.push(['disableCookies']);
+
+ _paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="//analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '1']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+ </script>
+
+</head>
+
+<body dir=ZgotmplZ>
+
+
+
+<header>
+ <nav class="navbar navbar-expand-xl">
+ <div class="container-fluid">
+ <a class="navbar-brand" href="/">
+ <img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
+ <span>Apache Flink</span>
+ </a>
+ <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
+ <i class="fa fa-bars navbar-toggler-icon"></i>
+ </button>
+ <div class="collapse navbar-collapse" id="navbarSupportedContent">
+ <ul class="navbar-nav">
+
+
+
+
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/security/">Security</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable/docs/get-started/introduction/">With Flink CDC<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/">With Flink ML<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html">With Flink Stateful Functions<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/">Training Course<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 1.20 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-release-2.0-preview1/">Flink 2.0 (preview)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-master/">Flink Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">Kubernetes Operator 1.10 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main">Kubernetes Operator Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable">CDC 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-master">CDC Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">ML 2.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-master">ML Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">Stateful Functions 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-master">Stateful Functions Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">How to Contribute</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/overview/">Overview</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-code/">Contribute Code</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/reviewing-prs/">Review Pull Requests</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/code-style-and-quality-preamble/">Code Style and Quality Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-documentation/">Contribute Documentation</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/documentation-style-guide/">Documentation Style Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/improve-website/">Contribute to the Website</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/getting-help/">Getting Help</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/posts/">Flink Blog</a>
+
+
+ </li>
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/downloads/">Downloads</a>
+
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </ul>
+ <div class="book-search">
+ <div class="book-search-spinner hidden">
+ <i class="fa fa-refresh fa-spin"></i>
+ </div>
+ <form class="search-bar d-flex" onsubmit="return false;"su>
+ <input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/">
+ <i class="fa fa-search search"></i>
+ <i class="fa fa-circle-o-notch fa-spin spinner"></i>
+ </form>
+ <div class="book-search-spinner hidden"></div>
+ <ul id="book-search-results"></ul>
+ </div>
+ </div>
+ </div>
+ </nav>
+ <div class="navbar-clearfix"></div>
+</header>
+
+
+ <main class="flex">
+ <section class="container book-page">
+
+<article class="markdown">
+ <h1>
+ <a href="/2014/09/26/apache-flink-0.6.1-available/">Apache Flink 0.6.1 available</a>
+ </h1>
+
+
+
+ September 26, 2014 -
+
+
+
+
+
+ <p><p>We are happy to announce the availability of Flink 0.6.1.</p>
+<p>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.</p>
+<p><a href="/downloads.html">Download</a> the release today.</p>
+</p>
+</article>
+
+
+
+
+
+
+
+ <div class="edit-this-page">
+ <p>
+ <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
+ </p>
+ <p>
+ <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2014-09-26-release-0.6.1.md">
+ Edit This Page<i class="fa fa-edit fa-fw"></i>
+ </a>
+ </p>
+ </div>
+
+ </section>
+
+ <aside class="book-toc">
+
+
+
+<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3></nav>
+
+
+ </aside>
+ <aside class="expand-toc hidden">
+ <a class="toc" onclick="expandToc()" href="javascript:void(0)">
+ <i class="fa fa-bars" aria-hidden="true"></i>
+ </a>
+ </aside>
+
+ </main>
+
+ <footer>
+
+
+
+<div class="separator"></div>
+<div class="panels">
+ <div class="wrapper">
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="https://flink-packages.org/">flink-packages.org</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/">Apache Software Foundation</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/licenses/">License</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li>
+ <a href="/zh/">
+ <i class="fa fa-globe" aria-hidden="true"></i> 中文版
+ </a>
+ </li>
+
+
+
+ </ul>
+ </div>
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="/what-is-flink/security">Security</a-->
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+ </li>
+ </ul>
+ </div>
+ <div class="panel icons">
+ <div>
+ <a href="/posts">
+ <div class="icon flink-blog-icon"></div>
+ <span>Flink blog</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://github.com/apache/flink">
+ <div class="icon flink-github-icon"></div>
+ <span>Github</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://twitter.com/apacheflink">
+ <div class="icon flink-twitter-icon"></div>
+ <span>Twitter</span>
+ </a>
+ </div>
+ </div>
+ </div>
+</div>
+
+<hr/>
+
+<div class="container disclaimer">
+ <p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
+</div>
+
+
+
+ </footer>
+
+ </body>
+</html>
+
+
+
+
+
+
diff --git a/content/2014/10/03/upcoming-events/index.html b/content/2014/10/03/upcoming-events/index.html
new file mode 100644
index 000000000..d7941ad82
--- /dev/null
+++ b/content/2014/10/03/upcoming-events/index.html
@@ -0,0 +1,733 @@
+
+<!DOCTYPE html>
+<html lang="en" dir=ZgotmplZ>
+
+<head>
+
+
+
+<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
+<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
+<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
+<script src="/js/anchor.min.js"></script>
+<script src="/js/flink.js"></script>
+<link rel="canonical" href="https://flink.apache.org/2014/10/03/upcoming-events/">
+
+ <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).">
+<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Upcoming Events" />
+<meta property="og: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)." />
+<meta property="og:type" content="article" />
+<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.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
+<script defer src="/en.search.min.c34b8a3404aa0f9423d81bbba3f4b7195e00d999fc077279ac6672e2d7adbab6.js" integrity="sha256-w0uKNASqD5Qj2Bu7o/S3GV4A2Zn8B3J5rGZy4teturY="></script>
+<!--
+Made with Book Theme
+https://github.com/alex-shpak/hugo-book
+-->
+
+ <meta name="generator" content="Hugo 0.124.1">
+
+
+ <script>
+ var _paq = window._paq = window._paq || [];
+
+
+ _paq.push(['disableCookies']);
+
+ _paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="//analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '1']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+ </script>
+
+</head>
+
+<body dir=ZgotmplZ>
+
+
+
+<header>
+ <nav class="navbar navbar-expand-xl">
+ <div class="container-fluid">
+ <a class="navbar-brand" href="/">
+ <img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
+ <span>Apache Flink</span>
+ </a>
+ <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
+ <i class="fa fa-bars navbar-toggler-icon"></i>
+ </button>
+ <div class="collapse navbar-collapse" id="navbarSupportedContent">
+ <ul class="navbar-nav">
+
+
+
+
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/security/">Security</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable/docs/get-started/introduction/">With Flink CDC<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/">With Flink ML<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html">With Flink Stateful Functions<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/">Training Course<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 1.20 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-release-2.0-preview1/">Flink 2.0 (preview)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-master/">Flink Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">Kubernetes Operator 1.10 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main">Kubernetes Operator Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable">CDC 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-master">CDC Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">ML 2.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-master">ML Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">Stateful Functions 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-master">Stateful Functions Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">How to Contribute</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/overview/">Overview</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-code/">Contribute Code</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/reviewing-prs/">Review Pull Requests</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/code-style-and-quality-preamble/">Code Style and Quality Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-documentation/">Contribute Documentation</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/documentation-style-guide/">Documentation Style Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/improve-website/">Contribute to the Website</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/getting-help/">Getting Help</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/posts/">Flink Blog</a>
+
+
+ </li>
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/downloads/">Downloads</a>
+
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </ul>
+ <div class="book-search">
+ <div class="book-search-spinner hidden">
+ <i class="fa fa-refresh fa-spin"></i>
+ </div>
+ <form class="search-bar d-flex" onsubmit="return false;"su>
+ <input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/">
+ <i class="fa fa-search search"></i>
+ <i class="fa fa-circle-o-notch fa-spin spinner"></i>
+ </form>
+ <div class="book-search-spinner hidden"></div>
+ <ul id="book-search-results"></ul>
+ </div>
+ </div>
+ </div>
+ </nav>
+ <div class="navbar-clearfix"></div>
+</header>
+
+
+ <main class="flex">
+ <section class="container book-page">
+
+<article class="markdown">
+ <h1>
+ <a href="/2014/10/03/upcoming-events/">Upcoming Events</a>
+ </h1>
+
+
+
+ October 3, 2014 -
+
+
+
+
+
+ <p><p>We are happy to announce several upcoming Flink events both in Europe and the US. Starting with a <strong>Flink hackathon in Stockholm</strong> (Oct 8-9) and a talk about Flink at the <strong>Stockholm Hadoop User Group</strong> (Oct 8). This is followed by the very first <strong>Flink Meetup in Berlin</strong> (Oct 15). In the US, there will be two Flink Meetup talks: the first one at the <strong>Pasadena Big Data User Group</strong> (Oct 29) and the second one at <strong>Sili [...]
+<p>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.</p>
+<h3 id="flink-hackathon-stockholm-oct-8-9">
+ Flink Hackathon, Stockholm (Oct 8-9)
+ <a class="anchor" href="#flink-hackathon-stockholm-oct-8-9">#</a>
+</h3>
+<p>The hackathon will take place at KTH/SICS from Oct 8th-9th. You can sign up here: <a href="https://docs.google.com/spreadsheet/viewform?formkey=dDZnMlRtZHJ3Z0hVTlFZVjU2MWtoX0E6MA">https://docs.google.com/spreadsheet/viewform?formkey=dDZnMlRtZHJ3Z0hVTlFZVjU2MWtoX0E6MA</a>.</p>
+<p>Here is a rough agenda and a list of topics to work upon or look into. Suggestions and more topics are welcome.</p>
+<h4 id="wednesday-8th">
+ Wednesday (8th)
+ <a class="anchor" href="#wednesday-8th">#</a>
+</h4>
+<p>9:00 - 10:00 Introduction to Apache Flink, System overview, and Dev
+environment (by Stephan)</p>
+<p>10:15 - 11:00 Introduction to the topics (Streaming API and system by Gyula
+& Marton), (Graphs by Vasia / Martin / Stephan)</p>
+<p>11:00 - 12:30 Happy hacking (part 1)</p>
+<p>12:30 - Lunch (Food will be provided by KTH / SICS. A big thank you to them
+and also to Paris, for organizing that)</p>
+<p>13:xx - Happy hacking (part 2)</p>
+<h4 id="thursday-9th">
+ Thursday (9th)
+ <a class="anchor" href="#thursday-9th">#</a>
+</h4>
+<p>Happy hacking (continued)</p>
+<h4 id="suggestions-for-topics">
+ Suggestions for topics
+ <a class="anchor" href="#suggestions-for-topics">#</a>
+</h4>
+<h5 id="streaming">
+ Streaming
+ <a class="anchor" href="#streaming">#</a>
+</h5>
+<ul>
+<li>
+<p>Sample streaming applications (e.g. continuous heavy hitters and topics
+on the twitter stream)</p>
+</li>
+<li>
+<p>Implement a simple SQL to Streaming program parser. Possibly using
+Apache Calcite (<a href="http://optiq.incubator.apache.org/">http://optiq.incubator.apache.org/</a>)</p>
+</li>
+<li>
+<p>Implement different windowing methods (count-based, time-based, …)</p>
+</li>
+<li>
+<p>Implement different windowed operations (windowed-stream-join,
+windowed-stream-co-group)</p>
+</li>
+<li>
+<p>Streaming state, and interaction with other programs (that access state
+of a stream program)</p>
+</li>
+</ul>
+<h5 id="graph-analysis">
+ Graph Analysis
+ <a class="anchor" href="#graph-analysis">#</a>
+</h5>
+<ul>
+<li>
+<p>Prototype a Graph DSL (simple graph building, filters, graph
+properties, some algorithms)</p>
+</li>
+<li>
+<p>Prototype abstractions different Graph processing paradigms
+(vertex-centric, partition-centric).</p>
+</li>
+<li>
+<p>Generalize the delta iterations, allow flexible state access.</p>
+</li>
+</ul>
+<h3 id="meetup-hadoop-user-group-talk-stockholm-oct-8">
+ Meetup: Hadoop User Group Talk, Stockholm (Oct 8)
+ <a class="anchor" href="#meetup-hadoop-user-group-talk-stockholm-oct-8">#</a>
+</h3>
+<p>Hosted by Spotify, opens at 6 PM.</p>
+<p><a href="http://www.meetup.com/stockholm-hug/events/207323222/">http://www.meetup.com/stockholm-hug/events/207323222/</a></p>
+<h3 id="1st-flink-meetup-berlin-oct-15">
+ 1st Flink Meetup, Berlin (Oct 15)
+ <a class="anchor" href="#1st-flink-meetup-berlin-oct-15">#</a>
+</h3>
+<p>We are happy to announce the first Flink meetup in Berlin. You are very welcome to to sign up and attend. The event will be held in Betahaus Cafe.</p>
+<p><a href="http://www.meetup.com/Apache-Flink-Meetup/events/208227422/">http://www.meetup.com/Apache-Flink-Meetup/events/208227422/</a></p>
+<h3 id="meetup-pasadena-big-data-user-group-oct-29">
+ Meetup: Pasadena Big Data User Group (Oct 29)
+ <a class="anchor" href="#meetup-pasadena-big-data-user-group-oct-29">#</a>
+</h3>
+<p><a href="http://www.meetup.com/Pasadena-Big-Data-Users-Group/">http://www.meetup.com/Pasadena-Big-Data-Users-Group/</a></p>
+<h3 id="meetup-silicon-valley-hands-on-programming-events-nov-4">
+ Meetup: Silicon Valley Hands On Programming Events (Nov 4)
+ <a class="anchor" href="#meetup-silicon-valley-hands-on-programming-events-nov-4">#</a>
+</h3>
+<p><a href="http://www.meetup.com/HandsOnProgrammingEvents/events/210504392/">http://www.meetup.com/HandsOnProgrammingEvents/events/210504392/</a></p>
+</p>
+</article>
+
+
+
+
+
+
+
+ <div class="edit-this-page">
+ <p>
+ <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
+ </p>
+ <p>
+ <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2014-10-03-upcoming_events.md">
+ Edit This Page<i class="fa fa-edit fa-fw"></i>
+ </a>
+ </p>
+ </div>
+
+ </section>
+
+ <aside class="book-toc">
+
+
+
+<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
+ <ul>
+ <li>
+ <ul>
+ <li>
+ <ul>
+ <li><a href="#flink-hackathon-stockholm-oct-8-9">Flink Hackathon, Stockholm (Oct 8-9)</a></li>
+ <li><a href="#meetup-hadoop-user-group-talk-stockholm-oct-8">Meetup: Hadoop User Group Talk, Stockholm (Oct 8)</a></li>
+ <li><a href="#1st-flink-meetup-berlin-oct-15">1st Flink Meetup, Berlin (Oct 15)</a></li>
+ <li><a href="#meetup-pasadena-big-data-user-group-oct-29">Meetup: Pasadena Big Data User Group (Oct 29)</a></li>
+ <li><a href="#meetup-silicon-valley-hands-on-programming-events-nov-4">Meetup: Silicon Valley Hands On Programming Events (Nov 4)</a></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+
+ </aside>
+ <aside class="expand-toc hidden">
+ <a class="toc" onclick="expandToc()" href="javascript:void(0)">
+ <i class="fa fa-bars" aria-hidden="true"></i>
+ </a>
+ </aside>
+
+ </main>
+
+ <footer>
+
+
+
+<div class="separator"></div>
+<div class="panels">
+ <div class="wrapper">
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="https://flink-packages.org/">flink-packages.org</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/">Apache Software Foundation</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/licenses/">License</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li>
+ <a href="/zh/">
+ <i class="fa fa-globe" aria-hidden="true"></i> 中文版
+ </a>
+ </li>
+
+
+
+ </ul>
+ </div>
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="/what-is-flink/security">Security</a-->
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+ </li>
+ </ul>
+ </div>
+ <div class="panel icons">
+ <div>
+ <a href="/posts">
+ <div class="icon flink-blog-icon"></div>
+ <span>Flink blog</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://github.com/apache/flink">
+ <div class="icon flink-github-icon"></div>
+ <span>Github</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://twitter.com/apacheflink">
+ <div class="icon flink-twitter-icon"></div>
+ <span>Twitter</span>
+ </a>
+ </div>
+ </div>
+ </div>
+</div>
+
+<hr/>
+
+<div class="container disclaimer">
+ <p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
+</div>
+
+
+
+ </footer>
+
+ </body>
+</html>
+
+
+
+
+
+
diff --git a/content/2014/11/04/apache-flink-0.7.0-available/index.html b/content/2014/11/04/apache-flink-0.7.0-available/index.html
new file mode 100644
index 000000000..b32777a57
--- /dev/null
+++ b/content/2014/11/04/apache-flink-0.7.0-available/index.html
@@ -0,0 +1,695 @@
+
+<!DOCTYPE html>
+<html lang="en" dir=ZgotmplZ>
+
+<head>
+
+
+
+<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
+<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
+<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
+<script src="/js/anchor.min.js"></script>
+<script src="/js/flink.js"></script>
+<link rel="canonical" href="https://flink.apache.org/2014/11/04/apache-flink-0.7.0-available/">
+
+ <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!
+Download Flink 0.7.0 here
+See the release changelog here
+Overview of major new features # Flink Streaming: The gem of the 0.">
+<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Apache Flink 0.7.0 available" />
+<meta property="og: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!
+Download Flink 0.7.0 here
+See the release changelog here
+Overview of major new features # Flink Streaming: The gem of the 0." />
+<meta property="og:type" content="article" />
+<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.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
+<script defer src="/en.search.min.c34b8a3404aa0f9423d81bbba3f4b7195e00d999fc077279ac6672e2d7adbab6.js" integrity="sha256-w0uKNASqD5Qj2Bu7o/S3GV4A2Zn8B3J5rGZy4teturY="></script>
+<!--
+Made with Book Theme
+https://github.com/alex-shpak/hugo-book
+-->
+
+ <meta name="generator" content="Hugo 0.124.1">
+
+
+ <script>
+ var _paq = window._paq = window._paq || [];
+
+
+ _paq.push(['disableCookies']);
+
+ _paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="//analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '1']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+ </script>
+
+</head>
+
+<body dir=ZgotmplZ>
+
+
+
+<header>
+ <nav class="navbar navbar-expand-xl">
+ <div class="container-fluid">
+ <a class="navbar-brand" href="/">
+ <img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
+ <span>Apache Flink</span>
+ </a>
+ <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
+ <i class="fa fa-bars navbar-toggler-icon"></i>
+ </button>
+ <div class="collapse navbar-collapse" id="navbarSupportedContent">
+ <ul class="navbar-nav">
+
+
+
+
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/security/">Security</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable/docs/get-started/introduction/">With Flink CDC<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/">With Flink ML<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html">With Flink Stateful Functions<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/">Training Course<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 1.20 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-release-2.0-preview1/">Flink 2.0 (preview)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-master/">Flink Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">Kubernetes Operator 1.10 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main">Kubernetes Operator Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable">CDC 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-master">CDC Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">ML 2.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-master">ML Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">Stateful Functions 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-master">Stateful Functions Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">How to Contribute</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/overview/">Overview</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-code/">Contribute Code</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/reviewing-prs/">Review Pull Requests</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/code-style-and-quality-preamble/">Code Style and Quality Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-documentation/">Contribute Documentation</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/documentation-style-guide/">Documentation Style Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/improve-website/">Contribute to the Website</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/getting-help/">Getting Help</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/posts/">Flink Blog</a>
+
+
+ </li>
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/downloads/">Downloads</a>
+
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </ul>
+ <div class="book-search">
+ <div class="book-search-spinner hidden">
+ <i class="fa fa-refresh fa-spin"></i>
+ </div>
+ <form class="search-bar d-flex" onsubmit="return false;"su>
+ <input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/">
+ <i class="fa fa-search search"></i>
+ <i class="fa fa-circle-o-notch fa-spin spinner"></i>
+ </form>
+ <div class="book-search-spinner hidden"></div>
+ <ul id="book-search-results"></ul>
+ </div>
+ </div>
+ </div>
+ </nav>
+ <div class="navbar-clearfix"></div>
+</header>
+
+
+ <main class="flex">
+ <section class="container book-page">
+
+<article class="markdown">
+ <h1>
+ <a href="/2014/11/04/apache-flink-0.7.0-available/">Apache Flink 0.7.0 available</a>
+ </h1>
+
+
+
+ November 4, 2014 -
+
+
+
+
+
+ <p><p>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!</p>
+<p>Download Flink 0.7.0 <a href="http://flink.incubator.apache.org/downloads.html">here</a></p>
+<p>See the release changelog <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315522&version=12327648">here</a></p>
+<h2 id="overview-of-major-new-features">
+ Overview of major new features
+ <a class="anchor" href="#overview-of-major-new-features">#</a>
+</h2>
+<p><strong>Flink Streaming:</strong> 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 <a href="//nightlies.apache.org/flink/flink-doc [...]
+<p><strong>New Scala API:</strong> The Scala API has been completely rewritten. The Java and Scala APIs have now the same syntax and transformations and will be kept from now on in sync in every future release. See the new Scala API <a href="//nightlies.apache.org/flink/flink-docs-release-0.7/programming_guide.html">here</a>.</p>
+<p><strong>Logical key expressions:</strong> You can now specify grouping and joining keys with logical names for member variables of POJO data types. For example, you can join two data sets as <code>persons.join(cities).where(“zip”).equalTo(“zipcode”)</code>. Read more <a href="//nightlies.apache.org/flink/flink-docs-release-0.7/programming_guide.html#specifying-keys">here</a>.</p>
+<p><strong>Hadoop MapReduce compatibility:</strong> You can run unmodified Hadoop Mappers and Reducers (mapred API) in Flink, use all Hadoop data types, and read data with all Hadoop InputFormats.</p>
+<p><strong>Collection-based execution backend:</strong> The collection-based execution backend enables you to execute a Flink job as a simple Java collections program, bypassing completely the Flink runtime and optimizer. This feature is extremely useful for prototyping, and embedding Flink jobs in projects in a very lightweight manner.</p>
+<p><strong>Record API deprecated:</strong> The (old) Stratosphere Record API has been marked as deprecated and is planned for removal in the 0.9.0 release.</p>
+<p><strong>BLOB service:</strong> This release contains a new service to distribute jar files and other binary data among the JobManager, TaskManagers and the client.</p>
+<p><strong>Intermediate data sets:</strong> 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.</p>
+<p><strong>Note:</strong> 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.</p>
+<h2 id="contributors">
+ Contributors
+ <a class="anchor" href="#contributors">#</a>
+</h2>
+<ul>
+<li>Tamas Ambrus</li>
+<li>Mariem Ayadi</li>
+<li>Marton Balassi</li>
+<li>Daniel Bali</li>
+<li>Ufuk Celebi</li>
+<li>Hung Chang</li>
+<li>David Eszes</li>
+<li>Stephan Ewen</li>
+<li>Judit Feher</li>
+<li>Gyula Fora</li>
+<li>Gabor Hermann</li>
+<li>Fabian Hueske</li>
+<li>Vasiliki Kalavri</li>
+<li>Kristof Kovacs</li>
+<li>Aljoscha Krettek</li>
+<li>Sebastian Kruse</li>
+<li>Sebastian Kunert</li>
+<li>Matyas Manninger</li>
+<li>Robert Metzger</li>
+<li>Mingliang Qi</li>
+<li>Till Rohrmann</li>
+<li>Henry Saputra</li>
+<li>Chesnay Schelper</li>
+<li>Moritz Schubotz</li>
+<li>Hung Sendoh Chang</li>
+<li>Peter Szabo</li>
+<li>Jonas Traub</li>
+<li>Fabian Tschirschnitz</li>
+<li>Artem Tsikiridis</li>
+<li>Kostas Tzoumas</li>
+<li>Timo Walther</li>
+<li>Daniel Warneke</li>
+<li>Tobias Wiens</li>
+<li>Yingjun Wu</li>
+</ul>
+</p>
+</article>
+
+
+
+
+
+
+
+ <div class="edit-this-page">
+ <p>
+ <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
+ </p>
+ <p>
+ <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2014-11-04-release-0.7.0.md">
+ Edit This Page<i class="fa fa-edit fa-fw"></i>
+ </a>
+ </p>
+ </div>
+
+ </section>
+
+ <aside class="book-toc">
+
+
+
+<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
+ <ul>
+ <li>
+ <ul>
+ <li><a href="#overview-of-major-new-features">Overview of major new features</a></li>
+ <li><a href="#contributors">Contributors</a></li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+
+ </aside>
+ <aside class="expand-toc hidden">
+ <a class="toc" onclick="expandToc()" href="javascript:void(0)">
+ <i class="fa fa-bars" aria-hidden="true"></i>
+ </a>
+ </aside>
+
+ </main>
+
+ <footer>
+
+
+
+<div class="separator"></div>
+<div class="panels">
+ <div class="wrapper">
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="https://flink-packages.org/">flink-packages.org</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/">Apache Software Foundation</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/licenses/">License</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li>
+ <a href="/zh/">
+ <i class="fa fa-globe" aria-hidden="true"></i> 中文版
+ </a>
+ </li>
+
+
+
+ </ul>
+ </div>
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="/what-is-flink/security">Security</a-->
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+ </li>
+ </ul>
+ </div>
+ <div class="panel icons">
+ <div>
+ <a href="/posts">
+ <div class="icon flink-blog-icon"></div>
+ <span>Flink blog</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://github.com/apache/flink">
+ <div class="icon flink-github-icon"></div>
+ <span>Github</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://twitter.com/apacheflink">
+ <div class="icon flink-twitter-icon"></div>
+ <span>Twitter</span>
+ </a>
+ </div>
+ </div>
+ </div>
+</div>
+
+<hr/>
+
+<div class="container disclaimer">
+ <p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
+</div>
+
+
+
+ </footer>
+
+ </body>
+</html>
+
+
+
+
+
+
diff --git a/content/2014/11/18/hadoop-compatibility-in-flink/index.html b/content/2014/11/18/hadoop-compatibility-in-flink/index.html
new file mode 100644
index 000000000..0440e04b0
--- /dev/null
+++ b/content/2014/11/18/hadoop-compatibility-in-flink/index.html
@@ -0,0 +1,707 @@
+
+<!DOCTYPE html>
+<html lang="en" dir=ZgotmplZ>
+
+<head>
+
+
+
+<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
+<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
+<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
+<script src="/js/anchor.min.js"></script>
+<script src="/js/flink.js"></script>
+<link rel="canonical" href="https://flink.apache.org/2014/11/18/hadoop-compatibility-in-flink/">
+
+ <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 [...]
+<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Hadoop Compatibility in Flink" />
+<meta property="og: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 interfa [...]
+<meta property="og:type" content="article" />
+<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.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
+<script defer src="/en.search.min.c34b8a3404aa0f9423d81bbba3f4b7195e00d999fc077279ac6672e2d7adbab6.js" integrity="sha256-w0uKNASqD5Qj2Bu7o/S3GV4A2Zn8B3J5rGZy4teturY="></script>
+<!--
+Made with Book Theme
+https://github.com/alex-shpak/hugo-book
+-->
+
+ <meta name="generator" content="Hugo 0.124.1">
+
+
+ <script>
+ var _paq = window._paq = window._paq || [];
+
+
+ _paq.push(['disableCookies']);
+
+ _paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="//analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '1']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+ </script>
+
+</head>
+
+<body dir=ZgotmplZ>
+
+
+
+<header>
+ <nav class="navbar navbar-expand-xl">
+ <div class="container-fluid">
+ <a class="navbar-brand" href="/">
+ <img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
+ <span>Apache Flink</span>
+ </a>
+ <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
+ <i class="fa fa-bars navbar-toggler-icon"></i>
+ </button>
+ <div class="collapse navbar-collapse" id="navbarSupportedContent">
+ <ul class="navbar-nav">
+
+
+
+
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/security/">Security</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable/docs/get-started/introduction/">With Flink CDC<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/">With Flink ML<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html">With Flink Stateful Functions<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/">Training Course<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 1.20 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-release-2.0-preview1/">Flink 2.0 (preview)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-master/">Flink Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">Kubernetes Operator 1.10 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main">Kubernetes Operator Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable">CDC 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-master">CDC Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">ML 2.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-master">ML Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">Stateful Functions 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-master">Stateful Functions Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">How to Contribute</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/overview/">Overview</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-code/">Contribute Code</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/reviewing-prs/">Review Pull Requests</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/code-style-and-quality-preamble/">Code Style and Quality Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-documentation/">Contribute Documentation</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/documentation-style-guide/">Documentation Style Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/improve-website/">Contribute to the Website</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/getting-help/">Getting Help</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/posts/">Flink Blog</a>
+
+
+ </li>
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/downloads/">Downloads</a>
+
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </ul>
+ <div class="book-search">
+ <div class="book-search-spinner hidden">
+ <i class="fa fa-refresh fa-spin"></i>
+ </div>
+ <form class="search-bar d-flex" onsubmit="return false;"su>
+ <input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/">
+ <i class="fa fa-search search"></i>
+ <i class="fa fa-circle-o-notch fa-spin spinner"></i>
+ </form>
+ <div class="book-search-spinner hidden"></div>
+ <ul id="book-search-results"></ul>
+ </div>
+ </div>
+ </div>
+ </nav>
+ <div class="navbar-clearfix"></div>
+</header>
+
+
+ <main class="flex">
+ <section class="container book-page">
+
+<article class="markdown">
+ <h1>
+ <a href="/2014/11/18/hadoop-compatibility-in-flink/">Hadoop Compatibility in Flink</a>
+ </h1>
+
+
+
+ November 18, 2014 -
+
+
+
+
+
+ <p><p><a href="http://hadoop.apache.org">Apache Hadoop</a> 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 [...]
+<h2 id="flinks-hadoop-compatibility-package">
+ Flink’s Hadoop Compatibility Package
+ <a class="anchor" href="#flinks-hadoop-compatibility-package">#</a>
+</h2>
+<center>
+<img src="/img/blog/hcompat-logos.png" style="width:30%;margin:15px">
+</center>
+<p>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 <a href="https://developers.google.com/open-source/soc/">Google Summer of Code</a> 2014 project.</p>
+<p>With the Hadoop Compatibility package, you can reuse all your Hadoop</p>
+<ul>
+<li><code>InputFormats</code> (mapred and mapreduce APIs)</li>
+<li><code>OutputFormats</code> (mapred and mapreduce APIs)</li>
+<li><code>Mappers</code> (mapred API)</li>
+<li><code>Reducers</code> (mapred API)</li>
+</ul>
+<p>in Flink programs without changing a line of code. Moreover, Flink also natively supports all Hadoop data types (<code>Writables</code> and <code>WritableComparable</code>).</p>
+<p>The following code snippet shows a simple Flink WordCount program that solely uses Hadoop data types, InputFormat, OutputFormat, Mapper, and Reducer functions.</p>
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Definition of Hadoop Mapper function</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Tokenizer</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">Mapper</span><span class="o"><</span><span class="n">LongWritable</span><span class="p">,</span><span class="w"> </span><span class="n">Text</span><span class="p">,</span><span class="w"> </span [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">// Definition of Hadoop Reducer function</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Counter</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">Reducer</span><span class="o"><</span><span class="n">Text</span><span class="p">,</span><span class="w"> </span><span class="n">LongWritable</span><span class="p">,</span><span class="w"> </span> [...]
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">inputPath</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">args</span><span class="o">[</span><span class="n">0</span><span class="o">]</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">outputPath</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">args</span><span class="o">[</span><span class="n">1</span><span class="o">]</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">ExecutionEnvironment</span><span class="w"> </span><span class="n">env</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ExecutionEnvironment</span><span class="p">.</span><span class="na">getExecutionEnvironment</span><span class="p">();</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">// Setup Hadoop’s TextInputFormat</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">HadoopInputFormat</span><span class="o"><</span><span class="n">LongWritable</span><span class="p">,</span><span class="w"> </span><span class="n">Text</span><span class="o">></span><span class="w"> </span><span class="n">hadoopInputFormat</span><span class="w"> </span><span class="o">=</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">HadoopInputFormat</span><span class="o"><</span><span class="n">LongWritable</span><span class="p">,</span><span class="w"> </span><span class="n">Text</span><span class="o">></span><span class="p">(</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">TextInputFormat</span><span class="p">(),</span><span class="w"> </span><span class="n">LongWritable</span><span class="p">.</span><span class="na">class</span><span class="p">,</span><span class="w"> </span><span class="n">Text</span><span class="p">.</span><span class="na">class</span><span class="p">,</span><span class="w"> </span><s [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">TextInputFormat</span><span class="p">.</span><span class="na">addInputPath</span><span class="p">(</span><span class="n">hadoopInputFormat</span><span class="p">.</span><span class="na">getJobConf</span><span class="p">(),</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Path</span><span class="p">(</span><span class="n">inputPath</span><span c [...]
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">// Read a DataSet with the Hadoop InputFormat</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">DataSet</span><span class="o"><</span><span class="n">Tuple2</span><span class="o"><</span><span class="n">LongWritable</span><span class="p">,</span><span class="w"> </span><span class="n">Text</span><span class="o">>></span><span class="w"> </span><span class="n">text</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">env</span><span c [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><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="p">,</span><span class="w"> </span><span class="n">LongWritable</span><span class="o">>></span><span class="w"> </span><span class="n">words</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">text</span><span [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">// Wrap Tokenizer Mapper function</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">flatMap</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">HadoopMapFunction</span><span class="o"><</span><span class="n">LongWritable</span><span class="p">,</span><span class="w"> </span><span class="n">Text</span><span class="p">,</span><span class="w"> </span><span class="n">Text</span><span class="p">,</span><sp [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">groupBy</span><span class="p">(</span><span class="n">0</span><span class="p">)</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">// Wrap Counter Reducer function (used as Reducer and Combiner)</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">reduceGroup</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">HadoopReduceCombineFunction</span><span class="o"><</span><span class="n">Text</span><span class="p">,</span><span class="w"> </span><span class="n">LongWritable</span><span class="p">,</span><span class="w"> </span><span class="n">Text</span><span class=" [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Counter</span><span class="p">(),</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Counter</span><span class="p">()));</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">// Setup Hadoop’s TextOutputFormat</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">HadoopOutputFormat</span><span class="o"><</span><span class="n">Text</span><span class="p">,</span><span class="w"> </span><span class="n">LongWritable</span><span class="o">></span><span class="w"> </span><span class="n">hadoopOutputFormat</span><span class="w"> </span><span class="o">=</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">HadoopOutputFormat</span><span class="o"><</span><span class="n">Text</span><span class="p">,</span><span class="w"> </span><span class="n">LongWritable</span><span class="o">></span><span class="p">(</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">TextOutputFormat</span><span class="o"><</span><span class="n">Text</span><span class="p">,</span><span class="w"> </span><span class="n">LongWritable</span><span class="o">></span><span class="p">(),</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">JobConf</span><span class="p">());</s [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">hadoopOutputFormat</span><span class="p">.</span><span class="na">getJobConf</span><span class="p">().</span><span class="na">set</span><span class="p">(</span><span class="s">"mapred.textoutputformat.separator"</span><span class="p">,</span><span class="w"> </span><span class="s">" "</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">TextOutputFormat</span><span class="p">.</span><span class="na">setOutputPath</span><span class="p">(</span><span class="n">hadoopOutputFormat</span><span class="p">.</span><span class="na">getJobConf</span><span class="p">(),</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Path</span><span class="p">(</span><span class="n">outputPath</span><sp [...]
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">// Output & Execute</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">words</span><span class="p">.</span><span class="na">output</span><span class="p">(</span><span class="n">hadoopOutputFormat</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">env</span><span class="p">.</span><span class="na">execute</span><span class="p">(</span><span class="s">"Hadoop Compat WordCount"</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span><span class="w">
+</span></span></span></code></pre></div><p>As you can see, Flink represents Hadoop key-value pairs as <code>Tuple2<key, value></code> tuples. Note, that the program uses Flink’s <code>groupBy()</code> transformation to group data on the key field (field 0 of the <code>Tuple2<key, value></code>) before it is given to the Reducer function. At the moment, the compatibility package does not evaluate custom Hadoop partitioners, sorting comparators, or grouping comparators.</p>
+<p>Hadoop functions can be used at any position within a Flink program and of course also be mixed with native Flink functions. This means that instead of assembling a workflow of Hadoop jobs in an external driver method or using a workflow scheduler such as <a href="http://oozie.apache.org">Apache Oozie</a>, you can implement an arbitrary complex Flink program consisting of multiple Hadoop Input- and OutputFormats, Mapper and Reducer functions. When executing such a Flink program, data [...]
+<center>
+<img src="/img/blog/hcompat-flow.png" style="width:100%;margin:15px">
+</center>
+<h2 id="what-comes-next">
+ What comes next?
+ <a class="anchor" href="#what-comes-next">#</a>
+</h2>
+<p>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 <a href="//nightlies.apache.org/flink/flink-docs-release-0.7/spargel_guide.html">Spargel</a> operations (Prege [...]
+<h2 id="summary">
+ Summary
+ <a class="anchor" href="#summary">#</a>
+</h2>
+<p>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 executi [...]
+<p>If you want to use Flink’s Hadoop compatibility package checkout our <a href="//nightlies.apache.org/flink/flink-docs-master/apis/batch/hadoop_compatibility.html">documentation</a>.</p>
+</p>
+</article>
+
+
+
+
+
+
+
+ <div class="edit-this-page">
+ <p>
+ <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
+ </p>
+ <p>
+ <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2014-11-18-hadoop-compatibility.md">
+ Edit This Page<i class="fa fa-edit fa-fw"></i>
+ </a>
+ </p>
+ </div>
+
+ </section>
+
+ <aside class="book-toc">
+
+
+
+<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
+ <ul>
+ <li>
+ <ul>
+ <li><a href="#flinks-hadoop-compatibility-package">Flink’s Hadoop Compatibility Package</a></li>
+ <li><a href="#what-comes-next">What comes next?</a></li>
+ <li><a href="#summary">Summary</a></li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+
+ </aside>
+ <aside class="expand-toc hidden">
+ <a class="toc" onclick="expandToc()" href="javascript:void(0)">
+ <i class="fa fa-bars" aria-hidden="true"></i>
+ </a>
+ </aside>
+
+ </main>
+
+ <footer>
+
+
+
+<div class="separator"></div>
+<div class="panels">
+ <div class="wrapper">
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="https://flink-packages.org/">flink-packages.org</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/">Apache Software Foundation</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/licenses/">License</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li>
+ <a href="/zh/">
+ <i class="fa fa-globe" aria-hidden="true"></i> 中文版
+ </a>
+ </li>
+
+
+
+ </ul>
+ </div>
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="/what-is-flink/security">Security</a-->
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+ </li>
+ </ul>
+ </div>
+ <div class="panel icons">
+ <div>
+ <a href="/posts">
+ <div class="icon flink-blog-icon"></div>
+ <span>Flink blog</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://github.com/apache/flink">
+ <div class="icon flink-github-icon"></div>
+ <span>Github</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://twitter.com/apacheflink">
+ <div class="icon flink-twitter-icon"></div>
+ <span>Twitter</span>
+ </a>
+ </div>
+ </div>
+ </div>
+</div>
+
+<hr/>
+
+<div class="container disclaimer">
+ <p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
+</div>
+
+
+
+ </footer>
+
+ </body>
+</html>
+
+
+
+
+
+
diff --git a/content/2015/01/06/december-2014-in-the-flink-community/index.html b/content/2015/01/06/december-2014-in-the-flink-community/index.html
new file mode 100644
index 000000000..830cb21fd
--- /dev/null
+++ b/content/2015/01/06/december-2014-in-the-flink-community/index.html
@@ -0,0 +1,720 @@
+
+<!DOCTYPE html>
+<html lang="en" dir=ZgotmplZ>
+
+<head>
+
+
+
+<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
+<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
+<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
+<script src="/js/anchor.min.js"></script>
+<script src="/js/flink.js"></script>
+<link rel="canonical" href="https://flink.apache.org/2015/01/06/december-2014-in-the-flink-community/">
+
+ <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.
+Flink graduation # The biggest news is that the Apache board approved Flink as a top-level Apache project!">
+<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="December 2014 in the Flink community" />
+<meta property="og: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.
+Flink graduation # The biggest news is that the Apache board approved Flink as a top-level Apache project!" />
+<meta property="og:type" content="article" />
+<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.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
+<script defer src="/en.search.min.c34b8a3404aa0f9423d81bbba3f4b7195e00d999fc077279ac6672e2d7adbab6.js" integrity="sha256-w0uKNASqD5Qj2Bu7o/S3GV4A2Zn8B3J5rGZy4teturY="></script>
+<!--
+Made with Book Theme
+https://github.com/alex-shpak/hugo-book
+-->
+
+ <meta name="generator" content="Hugo 0.124.1">
+
+
+ <script>
+ var _paq = window._paq = window._paq || [];
+
+
+ _paq.push(['disableCookies']);
+
+ _paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="//analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '1']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+ </script>
+
+</head>
+
+<body dir=ZgotmplZ>
+
+
+
+<header>
+ <nav class="navbar navbar-expand-xl">
+ <div class="container-fluid">
+ <a class="navbar-brand" href="/">
+ <img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
+ <span>Apache Flink</span>
+ </a>
+ <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
+ <i class="fa fa-bars navbar-toggler-icon"></i>
+ </button>
+ <div class="collapse navbar-collapse" id="navbarSupportedContent">
+ <ul class="navbar-nav">
+
+
+
+
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/security/">Security</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable/docs/get-started/introduction/">With Flink CDC<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/">With Flink ML<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html">With Flink Stateful Functions<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/">Training Course<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 1.20 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-release-2.0-preview1/">Flink 2.0 (preview)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-master/">Flink Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">Kubernetes Operator 1.10 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main">Kubernetes Operator Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable">CDC 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-master">CDC Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">ML 2.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-master">ML Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">Stateful Functions 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-master">Stateful Functions Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">How to Contribute</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/overview/">Overview</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-code/">Contribute Code</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/reviewing-prs/">Review Pull Requests</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/code-style-and-quality-preamble/">Code Style and Quality Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-documentation/">Contribute Documentation</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/documentation-style-guide/">Documentation Style Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/improve-website/">Contribute to the Website</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/getting-help/">Getting Help</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/posts/">Flink Blog</a>
+
+
+ </li>
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/downloads/">Downloads</a>
+
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </ul>
+ <div class="book-search">
+ <div class="book-search-spinner hidden">
+ <i class="fa fa-refresh fa-spin"></i>
+ </div>
+ <form class="search-bar d-flex" onsubmit="return false;"su>
+ <input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/">
+ <i class="fa fa-search search"></i>
+ <i class="fa fa-circle-o-notch fa-spin spinner"></i>
+ </form>
+ <div class="book-search-spinner hidden"></div>
+ <ul id="book-search-results"></ul>
+ </div>
+ </div>
+ </div>
+ </nav>
+ <div class="navbar-clearfix"></div>
+</header>
+
+
+ <main class="flex">
+ <section class="container book-page">
+
+<article class="markdown">
+ <h1>
+ <a href="/2015/01/06/december-2014-in-the-flink-community/">December 2014 in the Flink community</a>
+ </h1>
+
+
+
+ January 6, 2015 -
+
+
+
+
+
+ <p><p>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.</p>
+<h3 id="flink-graduation">
+ Flink graduation
+ <a class="anchor" href="#flink-graduation">#</a>
+</h3>
+<p>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!</p>
+<h3 id="new-flink-website">
+ New Flink website
+ <a class="anchor" href="#new-flink-website">#</a>
+</h3>
+<p>The <a href="http://flink.apache.org">Flink website</a> got a total make-over, both in terms of appearance and content.</p>
+<h3 id="flink-irc-channel">
+ Flink IRC channel
+ <a class="anchor" href="#flink-irc-channel">#</a>
+</h3>
+<p>A new IRC channel called #flink was created at irc.freenode.org. An easy way to access the IRC channel is through the <a href="http://webchat.freenode.net/">web client</a>. Feel free to stop by to ask anything or share your ideas about Apache Flink!</p>
+<h3 id="meetups-and-talks">
+ Meetups and Talks
+ <a class="anchor" href="#meetups-and-talks">#</a>
+</h3>
+<p>Apache Flink was presented in the <a href="http://www.meetup.com/Netherlands-Hadoop-User-Group/events/218635152">Amsterdam Hadoop User Group</a></p>
+<h2 id="notable-code-contributions">
+ Notable code contributions
+ <a class="anchor" href="#notable-code-contributions">#</a>
+</h2>
+<p><strong>Note:</strong> Code contributions listed here may not be part of a release or even the current snapshot yet.</p>
+<h3 id="streaming-scala-apihttpsgithubcomapacheincubator-flinkpull275">
+ <a href="https://github.com/apache/incubator-flink/pull/275">Streaming Scala API</a>
+ <a class="anchor" href="#streaming-scala-apihttpsgithubcomapacheincubator-flinkpull275">#</a>
+</h3>
+<p>The Flink Streaming Java API recently got its Scala counterpart. Once merged, Flink Streaming users can use both Scala and Java for their development. The Flink Streaming Scala API is built as a thin layer on top of the Java API, making sure that the APIs are kept easily in sync.</p>
+<h3 id="intermediate-datasetshttpsgithubcomapacheincubator-flinkpull254">
+ <a href="https://github.com/apache/incubator-flink/pull/254">Intermediate datasets</a>
+ <a class="anchor" href="#intermediate-datasetshttpsgithubcomapacheincubator-flinkpull254">#</a>
+</h3>
+<p>This pull request introduces a major change in the Flink runtime. Currently, the Flink runtime is based on the notion of operators that exchange data through channels. With the PR, intermediate data sets that are produced by operators become first-class citizens in the runtime. While this does not have any user-facing impact yet, it lays the groundwork for a slew of future features such as blocking execution, fine-grained fault-tolerance, and more efficient data sharing between cluste [...]
+<h3 id="configurable-execution-modehttpsgithubcomapacheincubator-flinkpull259">
+ <a href="https://github.com/apache/incubator-flink/pull/259">Configurable execution mode</a>
+ <a class="anchor" href="#configurable-execution-modehttpsgithubcomapacheincubator-flinkpull259">#</a>
+</h3>
+<p>This pull request allows the user to change the object-reuse behaviour. Before this pull request, some operations would reuse objects passed to the user function while others would always create new objects. This introduces a system wide switch and changes all operators to either reuse objects or don’t reuse objects.</p>
+<h3 id="distributed-coordination-via-akkahttpsgithubcomapacheincubator-flinkpull149">
+ <a href="https://github.com/apache/incubator-flink/pull/149">Distributed Coordination via Akka</a>
+ <a class="anchor" href="#distributed-coordination-via-akkahttpsgithubcomapacheincubator-flinkpull149">#</a>
+</h3>
+<p>Another major change is a complete rewrite of the JobManager / TaskManager components in Scala. In addition to that, the old RPC service was replaced by Actors, using the Akka framework.</p>
+<h3 id="sorting-of-very-large-recordshttpsgithubcomapacheincubator-flinkpull249-">
+ <a href="https://github.com/apache/incubator-flink/pull/249">Sorting of very large records</a>
+ <a class="anchor" href="#sorting-of-very-large-recordshttpsgithubcomapacheincubator-flinkpull249-">#</a>
+</h3>
+<p>Flink’s internal sort-algorithms were improved to better handle large records (multiple 100s of megabytes or larger). Previously, the system did in some cases hold instances of multiple large records, resulting in high memory consumption and JVM heap thrashing. Through this fix, large records are streamed through the operators, reducing the memory consumption and GC pressure. The system now requires much less memory to support algorithms that work on such large records.</p>
+<h3 id="kryo-serialization-as-the-new-default-fallbackhttpsgithubcomapacheincubator-flinkpull271">
+ <a href="https://github.com/apache/incubator-flink/pull/271">Kryo Serialization as the new default fallback</a>
+ <a class="anchor" href="#kryo-serialization-as-the-new-default-fallbackhttpsgithubcomapacheincubator-flinkpull271">#</a>
+</h3>
+<p>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.</p>
+<h3 id="hadoop-filesystem-supporthttpsgithubcomapacheincubator-flinkpull268">
+ <a href="https://github.com/apache/incubator-flink/pull/268">Hadoop FileSystem support</a>
+ <a class="anchor" href="#hadoop-filesystem-supporthttpsgithubcomapacheincubator-flinkpull268">#</a>
+</h3>
+<p>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.</p>
+<h2 id="heading-to-the-080-release">
+ Heading to the 0.8.0 release
+ <a class="anchor" href="#heading-to-the-080-release">#</a>
+</h2>
+<p>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.</p>
+</p>
+</article>
+
+
+
+
+
+
+
+ <div class="edit-this-page">
+ <p>
+ <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
+ </p>
+ <p>
+ <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2015-01-06-december-in-flink.md">
+ Edit This Page<i class="fa fa-edit fa-fw"></i>
+ </a>
+ </p>
+ </div>
+
+ </section>
+
+ <aside class="book-toc">
+
+
+
+<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
+ <ul>
+ <li>
+ <ul>
+ <li>
+ <ul>
+ <li><a href="#flink-graduation">Flink graduation</a></li>
+ <li><a href="#new-flink-website">New Flink website</a></li>
+ <li><a href="#flink-irc-channel">Flink IRC channel</a></li>
+ <li><a href="#meetups-and-talks">Meetups and Talks</a></li>
+ </ul>
+ </li>
+ <li><a href="#notable-code-contributions">Notable code contributions</a>
+ <ul>
+ <li><a href="#streaming-scala-apihttpsgithubcomapacheincubator-flinkpull275"><a href="https://github.com/apache/incubator-flink/pull/275">Streaming Scala API</a></a></li>
+ <li><a href="#intermediate-datasetshttpsgithubcomapacheincubator-flinkpull254"><a href="https://github.com/apache/incubator-flink/pull/254">Intermediate datasets</a></a></li>
+ <li><a href="#configurable-execution-modehttpsgithubcomapacheincubator-flinkpull259"><a href="https://github.com/apache/incubator-flink/pull/259">Configurable execution mode</a></a></li>
+ <li><a href="#distributed-coordination-via-akkahttpsgithubcomapacheincubator-flinkpull149"><a href="https://github.com/apache/incubator-flink/pull/149">Distributed Coordination via Akka</a></a></li>
+ <li><a href="#sorting-of-very-large-recordshttpsgithubcomapacheincubator-flinkpull249-"><a href="https://github.com/apache/incubator-flink/pull/249">Sorting of very large records</a></a></li>
+ <li><a href="#kryo-serialization-as-the-new-default-fallbackhttpsgithubcomapacheincubator-flinkpull271"><a href="https://github.com/apache/incubator-flink/pull/271">Kryo Serialization as the new default fallback</a></a></li>
+ <li><a href="#hadoop-filesystem-supporthttpsgithubcomapacheincubator-flinkpull268"><a href="https://github.com/apache/incubator-flink/pull/268">Hadoop FileSystem support</a></a></li>
+ </ul>
+ </li>
+ <li><a href="#heading-to-the-080-release">Heading to the 0.8.0 release</a></li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+
+ </aside>
+ <aside class="expand-toc hidden">
+ <a class="toc" onclick="expandToc()" href="javascript:void(0)">
+ <i class="fa fa-bars" aria-hidden="true"></i>
+ </a>
+ </aside>
+
+ </main>
+
+ <footer>
+
+
+
+<div class="separator"></div>
+<div class="panels">
+ <div class="wrapper">
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="https://flink-packages.org/">flink-packages.org</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/">Apache Software Foundation</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/licenses/">License</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li>
+ <a href="/zh/">
+ <i class="fa fa-globe" aria-hidden="true"></i> 中文版
+ </a>
+ </li>
+
+
+
+ </ul>
+ </div>
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="/what-is-flink/security">Security</a-->
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+ </li>
+ </ul>
+ </div>
+ <div class="panel icons">
+ <div>
+ <a href="/posts">
+ <div class="icon flink-blog-icon"></div>
+ <span>Flink blog</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://github.com/apache/flink">
+ <div class="icon flink-github-icon"></div>
+ <span>Github</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://twitter.com/apacheflink">
+ <div class="icon flink-twitter-icon"></div>
+ <span>Twitter</span>
+ </a>
+ </div>
+ </div>
+ </div>
+</div>
+
+<hr/>
+
+<div class="container disclaimer">
+ <p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
+</div>
+
+
+
+ </footer>
+
+ </body>
+</html>
+
+
+
+
+
+
diff --git a/content/2015/01/21/apache-flink-0.8.0-available/index.html b/content/2015/01/21/apache-flink-0.8.0-available/index.html
new file mode 100644
index 000000000..13a0301f1
--- /dev/null
+++ b/content/2015/01/21/apache-flink-0.8.0-available/index.html
@@ -0,0 +1,720 @@
+
+<!DOCTYPE html>
+<html lang="en" dir=ZgotmplZ>
+
+<head>
+
+
+
+<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
+<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
+<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
+<script src="/js/anchor.min.js"></script>
+<script src="/js/flink.js"></script>
+<link rel="canonical" href="https://flink.apache.org/2015/01/21/apache-flink-0.8.0-available/">
+
+ <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!
+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.">
+<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Apache Flink 0.8.0 available" />
+<meta property="og: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!
+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." />
+<meta property="og:type" content="article" />
+<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.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
+<script defer src="/en.search.min.c34b8a3404aa0f9423d81bbba3f4b7195e00d999fc077279ac6672e2d7adbab6.js" integrity="sha256-w0uKNASqD5Qj2Bu7o/S3GV4A2Zn8B3J5rGZy4teturY="></script>
+<!--
+Made with Book Theme
+https://github.com/alex-shpak/hugo-book
+-->
+
+ <meta name="generator" content="Hugo 0.124.1">
+
+
+ <script>
+ var _paq = window._paq = window._paq || [];
+
+
+ _paq.push(['disableCookies']);
+
+ _paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="//analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '1']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+ </script>
+
+</head>
+
+<body dir=ZgotmplZ>
+
+
+
+<header>
+ <nav class="navbar navbar-expand-xl">
+ <div class="container-fluid">
+ <a class="navbar-brand" href="/">
+ <img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
+ <span>Apache Flink</span>
+ </a>
+ <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
+ <i class="fa fa-bars navbar-toggler-icon"></i>
+ </button>
+ <div class="collapse navbar-collapse" id="navbarSupportedContent">
+ <ul class="navbar-nav">
+
+
+
+
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/security/">Security</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable/docs/get-started/introduction/">With Flink CDC<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/">With Flink ML<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html">With Flink Stateful Functions<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/">Training Course<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 1.20 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-release-2.0-preview1/">Flink 2.0 (preview)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-master/">Flink Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">Kubernetes Operator 1.10 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main">Kubernetes Operator Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable">CDC 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-master">CDC Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">ML 2.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-master">ML Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">Stateful Functions 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-master">Stateful Functions Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">How to Contribute</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/overview/">Overview</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-code/">Contribute Code</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/reviewing-prs/">Review Pull Requests</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/code-style-and-quality-preamble/">Code Style and Quality Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-documentation/">Contribute Documentation</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/documentation-style-guide/">Documentation Style Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/improve-website/">Contribute to the Website</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/getting-help/">Getting Help</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/posts/">Flink Blog</a>
+
+
+ </li>
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/downloads/">Downloads</a>
+
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </ul>
+ <div class="book-search">
+ <div class="book-search-spinner hidden">
+ <i class="fa fa-refresh fa-spin"></i>
+ </div>
+ <form class="search-bar d-flex" onsubmit="return false;"su>
+ <input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/">
+ <i class="fa fa-search search"></i>
+ <i class="fa fa-circle-o-notch fa-spin spinner"></i>
+ </form>
+ <div class="book-search-spinner hidden"></div>
+ <ul id="book-search-results"></ul>
+ </div>
+ </div>
+ </div>
+ </nav>
+ <div class="navbar-clearfix"></div>
+</header>
+
+
+ <main class="flex">
+ <section class="container book-page">
+
+<article class="markdown">
+ <h1>
+ <a href="/2015/01/21/apache-flink-0.8.0-available/">Apache Flink 0.8.0 available</a>
+ </h1>
+
+
+
+ January 21, 2015 -
+
+
+
+
+
+ <p><p>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!</p>
+<p><a href="http://www.apache.org/dyn/closer.cgi/flink/flink-0.8.0/flink-0.8.0-bin-hadoop2.tgz">Download Flink 0.8.0</a></p>
+<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315522&version=12328699">See the release changelog</a></p>
+<h2 id="overview-of-major-new-features">
+ Overview of major new features
+ <a class="anchor" href="#overview-of-major-new-features">#</a>
+</h2>
+<ul>
+<li>
+<p><strong>Extended filesystem support</strong>: The former <code>DistributedFileSystem</code> interface has been generalized to <code>HadoopFileSystem</code> now supporting all sub classes of <code>org.apache.hadoop.fs.FileSystem</code>. This allows users to use all file systems supported by Hadoop with Apache Flink.
+<a href="//nightlies.apache.org/flink/flink-docs-release-0.8/example_connectors.html">See connecting to other systems</a></p>
+</li>
+<li>
+<p><strong>Streaming Scala API</strong>: As an alternative to the existing Java API Streaming is now also programmable in Scala. The Java and Scala APIs have now the same syntax and transformations and will be kept from now on in sync in every future release.</p>
+</li>
+<li>
+<p><strong>Streaming windowing semantics</strong>: The new windowing api offers an expressive way to define custom logic for triggering the execution of a stream window and removing elements. The new features include out-of-the-box support for windows based in logical or physical time and data-driven properties on the events themselves among others. <a href="//nightlies.apache.org/flink/flink-docs-release-0.8/streaming_guide.html#window-operators">Read more here</a></p>
+</li>
+<li>
+<p><strong>Mutable and immutable objects in runtime</strong> All Flink versions before 0.8.0 were always passing the same objects to functions written by users. This is a common performance optimization, also used in other systems such as Hadoop.
+However, this is error-prone for new users because one has to carefully check that references to the object aren’t kept in the user function. Starting from 0.8.0, Flink allows to configure a mode which is disabling that mechanism.</p>
+</li>
+<li>
+<p><strong>Performance and usability improvements</strong>: The new Apache Flink 0.8.0 release brings several new features which will significantly improve the performance and the usability of the system. Amongst others, these features include:</p>
+<ul>
+<li>Improved input split assignment which maximizes computation locality</li>
+<li>Smart broadcasting mechanism which minimizes network I/O</li>
+<li>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.</li>
+<li>coGroup operator now supports group sorting for its inputs</li>
+</ul>
+</li>
+<li>
+<p><strong>Kryo is the new fallback serializer</strong>: Apache Flink has a sophisticated type analysis and serialization framework that is able to handle commonly used types very efficiently.
+In addition to that, there is a fallback serializer for types which are not supported. Older versions of Flink used the reflective <a href="http://avro.apache.org/">Avro</a> serializer for that purpose. With this release, Flink is using the powerful <a href="https://github.com/EsotericSoftware/kryo">Kryo</a> and twitter-chill library for support of types such as Java Collections and Scala specifc types.</p>
+</li>
+<li>
+<p><strong>Hadoop 2.2.0+ is now the default Hadoop dependency</strong>: 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.</p>
+</li>
+<li>
+<p><strong>HBase module updated</strong> The HBase version has been updated to 0.98.6.1. Also, Hbase is now available to the Hadoop1 and Hadoop2 profile of Flink.</p>
+</li>
+</ul>
+<h2 id="contributors">
+ Contributors
+ <a class="anchor" href="#contributors">#</a>
+</h2>
+<ul>
+<li>Marton Balassi</li>
+<li>Daniel Bali</li>
+<li>Carsten Brandt</li>
+<li>Moritz Borgmann</li>
+<li>Stefan Bunk</li>
+<li>Paris Carbone</li>
+<li>Ufuk Celebi</li>
+<li>Nils Engelbach</li>
+<li>Stephan Ewen</li>
+<li>Gyula Fora</li>
+<li>Gabor Hermann</li>
+<li>Fabian Hueske</li>
+<li>Vasiliki Kalavri</li>
+<li>Johannes Kirschnick</li>
+<li>Aljoscha Krettek</li>
+<li>Suneel Marthi</li>
+<li>Robert Metzger</li>
+<li>Felix Neutatz</li>
+<li>Chiwan Park</li>
+<li>Flavio Pompermaier</li>
+<li>Mingliang Qi</li>
+<li>Shiva Teja Reddy</li>
+<li>Till Rohrmann</li>
+<li>Henry Saputra</li>
+<li>Kousuke Saruta</li>
+<li>Chesney Schepler</li>
+<li>Erich Schubert</li>
+<li>Peter Szabo</li>
+<li>Jonas Traub</li>
+<li>Kostas Tzoumas</li>
+<li>Timo Walther</li>
+<li>Daniel Warneke</li>
+<li>Chen Xu</li>
+</ul>
+</p>
+</article>
+
+
+
+
+
+
+
+ <div class="edit-this-page">
+ <p>
+ <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
+ </p>
+ <p>
+ <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2015-01-21-release-0.8.md">
+ Edit This Page<i class="fa fa-edit fa-fw"></i>
+ </a>
+ </p>
+ </div>
+
+ </section>
+
+ <aside class="book-toc">
+
+
+
+<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
+ <ul>
+ <li>
+ <ul>
+ <li><a href="#overview-of-major-new-features">Overview of major new features</a></li>
+ <li><a href="#contributors">Contributors</a></li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+
+ </aside>
+ <aside class="expand-toc hidden">
+ <a class="toc" onclick="expandToc()" href="javascript:void(0)">
+ <i class="fa fa-bars" aria-hidden="true"></i>
+ </a>
+ </aside>
+
+ </main>
+
+ <footer>
+
+
+
+<div class="separator"></div>
+<div class="panels">
+ <div class="wrapper">
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="https://flink-packages.org/">flink-packages.org</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/">Apache Software Foundation</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/licenses/">License</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li>
+ <a href="/zh/">
+ <i class="fa fa-globe" aria-hidden="true"></i> 中文版
+ </a>
+ </li>
+
+
+
+ </ul>
+ </div>
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="/what-is-flink/security">Security</a-->
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+ </li>
+ </ul>
+ </div>
+ <div class="panel icons">
+ <div>
+ <a href="/posts">
+ <div class="icon flink-blog-icon"></div>
+ <span>Flink blog</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://github.com/apache/flink">
+ <div class="icon flink-github-icon"></div>
+ <span>Github</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://twitter.com/apacheflink">
+ <div class="icon flink-twitter-icon"></div>
+ <span>Twitter</span>
+ </a>
+ </div>
+ </div>
+ </div>
+</div>
+
+<hr/>
+
+<div class="container disclaimer">
+ <p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
+</div>
+
+
+
+ </footer>
+
+ </body>
+</html>
+
+
+
+
+
+
diff --git a/content/2015/02/04/january-2015-in-the-flink-community/index.html b/content/2015/02/04/january-2015-in-the-flink-community/index.html
new file mode 100644
index 000000000..23cbf3473
--- /dev/null
+++ b/content/2015/02/04/january-2015-in-the-flink-community/index.html
@@ -0,0 +1,705 @@
+
+<!DOCTYPE html>
+<html lang="en" dir=ZgotmplZ>
+
+<head>
+
+
+
+<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
+<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
+<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
+<script src="/js/anchor.min.js"></script>
+<script src="/js/flink.js"></script>
+<link rel="canonical" href="https://flink.apache.org/2015/02/04/january-2015-in-the-flink-community/">
+
+ <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.
+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.">
+<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="January 2015 in the Flink community" />
+<meta property="og:description" 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." />
+<meta property="og:type" content="article" />
+<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.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
+<script defer src="/en.search.min.c34b8a3404aa0f9423d81bbba3f4b7195e00d999fc077279ac6672e2d7adbab6.js" integrity="sha256-w0uKNASqD5Qj2Bu7o/S3GV4A2Zn8B3J5rGZy4teturY="></script>
+<!--
+Made with Book Theme
+https://github.com/alex-shpak/hugo-book
+-->
+
+ <meta name="generator" content="Hugo 0.124.1">
+
+
+ <script>
+ var _paq = window._paq = window._paq || [];
+
+
+ _paq.push(['disableCookies']);
+
+ _paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="//analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '1']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+ </script>
+
+</head>
+
+<body dir=ZgotmplZ>
+
+
+
+<header>
+ <nav class="navbar navbar-expand-xl">
+ <div class="container-fluid">
+ <a class="navbar-brand" href="/">
+ <img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
+ <span>Apache Flink</span>
+ </a>
+ <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
+ <i class="fa fa-bars navbar-toggler-icon"></i>
+ </button>
+ <div class="collapse navbar-collapse" id="navbarSupportedContent">
+ <ul class="navbar-nav">
+
+
+
+
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/security/">Security</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable/docs/get-started/introduction/">With Flink CDC<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/">With Flink ML<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html">With Flink Stateful Functions<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/">Training Course<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 1.20 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-release-2.0-preview1/">Flink 2.0 (preview)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-master/">Flink Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">Kubernetes Operator 1.10 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main">Kubernetes Operator Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable">CDC 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-master">CDC Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">ML 2.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-master">ML Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">Stateful Functions 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-master">Stateful Functions Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">How to Contribute</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/overview/">Overview</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-code/">Contribute Code</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/reviewing-prs/">Review Pull Requests</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/code-style-and-quality-preamble/">Code Style and Quality Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-documentation/">Contribute Documentation</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/documentation-style-guide/">Documentation Style Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/improve-website/">Contribute to the Website</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/getting-help/">Getting Help</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/posts/">Flink Blog</a>
+
+
+ </li>
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/downloads/">Downloads</a>
+
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </ul>
+ <div class="book-search">
+ <div class="book-search-spinner hidden">
+ <i class="fa fa-refresh fa-spin"></i>
+ </div>
+ <form class="search-bar d-flex" onsubmit="return false;"su>
+ <input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/">
+ <i class="fa fa-search search"></i>
+ <i class="fa fa-circle-o-notch fa-spin spinner"></i>
+ </form>
+ <div class="book-search-spinner hidden"></div>
+ <ul id="book-search-results"></ul>
+ </div>
+ </div>
+ </div>
+ </nav>
+ <div class="navbar-clearfix"></div>
+</header>
+
+
+ <main class="flex">
+ <section class="container book-page">
+
+<article class="markdown">
+ <h1>
+ <a href="/2015/02/04/january-2015-in-the-flink-community/">January 2015 in the Flink community</a>
+ </h1>
+
+
+
+ February 4, 2015 -
+
+
+
+
+
+ <p><p>Happy 2015! Here is a (hopefully digestible) summary of what happened last month in the Flink community.</p>
+<h3 id="080-release">
+ 0.8.0 release
+ <a class="anchor" href="#080-release">#</a>
+</h3>
+<p>Flink 0.8.0 was released. See <a href="http://flink.apache.org/news/2015/01/21/release-0.8.html">here</a> for the release notes.</p>
+<h3 id="flink-roadmap">
+ Flink roadmap
+ <a class="anchor" href="#flink-roadmap">#</a>
+</h3>
+<p>The community has published a <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Roadmap">roadmap for 2015</a> on the Flink wiki. Check it out to see what is coming up in Flink, and pick up an issue to contribute!</p>
+<h3 id="articles-in-the-press">
+ Articles in the press
+ <a class="anchor" href="#articles-in-the-press">#</a>
+</h3>
+<p>The Apache Software Foundation <a href="https://blogs.apache.org/foundation/entry/the_apache_software_foundation_announces69">announced</a> Flink as a Top-Level Project. The announcement was picked up by the media, e.g., <a href="http://sdtimes.com/inside-apache-software-foundations-newest-top-level-project-apache-flink/?utm_content=11232092&utm_medium=social&utm_source=twitter">here</a>, <a href="http://www.datanami.com/2015/01/12/apache-flink-takes-route-distributed-data-pro [...]
+<h3 id="hadoop-summit">
+ Hadoop Summit
+ <a class="anchor" href="#hadoop-summit">#</a>
+</h3>
+<p>A submitted abstract on Flink Streaming won the community vote at “The Future of Hadoop” track.</p>
+<h3 id="meetups-and-talks">
+ Meetups and talks
+ <a class="anchor" href="#meetups-and-talks">#</a>
+</h3>
+<p>Flink was presented at the <a href="http://www.meetup.com/Hadoop-User-Group-France/events/219778022/">Paris Hadoop User Group</a>, the <a href="http://www.meetup.com/hadoop/events/167785202/">Bay Area Hadoop User Group</a>, the <a href="http://www.meetup.com/Apache-Tez-User-Group/events/219302692/">Apache Tez User Group</a>, and <a href="https://fosdem.org/2015/schedule/track/graph_processing/">FOSDEM 2015</a>. The January <a href="http://www.meetup.com/Apache-Flink-Meetup/events/2196 [...]
+<h2 id="notable-code-contributions">
+ Notable code contributions
+ <a class="anchor" href="#notable-code-contributions">#</a>
+</h2>
+<p><strong>Note:</strong> Code contributions listed here may not be part of a release or even the Flink master repository yet.</p>
+<h3 id="using-off-heap-memoryhttpsgithubcomapacheflinkpull290">
+ <a href="https://github.com/apache/flink/pull/290">Using off-heap memory</a>
+ <a class="anchor" href="#using-off-heap-memoryhttpsgithubcomapacheflinkpull290">#</a>
+</h3>
+<p>This pull request enables Flink to use off-heap memory for its internal memory uses (sort, hash, caching of intermediate data sets).</p>
+<h3 id="gelly-flinks-graph-apihttpsgithubcomapacheflinkpull335">
+ <a href="https://github.com/apache/flink/pull/335">Gelly, Flink’s Graph API</a>
+ <a class="anchor" href="#gelly-flinks-graph-apihttpsgithubcomapacheflinkpull335">#</a>
+</h3>
+<p>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 <a href="http://www.slideshare.net/vkalavri/largescale-graph-processing-with-apache-flink-graphdevroom-fosdem15">this slide set</a> for an overview of Gelly.</p>
+<h3 id="semantic-annotationshttpsgithubcomapacheflinkpull311">
+ <a href="https://github.com/apache/flink/pull/311">Semantic annotations</a>
+ <a class="anchor" href="#semantic-annotationshttpsgithubcomapacheflinkpull311">#</a>
+</h3>
+<p>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 can generate plans t [...]
+<h3 id="new-yarn-clienthttpsgithubcomapacheflinkpull292">
+ <a href="https://github.com/apache/flink/pull/292">New YARN client</a>
+ <a class="anchor" href="#new-yarn-clienthttpsgithubcomapacheflinkpull292">#</a>
+</h3>
+<p>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.</p>
+</p>
+</article>
+
+
+
+
+
+
+
+ <div class="edit-this-page">
+ <p>
+ <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
+ </p>
+ <p>
+ <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2015-02-04-january-in-flink.md">
+ Edit This Page<i class="fa fa-edit fa-fw"></i>
+ </a>
+ </p>
+ </div>
+
+ </section>
+
+ <aside class="book-toc">
+
+
+
+<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
+ <ul>
+ <li>
+ <ul>
+ <li>
+ <ul>
+ <li><a href="#080-release">0.8.0 release</a></li>
+ <li><a href="#flink-roadmap">Flink roadmap</a></li>
+ <li><a href="#articles-in-the-press">Articles in the press</a></li>
+ <li><a href="#hadoop-summit">Hadoop Summit</a></li>
+ <li><a href="#meetups-and-talks">Meetups and talks</a></li>
+ </ul>
+ </li>
+ <li><a href="#notable-code-contributions">Notable code contributions</a>
+ <ul>
+ <li><a href="#using-off-heap-memoryhttpsgithubcomapacheflinkpull290"><a href="https://github.com/apache/flink/pull/290">Using off-heap memory</a></a></li>
+ <li><a href="#gelly-flinks-graph-apihttpsgithubcomapacheflinkpull335"><a href="https://github.com/apache/flink/pull/335">Gelly, Flink’s Graph API</a></a></li>
+ <li><a href="#semantic-annotationshttpsgithubcomapacheflinkpull311"><a href="https://github.com/apache/flink/pull/311">Semantic annotations</a></a></li>
+ <li><a href="#new-yarn-clienthttpsgithubcomapacheflinkpull292"><a href="https://github.com/apache/flink/pull/292">New YARN client</a></a></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+
+ </aside>
+ <aside class="expand-toc hidden">
+ <a class="toc" onclick="expandToc()" href="javascript:void(0)">
+ <i class="fa fa-bars" aria-hidden="true"></i>
+ </a>
+ </aside>
+
+ </main>
+
+ <footer>
+
+
+
+<div class="separator"></div>
+<div class="panels">
+ <div class="wrapper">
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="https://flink-packages.org/">flink-packages.org</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/">Apache Software Foundation</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/licenses/">License</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li>
+ <a href="/zh/">
+ <i class="fa fa-globe" aria-hidden="true"></i> 中文版
+ </a>
+ </li>
+
+
+
+ </ul>
+ </div>
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="/what-is-flink/security">Security</a-->
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+ </li>
+ </ul>
+ </div>
+ <div class="panel icons">
+ <div>
+ <a href="/posts">
+ <div class="icon flink-blog-icon"></div>
+ <span>Flink blog</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://github.com/apache/flink">
+ <div class="icon flink-github-icon"></div>
+ <span>Github</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://twitter.com/apacheflink">
+ <div class="icon flink-twitter-icon"></div>
+ <span>Twitter</span>
+ </a>
+ </div>
+ </div>
+ </div>
+</div>
+
+<hr/>
+
+<div class="container disclaimer">
+ <p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
+</div>
+
+
+
+ </footer>
+
+ </body>
+</html>
+
+
+
+
+
+
diff --git a/content/2015/02/09/introducing-flink-streaming/index.html b/content/2015/02/09/introducing-flink-streaming/index.html
new file mode 100644
index 000000000..de004556d
--- /dev/null
+++ b/content/2015/02/09/introducing-flink-streaming/index.html
@@ -0,0 +1,1216 @@
+
+<!DOCTYPE html>
+<html lang="en" dir=ZgotmplZ>
+
+<head>
+
+
+
+<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
+<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
+<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
+<script src="/js/anchor.min.js"></script>
+<script src="/js/flink.js"></script>
+<link rel="canonical" href="https://flink.apache.org/2015/02/09/introducing-flink-streaming/">
+
+ <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.
+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.">
+<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Introducing Flink Streaming" />
+<meta property="og: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.
+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." />
+<meta property="og:type" content="article" />
+<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.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
+<script defer src="/en.search.min.c34b8a3404aa0f9423d81bbba3f4b7195e00d999fc077279ac6672e2d7adbab6.js" integrity="sha256-w0uKNASqD5Qj2Bu7o/S3GV4A2Zn8B3J5rGZy4teturY="></script>
+<!--
+Made with Book Theme
+https://github.com/alex-shpak/hugo-book
+-->
+
+ <meta name="generator" content="Hugo 0.124.1">
+
+
+ <script>
+ var _paq = window._paq = window._paq || [];
+
+
+ _paq.push(['disableCookies']);
+
+ _paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="//analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '1']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+ </script>
+
+</head>
+
+<body dir=ZgotmplZ>
+
+
+
+<header>
+ <nav class="navbar navbar-expand-xl">
+ <div class="container-fluid">
+ <a class="navbar-brand" href="/">
+ <img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
+ <span>Apache Flink</span>
+ </a>
+ <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
+ <i class="fa fa-bars navbar-toggler-icon"></i>
+ </button>
+ <div class="collapse navbar-collapse" id="navbarSupportedContent">
+ <ul class="navbar-nav">
+
+
+
+
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/security/">Security</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable/docs/get-started/introduction/">With Flink CDC<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/">With Flink ML<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html">With Flink Stateful Functions<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/">Training Course<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 1.20 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-release-2.0-preview1/">Flink 2.0 (preview)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-master/">Flink Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">Kubernetes Operator 1.10 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main">Kubernetes Operator Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable">CDC 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-master">CDC Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">ML 2.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-master">ML Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">Stateful Functions 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-master">Stateful Functions Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">How to Contribute</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/overview/">Overview</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-code/">Contribute Code</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/reviewing-prs/">Review Pull Requests</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/code-style-and-quality-preamble/">Code Style and Quality Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-documentation/">Contribute Documentation</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/documentation-style-guide/">Documentation Style Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/improve-website/">Contribute to the Website</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/getting-help/">Getting Help</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/posts/">Flink Blog</a>
+
+
+ </li>
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/downloads/">Downloads</a>
+
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </ul>
+ <div class="book-search">
+ <div class="book-search-spinner hidden">
+ <i class="fa fa-refresh fa-spin"></i>
+ </div>
+ <form class="search-bar d-flex" onsubmit="return false;"su>
+ <input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/">
+ <i class="fa fa-search search"></i>
+ <i class="fa fa-circle-o-notch fa-spin spinner"></i>
+ </form>
+ <div class="book-search-spinner hidden"></div>
+ <ul id="book-search-results"></ul>
+ </div>
+ </div>
+ </div>
+ </nav>
+ <div class="navbar-clearfix"></div>
+</header>
+
+
+ <main class="flex">
+ <section class="container book-page">
+
+<article class="markdown">
+ <h1>
+ <a href="/2015/02/09/introducing-flink-streaming/">Introducing Flink Streaming</a>
+ </h1>
+
+
+
+ February 9, 2015 -
+
+
+
+
+
+ <p><p>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.</p>
+<p>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 <a href="//nightlies.apache.org/flink/flink-docs-master/apis/streaming/index.html">Streaming Programming
+Guide</a> for a
+detailed presentation of the Streaming API.</p>
+<p>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.</p>
+<p>For running the example implementation please use the <em>0.9-SNAPSHOT</em>
+version of Flink as a dependency. The full example code base can be
+found <a href="https://github.com/mbalassi/flink/blob/stockprices/flink-staging/flink-streaming/flink-streaming-examples/src/main/scala/org/apache/flink/streaming/scala/examples/windowing/StockPrices.scala">here</a> in Scala and <a href="https://github.com/mbalassi/flink/blob/stockprices/flink-staging/flink-streaming/flink-streaming-examples/src/main/java/org/apache/flink/streaming/examples/windowing/StockPrices.java">here</a> in Java7.</p>
+<p><a href="#top"></a></p>
+<p><a href="#top">Back to top</a></p>
+<h2 id="reading-from-multiple-inputs">
+ Reading from multiple inputs
+ <a class="anchor" href="#reading-from-multiple-inputs">#</a>
+</h2>
+<p>First, let us create the stream of stock prices:</p>
+<ol>
+<li>Read a socket stream of stock prices</li>
+<li>Parse the text in the stream to create a stream of <code>StockPrice</code> objects</li>
+<li>Add four other sources tagged with the stock symbol.</li>
+<li>Finally, merge the streams to create a unified stream.</li>
+</ol>
+<img alt="Reading from multiple inputs" src="/img/blog/blog_multi_input.png" width="70%" class="img-responsive center-block">
+<div class="codetabs" markdown="1">
+<div data-lang="scala" markdown="1">
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-scala" data-lang="scala"><span class="line"><span class="cl"><span class="k">def</span> <span class="n">main</span><span class="o">(</span><span class="n">args</span><span class="k">:</span> <span class="kt">Array</span><span class="o">[</span><span class="kt">String</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="k">val</span> <span class="n">env</span> <span class="k">=</span> <span class="nc">StreamExecutionEnvironment</span><span class="o">.</span><span class="n">getExecutionEnvironment</span>
+</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="k">val</span> <span class="n">socketStockStream</span> <span class="k">=</span> <span class="n">env</span><span class="o">.</span><span class="n">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 class="n">map</span><span class="o">(</span><span class="n">x</span> <span cl [...]
+</span></span><span class="line"><span class="cl"> <span class="k">val</span> <span class="n">split</span> <span class="k">=</span> <span class="n">x</span><span class="o">.</span><span class="n">split</span><span class="o">(</span><span class="s">","</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="nc">StockPrice</span><span class="o">(</span><span class="n">split</span><span class="o">(</span><span class="mi">0</span><span class="o">),</span> <span class="n">split</span><span class="o">(</span><span class="mi">1</span><span class="o">).</span><span class="n">toDouble</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="c1">//Generate other stock streams
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="k">val</span> <span class="nc">SPX_Stream</span> <span class="k">=</span> <span class="n">env</span><span class="o">.</span><span class="n">addSource</span><span class="o">(</span><span class="n">generateStock</span><span class="o">(</span><span class="s">"SPX"</span><span class="o">)(</span><span class="mi">10</span><span class="o">)</span> <span class="k">_</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="k">val</span> <span class="nc">FTSE_Stream</span> <span class="k">=</span> <span class="n">env</span><span class="o">.</span><span class="n">addSource</span><span class="o">(</span><span class="n">generateStock</span><span class="o">(</span><span class="s">"FTSE"</span><span class="o">)(</span><span class="mi">20</span><span class="o">)</span> <span class="k">_</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="k">val</span> <span class="nc">DJI_Stream</span> <span class="k">=</span> <span class="n">env</span><span class="o">.</span><span class="n">addSource</span><span class="o">(</span><span class="n">generateStock</span><span class="o">(</span><span class="s">"DJI"</span><span class="o">)(</span><span class="mi">30</span><span class="o">)</span> <span class="k">_</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="k">val</span> <span class="nc">BUX_Stream</span> <span class="k">=</span> <span class="n">env</span><span class="o">.</span><span class="n">addSource</span><span class="o">(</span><span class="n">generateStock</span><span class="o">(</span><span class="s">"BUX"</span><span class="o">)(</span><span class="mi">40</span><span class="o">)</span> <span class="k">_</span><span class="o">)</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="k">val</span> <span class="n">stockStream</span> <span class="k">=</span> <span class="n">socketStockStream</span><span class="o">.</span><span class="n">merge</span><span class="o">(</span><span class="nc">SPX_Stream</span><span class="o">,</span> <span class="nc">FTSE_Stream</span><span class="o">,</span>
+</span></span><span class="line"><span class="cl"> <span class="nc">DJI_Stream</span><span class="o">,</span> <span class="nc">BUX_Stream</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="n">stockStream</span><span class="o">.</span><span class="n">print</span><span class="o">()</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="n">env</span><span class="o">.</span><span class="n">execute</span><span class="o">(</span><span class="s">"Stock stream"</span><span class="o">)</span>
+</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">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w [...]
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">StreamExecutionEnvironment</span><span class="w"> </span><span class="n">env</span><span class="w"> </span><span class="o">=</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">StreamExecutionEnvironment</span><span class="p">.</span><span class="na">getExecutionEnvironment</span><span class="p">();</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">//Read from a socket stream at map it to StockPrice objects</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span><span class="w"> </span><span class="n">socketStockStream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">env</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">socketTextStream</span><span class="p">(</span><span class="s">"localhost"</span><span class="p">,</span><span class="w"> </span><span class="n">9999</span><span class="p">)</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">map</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">MapFunction</span><span class="o"><</span><span class="n">String</span><span class="p">,</span><span class="w"> </span><span class="n">StockPrice</span><span class="o">></span><span class="p">()</span><span class="w"> </span><span class="p">{</span><spa [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">tokens</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nd">@Override</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">StockPrice</span><span class="w"> </span><span class="nf">map</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </ [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">tokens</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value</span><span class="p">.</span><span class="na">split</span><span class="p">(</span><span class="s">","</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">StockPrice</span><span class="p">(</span><span class="n">tokens</span><span class="o">[</span><span class="n">0</span><span class="o">]</span><span class="p">,</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">Double</span><span class="p">.</span><span class="na">parseDouble</span><span class="p">(</span><span class="n">tokens</span><span class="o">[</span><span class="n">1</span><span class="o">]</span><span class="p">));</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">});</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">//Generate other stock streams</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span><span class="w"> </span><span class="n">SPX_stream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">env</span><span class="p">.</span><span class="na">addSource</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><s [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span><span class="w"> </span><span class="n">FTSE_stream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">env</span><span class="p">.</span><span class="na">addSource</span><span class="p">(</span><span class="k">new</span><span class="w"> </span>< [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span><span class="w"> </span><span class="n">DJI_stream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">env</span><span class="p">.</span><span class="na">addSource</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><s [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span><span class="w"> </span><span class="n">BUX_stream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">env</span><span class="p">.</span><span class="na">addSource</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><s [...]
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">//Merge all stock streams together</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span><span class="w"> </span><span class="n">stockStream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">socketStockStream</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">merge</span><span class="p">(</span><span class="n">SPX_stream</span><span class="p">,</span><span class="w"> </span><span class="n">FTSE_stream</span><span class="p">,</span><span class="w"> </span><span class="n">DJI_stream</span><span class="p">,</span><span class="w"> </span><span class="n">BUX_stream</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">stockStream</span><span class="p">.</span><span class="na">print</span><span class="p">();</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">env</span><span class="p">.</span><span class="na">execute</span><span class="p">(</span><span class="s">"Stock stream"</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span></code></pre></div>
+</div>
+</div>
+<p>See
+<a href="//nightlies.apache.org/flink/flink-docs-master/apis/streaming/index.html#data-sources">here</a>
+on how you can create streaming sources for Flink Streaming
+programs. Flink, of course, has support for reading in streams from
+<a href="//nightlies.apache.org/flink/flink-docs-master/apis/streaming/connectors/index.html">external
+sources</a>
+such as Apache Kafka, Apache Flume, RabbitMQ, and others. For the sake
+of this example, the data streams are simply generated using the
+<code>generateStock</code> method:</p>
+<div class="codetabs" markdown="1">
+<div data-lang="scala" markdown="1">
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-scala" data-lang="scala"><span class="line"><span class="cl"><span class="k">val</span> <span class="n">symbols</span> <span class="k">=</span> <span class="nc">List</span><span class="o">(</span><span class="s">"SPX"</span><span class="o">,</span> <span class="s">"FTSE"</span><span class="o">,</span> <span class="s">"DJI"</span><span class="o">,</span> <span class="s">"DJT"</spa [...]
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="k">case</span> <span class="k">class</span> <span class="nc">StockPrice</span><span class="o">(</span><span class="n">symbol</span><span class="k">:</span> <span class="kt">String</span><span class="o">,</span> <span class="n">price</span><span class="k">:</span> <span class="kt">Double</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="n">generateStock</span><span class="o">(</span><span class="n">symbol</span><span class="k">:</span> <span class="kt">String</span><span class="o">)(</span><span class="n">sigma</span><span class="k">:</span> <span class="kt">Int</span><span class="o">)(</span><span class="n">out</span><span class="k">:</span> <span class="kt">Collector</span><span class="o">[</span><span class="kt">StockPrice</span [...]
+</span></span><span class="line"><span class="cl"> <span class="k">var</span> <span class="n">price</span> <span class="k">=</span> <span class="mf">1000.</span>
+</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="k">=</span> <span class="n">price</span> <span class="o">+</span> <span class="nc">Random</span><span class="o">.</span><span class="n">nextGaussian</span> <span class="o">*</span> <span class="n">sigma</span>
+</span></span><span class="line"><span class="cl"> <span class="n">out</span><span class="o">.</span><span class="n">collect</span><span class="o">(</span><span class="nc">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="nc">Thread</span><span class="o">.</span><span class="n">sleep</span><span class="o">(</span><span class="nc">Random</span><span class="o">.</span><span class="n">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="o">}</span>
+</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="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">ArrayList</span><span class="o"><</span><span class="n">String</span><span class="o">></span><span class="w"> </span><span class="n">SYMBOLS</span><span class="w"> </span> [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">Arrays</span><span class="p">.</span><span class="na">asList</span><span class="p">(</span><span class="s">"SPX"</span><span class="p">,</span><span class="w"> </span><span class="s">"FTSE"</span><span class="p">,</span><span class="w"> </span><span class="s">"DJI"</span><span class="p">,</span><span class="w"> </span><span class="s">"DJT"</span><span class= [...]
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">class</span> <span class="nc">StockPrice</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">Serializable</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">symbol</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">Double</span><span class="w"> </span><span class="n">price</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">StockPrice</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">StockPrice</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">symbol</span><span class="p">,</span><span class="w"> </span><span class="n">Double</span><span class="w"> </span><span class="n">price</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">symbol</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">symbol</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">price</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">price</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nd">@Override</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">toString</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"StockPrice{"</span><span class="w"> </span><span class="o">+</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">"symbol='"</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">symbol</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="sc">'\''</span><span class="w"> </span><span class="o">+</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">", count="</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">price</span><span class="w"> </span><span class="o">+</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="sc">'}'</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kd">public</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">class</span> <span class="nc">StockSource</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">SourceFunction</span><span class="o"><</span><span class="n">StockPrice</span><span c [...]
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">Double</span><span class="w"> </span><span class="n">price</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">symbol</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">Integer</span><span class="w"> </span><span class="n">sigma</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">StockSource</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">symbol</span><span class="p">,</span><span class="w"> </span><span class="n">Integer</span><span class="w"> </span><span class="n">sigma</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">symbol</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">symbol</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">sigma</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sigma</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nd">@Override</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">invoke</span><span class="p">(</span><span class="n">Collector</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span><span class="w"> </span><span class="n">collector</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</ [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">price</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DEFAULT_PRICE</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">Random</span><span class="w"> </span><span class="n">random</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Random</span><span class="p">();</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="kc">true</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">price</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">price</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">random</span><span class="p">.</span><span class="na">nextGaussian</span><span class="p">()</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">collector</span><span class="p">.</span><span class="na">collect</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">StockPrice</span><span class="p">(</span><span class="n">symbol</span><span class="p">,</span><span class="w"> </span><span class="n">price</span><span class="p">));</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">Thread</span><span class="p">.</span><span class="na">sleep</span><span class="p">(</span><span class="n">random</span><span class="p">.</span><span class="na">nextInt</span><span class="p">(</span><span class="n">200</span><span class="p">));</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span></span></span></code></pre></div>
+</div>
+</div>
+<p>To read from the text socket stream please make sure that you have a
+socket running. For the sake of the example executing the following
+command in a terminal does the job. You can get
+<a href="http://netcat.sourceforge.net/">netcat</a> here if it is not available
+on your machine.</p>
+<pre tabindex="0"><code>nc -lk 9999
+</code></pre><p>If we execute the program from our IDE we see the system the
+stock prices being generated:</p>
+<pre tabindex="0"><code>INFO Job execution switched to status RUNNING.
+INFO Socket Stream(1/1) switched to SCHEDULED
+INFO Socket Stream(1/1) switched to DEPLOYING
+INFO Custom Source(1/1) switched to SCHEDULED
+INFO Custom Source(1/1) switched to DEPLOYING
+…
+1> StockPrice{symbol='SPX', count=1011.3405732645239}
+2> StockPrice{symbol='SPX', count=1018.3381290039248}
+1> StockPrice{symbol='DJI', count=1036.7454894073978}
+3> StockPrice{symbol='DJI', count=1135.1170217478427}
+3> StockPrice{symbol='BUX', count=1053.667523187687}
+4> StockPrice{symbol='BUX', count=1036.552601487263}
+</code></pre><p><a href="#top">Back to top</a></p>
+<h2 id="window-aggregations">
+ Window aggregations
+ <a class="anchor" href="#window-aggregations">#</a>
+</h2>
+<p>We first compute aggregations on time-based windows of the
+data. Flink provides <a href="//nightlies.apache.org/flink/flink-docs-master/apis/streaming/windows.html">flexible windowing semantics</a> where windows can
+also be defined based on count of records or any custom user defined
+logic.</p>
+<p>We partition our stream into windows of 10 seconds and slide the
+window every 5 seconds. We compute three statistics every 5 seconds.
+The first is the minimum price of all stocks, the second produces
+maximum price per stock, and the third is the mean stock price
+(using a map window function). Aggregations and groupings can be
+performed on named fields of POJOs, making the code more readable.</p>
+<img alt="Basic windowing aggregations" src="/img/blog/blog_basic_window.png" width="70%" class="img-responsive center-block">
+<div class="codetabs" markdown="1">
+<div data-lang="scala" markdown="1">
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-scala" data-lang="scala"><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="k">val</span> <span class="n">windowedStream</span> <span class="k">=</span> <span class="n">stockStream</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="n">window</span><span class="o">(</span><span class="nc">Time</span><span class="o">.</span><span class="n">of</span><span class="o">(</span><span class="mi">10</span><span class="o">,</span> <span class="nc">SECONDS</span><span class="o">)).</span><span class="n">every</span><span class="o">(</span><span class="nc">Time</span><span class="o">.</span><span class="n">of</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="k">val</span> <span class="n">lowest</span> <span class="k">=</span> <span class="n">windowedStream</span><span class="o">.</span><span class="n">minBy</span><span class="o">(</span><span class="s">"price"</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"><span class="k">val</span> <span class="n">maxByStock</span> <span class="k">=</span> <span class="n">windowedStream</span><span class="o">.</span><span class="n">groupBy</span><span class="o">(</span><span class="s">"symbol"</span><span class="o">).</span><span class="n">maxBy</span><span class="o">(</span><span class="s">"price"</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"><span class="k">val</span> <span class="n">rollingMean</span> <span class="k">=</span> <span class="n">windowedStream</span><span class="o">.</span><span class="n">groupBy</span><span class="o">(</span><span class="s">"symbol"</span><span class="o">).</span><span class="n">mapWindow</span><span class="o">(</span><span class="n">mean</span> <span class="k">_</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 the mean of a window
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">def</span> <span class="n">mean</span><span class="o">(</span><span class="n">ts</span><span class="k">:</span> <span class="kt">Iterable</span><span class="o">[</span><span class="kt">StockPrice</span><span class="o">],</span> <span class="n">out</span><span class="k">:</span> <span class="kt">Collector</span><span class="o">[</span><span class="kt">StockPrice</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">ts</span><span class="o">.</span><span class="n">nonEmpty</span><span class="o">)</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl"> <span class="n">out</span><span class="o">.</span><span class="n">collect</span><span class="o">(</span><span class="nc">StockPrice</span><span class="o">(</span><span class="n">ts</span><span class="o">.</span><span class="n">head</span><span class="o">.</span><span class="n">symbol</span><span class="o">,</span> <span class="n">ts</span><span class="o">.</span><span class="n">foldLeft</span><span class="o">(</span><span class="mi">0 [...]
+</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>
+</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="c1">//Define the desired time window</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">WindowedDataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span><span class="w"> </span><span class="n">windowedStream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">stockStream</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">window</span><span class="p">(</span><span class="n">Time</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="n">10</span><span class="p">,</span><span class="w"> </span><span class="n">TimeUnit</span><span class="p">.</span><span class="na">SECONDS</span><span class="p">))</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">every</span><span class="p">(</span><span class="n">Time</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="n">5</span><span class="p">,</span><span class="w"> </span><span class="n">TimeUnit</span><span class="p">.</span><span class="na">SECONDS</span><span class="p">));</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">//Compute some simple statistics on a rolling window</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span><span class="w"> </span><span class="n">lowest</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">windowedStream</span><span class="p">.</span><span class="na">minBy</span><span class="p">(</span><span class="s">"price"</span><span class="p" [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span><span class="w"> </span><span class="n">maxByStock</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">windowedStream</span><span class="p">.</span><span class="na">groupBy</span><span class="p">(</span><span class="s">"symbol"</span><span cl [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">maxBy</span><span class="p">(</span><span class="s">"price"</span><span class="p">).</span><span class="na">flatten</span><span class="p">();</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span><span class="w"> </span><span class="n">rollingMean</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">windowedStream</span><span class="p">.</span><span class="na">groupBy</span><span class="p">(</span><span class="s">"symbol"</span><span c [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">mapWindow</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">WindowMean</span><span class="p">()).</span><span class="na">flatten</span><span class="p">();</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">//Compute the mean of a window</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kd">public</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">class</span> <span class="nc">WindowMean</span><span class="w"> </span><span class="kd">implements</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">WindowMapFunction</span><span class="o"><</span><span class="n">StockPrice</span><span class="p">,</span><span class="w"> </span><span class="n">StockPrice</span><span class="o">></span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">Double</span><span class="w"> </span><span class="n">sum</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">.</span><span class="na">0</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">Integer</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">symbol</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">""</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nd">@Override</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">mapWindow</span><span class="p">(</span><span class="n">Iterable</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span><span class="w"> </span><span class="n">values</span><span class="p">,</span><span class="w"> </span><span class="n">Collector< [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">values</span><span class="p">.</span><span class="na">iterator</span><span class="p">().</span><span class="na">hasNext</span><span class="p">())</span><span class="w"> </span><span class="p">{</span><span class="n">s</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nf">for</span><span class="w"> </span><span class="p">(</span><span class="n">StockPrice</span><span class="w"> </span><span class="n">sp</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">values</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">sum</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">sp</span><span class="p">.</span><span class="na">price</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">symbol</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sp</span><span class="p">.</span><span class="na">symbol</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">out</span><span class="p">.</span><span class="na">collect</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">StockPrice</span><span class="p">(</span><span class="n">symbol</span><span class="p">,</span><span class="w"> </span><span class="n">sum</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class=" [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span></span></span></code></pre></div>
+</div>
+</div>
+<p>Let us note that to print a windowed stream one has to flatten it first,
+thus getting rid of the windowing logic. For example execute
+<code>maxByStock.flatten().print()</code> to print the stream of maximum prices of
+the time windows by stock. For Scala <code>flatten()</code> is called implicitly
+when needed.</p>
+<p><a href="#top">Back to top</a></p>
+<h2 id="data-driven-windows">
+ Data-driven windows
+ <a class="anchor" href="#data-driven-windows">#</a>
+</h2>
+<p>The most interesting event in the stream is when the price of a stock
+is changing rapidly. We can send a warning when a stock price changes
+more than 5% since the last warning. To do that, we use a delta-based window providing a
+threshold on when the computation will be triggered, a function to
+compute the difference and a default value with which the first record
+is compared. We also create a <code>Count</code> data type to count the warnings
+every 30 seconds.</p>
+<img alt="Data-driven windowing semantics" src="/img/blog/blog_data_driven.png" width="100%" class="img-responsive center-block">
+<div class="codetabs" markdown="1">
+<div data-lang="scala" markdown="1">
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-scala" data-lang="scala"><span class="line"><span class="cl"><span class="k">case</span> <span class="k">class</span> <span class="nc">Count</span><span class="o">(</span><span class="n">symbol</span><span class="k">:</span> <span class="kt">String</span><span class="o">,</span> <span class="n">count</span><span class="k">:</span> <span class="kt">Int</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"><span class="k">val</span> <span class="n">defaultPrice</span> <span class="k">=</span> <span class="nc">StockPrice</span><span class="o">(</span><span class="s">""</span><span class="o">,</span> <span class="mi">1000</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="k">val</span> <span class="n">priceWarnings</span> <span class="k">=</span> <span class="n">stockStream</span><span class="o">.</span><span class="n">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="n">window</span><span class="o">(</span><span class="nc">Delta</span><span class="o">.</span><span class="n">of</span><span class="o">(</span><span class="mf">0.05</span><span class="o">,</span> <span class="n">priceChange</span><span class="o">,</span> <span class="n">defaultPrice</span><span class="o">))</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="n">mapWindow</span><span class="o">(</span><span class="n">sendWarning</span> <span class="k">_</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="c1">//Count the number of warnings every half a minute
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">val</span> <span class="n">warningsPerStock</span> <span class="k">=</span> <span class="n">priceWarnings</span><span class="o">.</span><span class="n">map</span><span class="o">(</span><span class="nc">Count</span><span class="o">(</span><span class="k">_</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="n">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="n">window</span><span class="o">(</span><span class="nc">Time</span><span class="o">.</span><span class="n">of</span><span class="o">(</span><span class="mi">30</span><span class="o">,</span> <span class="nc">SECONDS</span><span class="o">))</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="n">sum</span><span class="o">(</span><span class="s">"count"</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="n">priceChange</span><span class="o">(</span><span class="n">p1</span><span class="k">:</span> <span class="kt">StockPrice</span><span class="o">,</span> <span class="n">p2</span><span class="k">:</span> <span class="kt">StockPrice</span><span class="o">)</span><span class="k">:</span> <span class="kt">Double</span> <span class="o">=</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl"> <span class="nc">Math</span><span class="o">.</span><span class="n">abs</span><span class="o">(</span><span class="n">p1</span><span class="o">.</span><span class="n">price</span> <span class="o">/</span> <span class="n">p2</span><span class="o">.</span><span class="n">price</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></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="n">sendWarning</span><span class="o">(</span><span class="n">ts</span><span class="k">:</span> <span class="kt">Iterable</span><span class="o">[</span><span class="kt">StockPrice</span><span class="o">],</span> <span class="n">out</span><span class="k">:</span> <span class="kt">Collector</span><span class="o">[</span><span class="kt">String</span><span class="o">])</span> <span class="k">=</span> <s [...]
+</span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="o">(</span><span class="n">ts</span><span class="o">.</span><span class="n">nonEmpty</span><span class="o">)</span> <span class="n">out</span><span class="o">.</span><span class="n">collect</span><span class="o">(</span><span class="n">ts</span><span class="o">.</span><span class="n">head</span><span class="o">.</span><span class="n">symbol</span><span class="o">)</span>
+</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="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">Double</span><span class="w"> </span><span class="n">DEFAULT_PRICE</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">1000</span><span [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kd">private</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">StockPrice</span><span class="w"> </span><span class="n">DEFAULT_STOCK_PRICE</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">StockPrice</s [...]
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">//Use delta policy to create price change warnings</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">String</span><span class="o">></span><span class="w"> </span><span class="n">priceWarnings</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">stockStream</span><span class="p">.</span><span class="na">groupBy</span><span class="p">(</span><span class="s">"symbol"</span><span class= [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">window</span><span class="p">(</span><span class="n">Delta</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="n">0</span><span class="p">.</span><span class="na">05</span><span class="p">,</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">DeltaFunction</span><span class="o">< [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nd">@Override</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="nf">getDelta</span><span class="p">(</span><span class="n">StockPrice</span><span class="w"> </span><span class="n">oldDataPoint</span><span class="p">,</span><span class="w"> </span><span class="n">StockPrice</span><span class="w"> </span><span class="n">newDataPoint</span><span cl [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">Math</span><span class="p">.</span><span class="na">abs</span><span class="p">(</span><span class="n">oldDataPoint</span><span class="p">.</span><span class="na">price</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">newDataPoint</span><span class="p">.</span><span class="na">price</sp [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="n">DEFAULT_STOCK_PRICE</span><span class="p">))</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">.</span><span class="na">mapWindow</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">SendWarning</span><span class="p">()).</span><span class="na">flatten</span><span class="p">();</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">//Count the number of warnings every half a minute</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">Count</span><span class="o">></span><span class="w"> </span><span class="n">warningsPerStock</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">priceWarnings</span><span class="p">.</span><span class="na">map</span><span class="p">(</span><span class="k">new</span><span class="w"> </span>< [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nd">@Override</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">Count</span><span class="w"> </span><span class="nf">map</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </span><span class= [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Count</span><span class="p">(</span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="n">1</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}).</span><span class="na">groupBy</span><span class="p">(</span><span class="s">"symbol"</span><span class="p">).</span><span class="na">window</span><span class="p">(</span><span class="n">Time</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="n">30</span><span class="p">,</span><span class="w"> </span><span class="n">TimeUnit</span><span cl [...]
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Count</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">Serializable</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">symbol</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">Integer</span><span class="w"> </span><span class="n">count</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">Count</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">Count</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">symbol</span><span class="p">,</span><span class="w"> </span><span class="n">Integer</span><span class="w"> </span><span class="n">count</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">symbol</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">symbol</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">count</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nd">@Override</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">toString</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"Count{"</span><span class="w"> </span><span class="o">+</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">"symbol='"</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">symbol</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="sc">'\''</span><span class="w"> </span><span class="o">+</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="s">", count="</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="sc">'}'</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kd">class</span> <span class="nc">SendWarning</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">MapWindowFunction</span><span class="o"><</span><span class="n">StockPrice</span><spa [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nd">@Override</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">mapWindow</span><span class="p">(</span><span class="n">Iterable</span><span class="o"><</span><span class="n">StockPrice</span><span class="o">></span><span class="w"> </span><span class="n">values</span><span class="p">,</span><span class="w"> </span><span class="n">Collector< [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">values</span><span class="p">.</span><span class="na">iterator</span><span class="p">().</span><span class="na">hasNext</span><span class="p">())</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">out</span><span class="p">.</span><span class="na">collect</span><span class="p">(</span><span class="n">values</span><span class="p">.</span><span class="na">iterator</span><span class="p">().</span><span class="na">next</span><span class="p">().</span><span class="na">symbol</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span></span></span></code></pre></div>
+</div>
+</div>
+<p><a href="#top">Back to top</a></p>
+<h2 id="combining-with-a-twitter-stream">
+ Combining with a Twitter stream
+ <a class="anchor" href="#combining-with-a-twitter-stream">#</a>
+</h2>
+<p>Next, we will read a Twitter stream and correlate it with our stock
+price stream. Flink has support for connecting to <a href="//nightlies.apache.org/flink/flink-docs-master/apis/streaming/connectors/twitter.html">Twitter’s
+API</a>
+but for the sake of this example we generate dummy tweet data.</p>
+<img alt="Social media analytics" src="/img/blog/blog_social_media.png" width="100%" class="img-responsive center-block">
+<div class="codetabs" markdown="1">
+<div data-lang="scala" markdown="1">
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-scala" data-lang="scala"><span class="line"><span class="cl"><span class="c1">//Read a stream of tweets
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">val</span> <span class="n">tweetStream</span> <span class="k">=</span> <span class="n">env</span><span class="o">.</span><span class="n">addSource</span><span class="o">(</span><span class="n">generateTweets</span> <span class="k">_</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="c1">//Extract the stock symbols
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">val</span> <span class="n">mentionedSymbols</span> <span class="k">=</span> <span class="n">tweetStream</span><span class="o">.</span><span class="n">flatMap</span><span class="o">(</span><span class="n">tweet</span> <span class="k">=></span> <span class="n">tweet</span><span class="o">.</span><span class="n">split</span><span class="o">(</span><span class="s">" "</span><span class [...]
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="n">map</span><span class="o">(</span><span class="k">_</span><span class="o">.</span><span class="n">toUpperCase</span><span class="o">())</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="n">filter</span><span class="o">(</span><span class="n">symbols</span><span class="o">.</span><span class="n">contains</span><span class="o">(</span><span class="k">_</span><span class="o">))</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="c1">//Count the extracted symbols
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">val</span> <span class="n">tweetsPerStock</span> <span class="k">=</span> <span class="n">mentionedSymbols</span><span class="o">.</span><span class="n">map</span><span class="o">(</span><span class="nc">Count</span><span class="o">(</span><span class="k">_</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="n">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="n">window</span><span class="o">(</span><span class="nc">Time</span><span class="o">.</span><span class="n">of</span><span class="o">(</span><span class="mi">30</span><span class="o">,</span> <span class="nc">SECONDS</span><span class="o">))</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="n">sum</span><span class="o">(</span><span class="s">"count"</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="n">generateTweets</span><span class="o">(</span><span class="n">out</span><span class="k">:</span> <span class="kt">Collector</span><span class="o">[</span><span class="kt">String</span><span class="o">])</span> <span class="k">=</span> <span class="o">{</span>
+</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="k">val</span> <span class="n">s</span> <span class="k">=</span> <span class="k">for</span> <span class="o">(</span><span class="n">i</span> <span class="k"><-</span> <span class="mi">1</span> <span class="n">to</span> <span class="mi">3</span><span class="o">)</span> <span class="k">yield</span> <span class="o">(</span><span class="n">symbols</span><span class="o">(</span><span class="nc">Random</span><span class="o">. [...]
+</span></span><span class="line"><span class="cl"> <span class="n">out</span><span class="o">.</span><span class="n">collect</span><span class="o">(</span><span class="n">s</span><span class="o">.</span><span class="n">mkString</span><span class="o">(</span><span class="s">" "</span><span class="o">))</span>
+</span></span><span class="line"><span class="cl"> <span class="nc">Thread</span><span class="o">.</span><span class="n">sleep</span><span class="o">(</span><span class="nc">Random</span><span class="o">.</span><span class="n">nextInt</span><span class="o">(</span><span class="mi">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 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="c1">//Read a stream of tweets</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">String</span><span class="o">></span><span class="w"> </span><span class="n">tweetStream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">env</span><span class="p">.</span><span class="na">addSource</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span cla [...]
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">//Extract the stock symbols</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">String</span><span class="o">></span><span class="w"> </span><span class="n">mentionedSymbols</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tweetStream</span><span class="p">.</span><span class="na">flatMap</span><span class="p">(</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">FlatMapFunction</span><span class="o"><</span><span class="n">String</span><span class="p">,</span><span class="w"> </span><span class="n">String</span><span class="o">></span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nd">@Override</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">flatMap</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="n">Collector</span><span class="o"><</span><span class="n">String</span><span class="o">></span><sp [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">words</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value</span><span class="p">.</span><span class="na">split</span><span class="p">(</span><span class="s">" "</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">word</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">words</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">out</span><span class="p">.</span><span class="na">collect</span><span class="p">(</span><span class="n">word</span><span class="p">.</span><span class="na">toUpperCase</span><span class="p">());</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}).</span><span class="na">filter</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">FilterFunction</span><span class="o"><</span><span class="n">String</span><span class="o">></span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nd">@Override</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">filter</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </span><span [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">SYMBOLS</span><span class="p">.</span><span class="na">contains</span><span class="p">(</span><span class="n">value</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">});</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">//Count the extracted symbols</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">Count</span><span class="o">></span><span class="w"> </span><span class="n">tweetsPerStock</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">mentionedSymbols</span><span class="p">.</span><span class="na">map</span><span class="p">(</span><span class="k">new</span><span class="w"> </span> [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nd">@Override</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">Count</span><span class="w"> </span><span class="nf">map</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </span><span class= [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Count</span><span class="p">(</span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="n">1</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}).</span><span class="na">groupBy</span><span class="p">(</span><span class="s">"symbol"</span><span class="p">).</span><span class="na">window</span><span class="p">(</span><span class="n">Time</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="n">30</span><span class="p">,</span><span class="w"> </span><span class="n">TimeUnit</span><span cl [...]
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kd">class</span> <span class="nc">TweetSource</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">SourceFunction</span><span class="o"><</span><span class="n">String</span><span class [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">Random</span><span class="w"> </span><span class="n">random</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">StringBuilder</span><span class="w"> </span><span class="n">stringBuilder</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nd">@Override</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">invoke</span><span class="p">(</span><span class="n">Collector</span><span class="o"><</span><span class="n">String</span><span class="o">></span><span class="w"> </span><span class="n">collector</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">random</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Random</span><span class="p">();</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">stringBuilder</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">StringBuilder</span><span class="p">();</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="kc">true</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">stringBuilder</span><span class="p">.</span><span class="na">setLength</span><span class="p">(</span><span class="n">0</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span cl [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">stringBuilder</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="s">" "</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">stringBuilder</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="n">SYMBOLS</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="n">random</span><span class="p">.</span><span class="na">nextInt</span><span class="p">(</span><span class="n">SYMBOLS</span><span class="p">.</span><span class="na [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">collector</span><span class="p">.</span><span class="na">collect</span><span class="p">(</span><span class="n">stringBuilder</span><span class="p">.</span><span class="na">toString</span><span class="p">());</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">Thread</span><span class="p">.</span><span class="na">sleep</span><span class="p">(</span><span class="n">500</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span></span></span></code></pre></div>
+</div>
+</div>
+<p><a href="#top">Back to top</a></p>
+<h2 id="streaming-joins">
+ Streaming joins
+ <a class="anchor" href="#streaming-joins">#</a>
+</h2>
+<p>Finally, we join real-time tweets and stock prices and compute a
+rolling correlation between the number of price warnings and the
+number of mentions of a given stock in the Twitter stream. As both of
+these data streams are potentially infinite, we apply the join on a
+30-second window.</p>
+<img alt="Streaming joins" src="/img/blog/blog_stream_join.png" width="60%" class="img-responsive center-block">
+<div class="codetabs" markdown="1">
+<div data-lang="scala" markdown="1">
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-scala" data-lang="scala"><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="k">val</span> <span class="n">tweetsAndWarning</span> <span class="k">=</span> <span class="n">warningsPerStock</span><span class="o">.</span><span class="n">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="n">onWindow</span><span class="o">(</span><span class="mi">30</span><span class="o">,</span> <span class="nc">SECONDS</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="n">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="n">equalTo</span><span class="o">(</span><span class="s">"symbol"</span><span class="o">)</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="k">=></span> <span class="o">(</span><span class="n">c1</span><span class="o">.</span><span class="n">count</span><span class="o">,</ [...]
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="k">val</span> <span class="n">rollingCorrelation</span> <span class="k">=</span> <span class="n">tweetsAndWarning</span><span class="o">.</span><span class="n">window</span><span class="o">(</span><span class="nc">Time</span><span class="o">.</span><span class="n">of</span><span class="o">(</span><span class="mi">30</span><span class="o">,</span> <span class="nc">SECONDS</span><span class="o">))</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="n">mapWindow</span><span class="o">(</span><span class="n">computeCorrelation</span> <span class="k">_</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="n">print</span>
+</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="k">def</span> <span class="n">computeCorrelation</span><span class="o">(</span><span class="n">input</span><span class="k">:</span> <span class="kt">Iterable</span><span class="o">[(</span><span class="kt">Int</span>, <span class="kt">Int</span><span class="o">)],</span> <span class="n">out</span><span class="k">:</span> <span class="kt">Collector</span><span class="o">[</span><span class="kt">D [...]
+</span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="o">(</span><span class="n">input</span><span class="o">.</span><span class="n">nonEmpty</span><span class="o">)</span> <span class="o">{</span>
+</span></span><span class="line"><span class="cl"> <span class="k">val</span> <span class="n">var1</span> <span class="k">=</span> <span class="n">input</span><span class="o">.</span><span class="n">map</span><span class="o">(</span><span class="k">_</span><span class="o">.</span><span class="n">_1</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="k">val</span> <span class="n">mean1</span> <span class="k">=</span> <span class="n">average</span><span class="o">(</span><span class="n">var1</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="k">val</span> <span class="n">var2</span> <span class="k">=</span> <span class="n">input</span><span class="o">.</span><span class="n">map</span><span class="o">(</span><span class="k">_</span><span class="o">.</span><span class="n">_2</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="k">val</span> <span class="n">mean2</span> <span class="k">=</span> <span class="n">average</span><span class="o">(</span><span class="n">var2</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="k">val</span> <span class="n">cov</span> <span class="k">=</span> <span class="n">average</span><span class="o">(</span><span class="n">var1</span><span class="o">.</span><span class="n">zip</span><span class="o">(</span><span class="n">var2</span><span class="o">).</span><span class="n">map</span><span class="o">(</span><span class="n">xy</span> <span class="k">=></span> <span class="o">(</span><span class="n">xy</spa [...]
+</span></span><span class="line"><span class="cl"> <span class="k">val</span> <span class="n">d1</span> <span class="k">=</span> <span class="nc">Math</span><span class="o">.</span><span class="n">sqrt</span><span class="o">(</span><span class="n">average</span><span class="o">(</span><span class="n">var1</span><span class="o">.</span><span class="n">map</span><span class="o">(</span><span class="n">x</span> <span class="k">=></span> <span class="nc">Math</span><span class="o">.</s [...]
+</span></span><span class="line"><span class="cl"> <span class="k">val</span> <span class="n">d2</span> <span class="k">=</span> <span class="nc">Math</span><span class="o">.</span><span class="n">sqrt</span><span class="o">(</span><span class="n">average</span><span class="o">(</span><span class="n">var2</span><span class="o">.</span><span class="n">map</span><span class="o">(</span><span class="n">x</span> <span class="k">=></span> <span class="nc">Math</span><span class="o">.</s [...]
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="n">out</span><span class="o">.</span><span class="n">collect</span><span class="o">(</span><span class="n">cov</span> <span class="o">/</span> <span class="o">(</span><span class="n">d1</span> <span class="o">*</span> <span class="n">d2</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>
+</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="c1">//Join warnings and parsed tweets</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></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="p">,</span><span class="w"> </span><span class="n">Integer</span><span class="o">>></span><span class="w"> </span><span class="n">tweetsAndWarning</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">warnin [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">join</span><span class="p">(</span><span class="n">tweetsPerStock</span><span class="p">)</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">onWindow</span><span class="p">(</span><span class="n">30</span><span class="p">,</span><span class="w"> </span><span class="n">TimeUnit</span><span class="p">.</span><span class="na">SECONDS</span><span class="p">)</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">where</span><span class="p">(</span><span class="s">"symbol"</span><span class="p">)</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">equalTo</span><span class="p">(</span><span class="s">"symbol"</span><span class="p">)</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">with</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">JoinFunction</span><span class="o"><</span><span class="n">Count</span><span class="p">,</span><span class="w"> </span><span class="n">Count</span><span class="p">,</span><span class="w"> </span><span class="n">Tuple2</span><span class="o"><</span><span class= [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nd">@Override</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">Tuple2</span><span class="o"><</span><span class="n">Integer</span><span class="p">,</span><span class="w"> </span><span class="n">Integer</span><span class="o">></span><span class="w"> </span><span class="nf">join</span><span class="p">(</span><span class="n">Count</span><span class="w"> </span><span class="n">first</span><sp [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Tuple2</span><span class="o"><</span><span class="n">Integer</span><span class="p">,</span><span class="w"> </span><span class="n">Integer</span><span class="o">></span><span class="p">(</span><span class="n">first</span><span class="p">.</span><span class="na">count</span>< [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">});</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c1">//Compute rolling correlation</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">DataStream</span><span class="o"><</span><span class="n">Double</span><span class="o">></span><span class="w"> </span><span class="n">rollingCorrelation</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tweetsAndWarning</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">window</span><span class="p">(</span><span class="n">Time</span><span class="p">.</span><span class="na">of</span><span class="p">(</span><span class="n">30</span><span class="p">,</span><span class="w"> </span><span class="n">TimeUnit</span><span class="p">.</span><span class="na">SECONDS</span><span class="p">))</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">mapWindow</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">WindowCorrelation</span><span class="p">());</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">rollingCorrelation</span><span class="p">.</span><span class="na">print</span><span class="p">();</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kd">class</span> <span class="nc">WindowCorrelation</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">WindowMapFunction</span><span class="o"><</span><span class="n">Tuple2</span><span class="o"><</span><span class="n">Integer</span><span class="p">,</span><span class="w"> </span><span class="n">Integer</span><span class="o">></span><span class="p">,</span><span class="w"> </span><span class="n">Double</span><span class="o" [...]
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">Integer</span><span class="w"> </span><span class="n">leftSum</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">Integer</span><span class="w"> </span><span class="n">rightSum</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">Integer</span><span class="w"> </span><span class="n">count</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">Double</span><span class="w"> </span><span class="n">leftMean</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">Double</span><span class="w"> </span><span class="n">rightMean</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">Double</span><span class="w"> </span><span class="n">cov</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">Double</span><span class="w"> </span><span class="n">leftSd</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">Double</span><span class="w"> </span><span class="n">rightSd</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nd">@Override</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">mapWindow</span><span class="p">(</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="p">,</span><span class="w"> </span><span class="n">Integer</span><span class="o">>> [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </span><span class="p">{</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">leftSum</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">rightSum</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">cov</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">.;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">leftSd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">.;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">rightSd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">0</span><span class="p">.;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">//compute mean for both sides, save count</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">Tuple2</span><span class="o"><</span><span class="n">Integer</span><span class="p">,</span><span class="w"> </span><span class="n">Integer</span><span class="o">></span><span class="w"> </span><span class="n">pair</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n"> [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">leftSum</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">pair</span><span class="p">.</span><span class="na">f0</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">rightSum</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">pair</span><span class="p">.</span><span class="na">f1</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">leftMean</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">leftSum</span><span class="p">.</span><span class="na">doubleValue</span><span class="p">()</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">count</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">rightMean</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rightSum</span><span class="p">.</span><span class="na">doubleValue</span><span class="p">()</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">count</span><span class="p">;</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c1">//compute covariance & std. deviations</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">Tuple2</span><span class="o"><</span><span class="n">Integer</span><span class="p">,</span><span class="w"> </span><span class="n">Integer</span><span class="o">></span><span class="w"> </span><span class="n">pair</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n"> [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">cov</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="p">(</span><span class="n">pair</span><span class="p">.</span><span class="na">f0</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">leftMean</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span>< [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">Tuple2</span><span class="o"><</span><span class="n">Integer</span><span class="p">,</span><span class="w"> </span><span class="n">Integer</span><span class="o">></span><span class="w"> </span><span class="n">pair</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n"> [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">leftSd</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">Math</span><span class="p">.</span><span class="na">pow</span><span class="p">(</span><span class="n">pair</span><span class="p">.</span><span class="na">f0</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">leftMean</span><span class="p"> [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">rightSd</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">Math</span><span class="p">.</span><span class="na">pow</span><span class="p">(</span><span class="n">pair</span><span class="p">.</span><span class="na">f1</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">rightMean</span><span class="p [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">leftSd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Math</span><span class="p">.</span><span class="na">sqrt</span><span class="p">(</span><span class="n">leftSd</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">rightSd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Math</span><span class="p">.</span><span class="na">sqrt</span><span class="p">(</span><span class="n">rightSd</span><span class="p">);</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">out</span><span class="p">.</span><span class="na">collect</span><span class="p">(</span><span class="n">cov</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="p">(</span><span class="n">leftSd</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">rightSd</span><span class="p">));</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">}</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span></span></span></code></pre></div>
+</div>
+</div>
+<p><a href="#top">Back to top</a></p>
+<h2 id="other-things-to-try">
+ Other things to try
+ <a class="anchor" href="#other-things-to-try">#</a>
+</h2>
+<p>For a full feature overview please check the <a href="//nightlies.apache.org/flink/flink-docs-master/apis/streaming/index.html">Streaming Guide</a>, which describes all the available API features.
+You are very welcome to try out our features for different use-cases we are looking forward to your experiences. Feel free to <a href="http://flink.apache.org/community.html#mailing-lists">contact us</a>.</p>
+<h2 id="upcoming-for-streaming">
+ Upcoming for streaming
+ <a class="anchor" href="#upcoming-for-streaming">#</a>
+</h2>
+<p>There are some aspects of Flink Streaming that are subjects to
+change by the next release making this application look even nicer.</p>
+<p>Stay tuned for later blog posts on how Flink Streaming works
+internally, fault tolerance, and performance measurements!</p>
+<p><a href="#top">Back to top</a></p>
+</p>
+</article>
+
+
+
+
+
+
+
+ <div class="edit-this-page">
+ <p>
+ <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
+ </p>
+ <p>
+ <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2015-02-09-streaming-example.md">
+ Edit This Page<i class="fa fa-edit fa-fw"></i>
+ </a>
+ </p>
+ </div>
+
+ </section>
+
+ <aside class="book-toc">
+
+
+
+<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
+ <ul>
+ <li>
+ <ul>
+ <li><a href="#reading-from-multiple-inputs">Reading from multiple inputs</a></li>
+ <li><a href="#window-aggregations">Window aggregations</a></li>
+ <li><a href="#data-driven-windows">Data-driven windows</a></li>
+ <li><a href="#combining-with-a-twitter-stream">Combining with a Twitter stream</a></li>
+ <li><a href="#streaming-joins">Streaming joins</a></li>
+ <li><a href="#other-things-to-try">Other things to try</a></li>
+ <li><a href="#upcoming-for-streaming">Upcoming for streaming</a></li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+
+ </aside>
+ <aside class="expand-toc hidden">
+ <a class="toc" onclick="expandToc()" href="javascript:void(0)">
+ <i class="fa fa-bars" aria-hidden="true"></i>
+ </a>
+ </aside>
+
+ </main>
+
+ <footer>
+
+
+
+<div class="separator"></div>
+<div class="panels">
+ <div class="wrapper">
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="https://flink-packages.org/">flink-packages.org</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/">Apache Software Foundation</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/licenses/">License</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li>
+ <a href="/zh/">
+ <i class="fa fa-globe" aria-hidden="true"></i> 中文版
+ </a>
+ </li>
+
+
+
+ </ul>
+ </div>
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="/what-is-flink/security">Security</a-->
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+ </li>
+ </ul>
+ </div>
+ <div class="panel icons">
+ <div>
+ <a href="/posts">
+ <div class="icon flink-blog-icon"></div>
+ <span>Flink blog</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://github.com/apache/flink">
+ <div class="icon flink-github-icon"></div>
+ <span>Github</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://twitter.com/apacheflink">
+ <div class="icon flink-twitter-icon"></div>
+ <span>Twitter</span>
+ </a>
+ </div>
+ </div>
+ </div>
+</div>
+
+<hr/>
+
+<div class="container disclaimer">
+ <p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
+</div>
+
+
+
+ </footer>
+
+ </body>
+</html>
+
+
+
+
+
+
diff --git a/content/2015/03/02/february-2015-in-the-flink-community/index.html b/content/2015/03/02/february-2015-in-the-flink-community/index.html
new file mode 100644
index 000000000..688ed51cb
--- /dev/null
+++ b/content/2015/03/02/february-2015-in-the-flink-community/index.html
@@ -0,0 +1,765 @@
+
+<!DOCTYPE html>
+<html lang="en" dir=ZgotmplZ>
+
+<head>
+
+
+
+<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
+<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
+<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
+<script src="/js/anchor.min.js"></script>
+<script src="/js/flink.js"></script>
+<link rel="canonical" href="https://flink.apache.org/2015/03/02/february-2015-in-the-flink-community/">
+
+ <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.
+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.">
+<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="February 2015 in the Flink community" />
+<meta property="og: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.
+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." />
+<meta property="og:type" content="article" />
+<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.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
+<script defer src="/en.search.min.c34b8a3404aa0f9423d81bbba3f4b7195e00d999fc077279ac6672e2d7adbab6.js" integrity="sha256-w0uKNASqD5Qj2Bu7o/S3GV4A2Zn8B3J5rGZy4teturY="></script>
+<!--
+Made with Book Theme
+https://github.com/alex-shpak/hugo-book
+-->
+
+ <meta name="generator" content="Hugo 0.124.1">
+
+
+ <script>
+ var _paq = window._paq = window._paq || [];
+
+
+ _paq.push(['disableCookies']);
+
+ _paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="//analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '1']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+ </script>
+
+</head>
+
+<body dir=ZgotmplZ>
+
+
+
+<header>
+ <nav class="navbar navbar-expand-xl">
+ <div class="container-fluid">
+ <a class="navbar-brand" href="/">
+ <img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
+ <span>Apache Flink</span>
+ </a>
+ <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
+ <i class="fa fa-bars navbar-toggler-icon"></i>
+ </button>
+ <div class="collapse navbar-collapse" id="navbarSupportedContent">
+ <ul class="navbar-nav">
+
+
+
+
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/security/">Security</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable/docs/get-started/introduction/">With Flink CDC<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/">With Flink ML<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html">With Flink Stateful Functions<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/">Training Course<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 1.20 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-release-2.0-preview1/">Flink 2.0 (preview)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-master/">Flink Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">Kubernetes Operator 1.10 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main">Kubernetes Operator Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable">CDC 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-master">CDC Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">ML 2.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-master">ML Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">Stateful Functions 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-master">Stateful Functions Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">How to Contribute</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/overview/">Overview</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-code/">Contribute Code</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/reviewing-prs/">Review Pull Requests</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/code-style-and-quality-preamble/">Code Style and Quality Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-documentation/">Contribute Documentation</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/documentation-style-guide/">Documentation Style Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/improve-website/">Contribute to the Website</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/getting-help/">Getting Help</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/posts/">Flink Blog</a>
+
+
+ </li>
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/downloads/">Downloads</a>
+
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </ul>
+ <div class="book-search">
+ <div class="book-search-spinner hidden">
+ <i class="fa fa-refresh fa-spin"></i>
+ </div>
+ <form class="search-bar d-flex" onsubmit="return false;"su>
+ <input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/">
+ <i class="fa fa-search search"></i>
+ <i class="fa fa-circle-o-notch fa-spin spinner"></i>
+ </form>
+ <div class="book-search-spinner hidden"></div>
+ <ul id="book-search-results"></ul>
+ </div>
+ </div>
+ </div>
+ </nav>
+ <div class="navbar-clearfix"></div>
+</header>
+
+
+ <main class="flex">
+ <section class="container book-page">
+
+<article class="markdown">
+ <h1>
+ <a href="/2015/03/02/february-2015-in-the-flink-community/">February 2015 in the Flink community</a>
+ </h1>
+
+
+
+ March 2, 2015 -
+
+
+
+
+
+ <p><p>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.</p>
+<h3 id="081-release">
+ 0.8.1 release
+ <a class="anchor" href="#081-release">#</a>
+</h3>
+<p>Flink 0.8.1 was released. This bugfixing release resolves a total of 22 issues.</p>
+<h3 id="new-committer">
+ New committer
+ <a class="anchor" href="#new-committer">#</a>
+</h3>
+<p><a href="https://github.com/mxm">Max Michels</a> has been voted a committer by the Flink PMC.</p>
+<h3 id="flink-adapter-for-apache-samoa">
+ Flink adapter for Apache SAMOA
+ <a class="anchor" href="#flink-adapter-for-apache-samoa">#</a>
+</h3>
+<p><a href="http://samoa.incubator.apache.org">Apache SAMOA (incubating)</a> 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 <a href="https://github.com/apache/incubator-samoa/pull/11">pull
+request</a> is
+available at the SAMOA repository that adds a Flink adapter for SAMOA.</p>
+<h3 id="easy-flink-deployment-on-google-compute-cloud">
+ Easy Flink deployment on Google Compute Cloud
+ <a class="anchor" href="#easy-flink-deployment-on-google-compute-cloud">#</a>
+</h3>
+<p>Flink is now integrated in bdutil, Google’s open source tool for
+creating and configuring (Hadoop) clusters in Google Compute
+Engine. Deployment of Flink clusters in now supported starting with
+<a href="https://groups.google.com/forum/#!topic/gcp-hadoop-announce/uVJ_6y9cGKM">bdutil
+1.2.0</a>.</p>
+<h3 id="flink-on-the-web">
+ Flink on the Web
+ <a class="anchor" href="#flink-on-the-web">#</a>
+</h3>
+<p>A new blog post on <a href="http://flink.apache.org/news/2015/02/09/streaming-example.html">Flink
+Streaming</a>
+was published at the blog. Flink was mentioned in several articles on
+the web. Here are some examples:</p>
+<ul>
+<li>
+<p><a href="http://dataconomy.com/how-flink-became-an-apache-top-level-project/">How Flink became an Apache Top-Level Project</a></p>
+</li>
+<li>
+<p><a href="https://www.linkedin.com/pulse/stale-synchronous-parallelism-new-frontier-apache-flink-nam-luc-tran?utm_content=buffer461af&utm_medium=social&utm_source=linkedin.com&utm_campaign=buffer">Stale Synchronous Parallelism: The new frontier for Apache Flink?</a></p>
+</li>
+<li>
+<p><a href="http://www.hadoopsphere.com/2015/02/distributed-data-processing-with-apache.html">Distributed data processing with Apache Flink</a></p>
+</li>
+<li>
+<p><a href="http://www.hadoopsphere.com/2015/02/ciao-latency-hallo-speed.html">Ciao latency, hello speed</a></p>
+</li>
+</ul>
+<h2 id="in-the-flink-master">
+ In the Flink master
+ <a class="anchor" href="#in-the-flink-master">#</a>
+</h2>
+<p>The following features have been now merged in Flink’s master repository.</p>
+<h3 id="gelly">
+ Gelly
+ <a class="anchor" href="#gelly">#</a>
+</h3>
+<p>Gelly, Flink’s Graph API allows users to manipulate graph-shaped data
+directly. Here’s for example a calculation of shortest paths in a
+graph:</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">Graph</span><span class="o"><</span><span class="n">Long</span><span class="p">,</span><span class="w"> </span><span class="n">Double</span><span class="p">,</span><span class="w"> </span><span class="n">Double</span><span class="o">></span><span class="w"> </span><span class="n">graph</span><span class="w"> </span><span class="o"> [...]
+</span></span></span><span class="line"><span class="cl"><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">DataSet</span><span class="o"><</span><span class="n">Vertex</span><span class="o"><</span><span class="n">Long</span><span class="p">,</span><span class="w"> </span><span class="n">Double</span><span class="o">>></span><span class="w"> </span><span class="n">singleSourceShortestPaths</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">grap [...]
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">.</span><span class="na">run</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">SingleSourceShortestPaths</span><span class="o"><</span><span class="n">Long</span><span class="o">></span><span class="p">(</span><span class="n">srcVertexId</span><span class="p">,</span><span class="w">
+</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">maxIterations</span><span class="p">)).</span><span class="na">getVertices</span><span class="p">();</span></span></span></code></pre></div>
+<p>See more Gelly examples
+<a href="https://github.com/apache/flink/tree/master/flink-libraries/flink-gelly-examples">here</a>.</p>
+<h3 id="flink-expressions">
+ Flink Expressions
+ <a class="anchor" href="#flink-expressions">#</a>
+</h3>
+<p>The newly merged
+<a href="https://github.com/apache/flink/tree/master/flink-libraries/flink-table">flink-table</a>
+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.</p>
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-scala" data-lang="scala"><span class="line"><span class="cl"><span class="k">val</span> <span class="n">customers</span> <span class="k">=</span> <span class="n">getCustomerDataSet</span><span class="o">(</span><span class="n">env</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="n">as</span><span class="o">(</span>'id<span class="o">,</span> 'mktSegment<span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="n">filter</span><span class="o">(</span> 'mktSegment <span class="o">===</span> <span class="s">"AUTOMOBILE"</span> <span class="o">)</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="k">val</span> <span class="n">orders</span> <span class="k">=</span> <span class="n">getOrdersDataSet</span><span class="o">(</span><span class="n">env</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="n">filter</span><span class="o">(</span> <span class="n">o</span> <span class="k">=></span> <span class="n">dateFormat</span><span class="o">.</span><span class="n">parse</span><span class="o">(</span><span class="n">o</span><span class="o">.</span><span class="n">orderDate</span><span class="o">).</span><span class="n">before</span><span class="o">(</span><span class="n">date</span><span class="o" [...]
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="n">as</span><span class="o">(</span>'orderId<span class="o">,</span> 'custId<span class="o">,</span> 'orderDate<span class="o">,</span> 'shipPrio<span class="o">)</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="k">val</span> <span class="n">items</span> <span class="k">=</span>
+</span></span><span class="line"><span class="cl"> <span class="n">orders</span><span class="o">.</span><span class="n">join</span><span class="o">(</span><span class="n">customers</span><span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="n">where</span><span class="o">(</span>'custId <span class="o">===</span> 'id<span class="o">)</span>
+</span></span><span class="line"><span class="cl"> <span class="o">.</span><span class="n">select</span><span class="o">(</span>'orderId<span class="o">,</span> 'orderDate<span class="o">,</span> 'shipPrio<span class="o">)</span></span></span></code></pre></div>
+<h3 id="access-to-hcatalog-tables">
+ Access to HCatalog tables
+ <a class="anchor" href="#access-to-hcatalog-tables">#</a>
+</h3>
+<p>With the <a href="https://github.com/apache/flink/tree/master/flink-batch-connectors/flink-hcatalog">flink-hcatalog
+module</a>,
+you can now conveniently access HCatalog/Hive tables. The module
+supports projection (selection and order of fields) and partition
+filters.</p>
+<h3 id="access-to-secured-yarn-clustershdfs">
+ Access to secured YARN clusters/HDFS.
+ <a class="anchor" href="#access-to-secured-yarn-clustershdfs">#</a>
+</h3>
+<p>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.</p>
+</p>
+</article>
+
+
+
+
+
+
+
+ <div class="edit-this-page">
+ <p>
+ <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
+ </p>
+ <p>
+ <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2015-03-02-february-2015-in-flink.md">
+ Edit This Page<i class="fa fa-edit fa-fw"></i>
+ </a>
+ </p>
+ </div>
+
+ </section>
+
+ <aside class="book-toc">
+
+
+
+<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
+ <ul>
+ <li>
+ <ul>
+ <li>
+ <ul>
+ <li><a href="#081-release">0.8.1 release</a></li>
+ <li><a href="#new-committer">New committer</a></li>
+ <li><a href="#flink-adapter-for-apache-samoa">Flink adapter for Apache SAMOA</a></li>
+ <li><a href="#easy-flink-deployment-on-google-compute-cloud">Easy Flink deployment on Google Compute Cloud</a></li>
+ <li><a href="#flink-on-the-web">Flink on the Web</a></li>
+ </ul>
+ </li>
+ <li><a href="#in-the-flink-master">In the Flink master</a>
+ <ul>
+ <li><a href="#gelly">Gelly</a></li>
+ <li><a href="#flink-expressions">Flink Expressions</a></li>
+ <li><a href="#access-to-hcatalog-tables">Access to HCatalog tables</a></li>
+ <li><a href="#access-to-secured-yarn-clustershdfs">Access to secured YARN clusters/HDFS.</a></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+
+ </aside>
+ <aside class="expand-toc hidden">
+ <a class="toc" onclick="expandToc()" href="javascript:void(0)">
+ <i class="fa fa-bars" aria-hidden="true"></i>
+ </a>
+ </aside>
+
+ </main>
+
+ <footer>
+
+
+
+<div class="separator"></div>
+<div class="panels">
+ <div class="wrapper">
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="https://flink-packages.org/">flink-packages.org</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/">Apache Software Foundation</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/licenses/">License</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li>
+ <a href="/zh/">
+ <i class="fa fa-globe" aria-hidden="true"></i> 中文版
+ </a>
+ </li>
+
+
+
+ </ul>
+ </div>
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="/what-is-flink/security">Security</a-->
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+ </li>
+ </ul>
+ </div>
+ <div class="panel icons">
+ <div>
+ <a href="/posts">
+ <div class="icon flink-blog-icon"></div>
+ <span>Flink blog</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://github.com/apache/flink">
+ <div class="icon flink-github-icon"></div>
+ <span>Github</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://twitter.com/apacheflink">
+ <div class="icon flink-twitter-icon"></div>
+ <span>Twitter</span>
+ </a>
+ </div>
+ </div>
+ </div>
+</div>
+
+<hr/>
+
+<div class="container disclaimer">
+ <p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
+</div>
+
+
+
+ </footer>
+
+ </body>
+</html>
+
+
+
+
+
+
diff --git a/content/2015/03/13/peeking-into-apache-flinks-engine-room/index.html b/content/2015/03/13/peeking-into-apache-flinks-engine-room/index.html
new file mode 100644
index 000000000..aaa8eceac
--- /dev/null
+++ b/content/2015/03/13/peeking-into-apache-flinks-engine-room/index.html
@@ -0,0 +1,798 @@
+
+<!DOCTYPE html>
+<html lang="en" dir=ZgotmplZ>
+
+<head>
+
+
+
+<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
+<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
+<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
+<script src="/js/anchor.min.js"></script>
+<script src="/js/flink.js"></script>
+<link rel="canonical" href="https://flink.apache.org/2015/03/13/peeking-into-apache-flinks-engine-room/">
+
+ <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 [...]
+<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Peeking into Apache Flink's Engine Room" />
+<meta property="og: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 p [...]
+<meta property="og:type" content="article" />
+<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.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
+<script defer src="/en.search.min.c34b8a3404aa0f9423d81bbba3f4b7195e00d999fc077279ac6672e2d7adbab6.js" integrity="sha256-w0uKNASqD5Qj2Bu7o/S3GV4A2Zn8B3J5rGZy4teturY="></script>
+<!--
+Made with Book Theme
+https://github.com/alex-shpak/hugo-book
+-->
+
+ <meta name="generator" content="Hugo 0.124.1">
+
+
+ <script>
+ var _paq = window._paq = window._paq || [];
+
+
+ _paq.push(['disableCookies']);
+
+ _paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="//analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '1']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+ </script>
+
+</head>
+
+<body dir=ZgotmplZ>
+
+
+
+<header>
+ <nav class="navbar navbar-expand-xl">
+ <div class="container-fluid">
+ <a class="navbar-brand" href="/">
+ <img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
+ <span>Apache Flink</span>
+ </a>
+ <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
+ <i class="fa fa-bars navbar-toggler-icon"></i>
+ </button>
+ <div class="collapse navbar-collapse" id="navbarSupportedContent">
+ <ul class="navbar-nav">
+
+
+
+
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/security/">Security</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable/docs/get-started/introduction/">With Flink CDC<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/">With Flink ML<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html">With Flink Stateful Functions<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/">Training Course<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 1.20 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-release-2.0-preview1/">Flink 2.0 (preview)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-master/">Flink Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">Kubernetes Operator 1.10 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main">Kubernetes Operator Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable">CDC 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-master">CDC Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">ML 2.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-master">ML Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">Stateful Functions 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-master">Stateful Functions Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">How to Contribute</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/overview/">Overview</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-code/">Contribute Code</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/reviewing-prs/">Review Pull Requests</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/code-style-and-quality-preamble/">Code Style and Quality Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/contribute-documentation/">Contribute Documentation</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/documentation-style-guide/">Documentation Style Guide</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/improve-website/">Contribute to the Website</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/how-to-contribute/getting-help/">Getting Help</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/posts/">Flink Blog</a>
+
+
+ </li>
+
+
+
+
+
+ <li class="nav-item">
+
+
+ <a class="nav-link" href="/downloads/">Downloads</a>
+
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </ul>
+ <div class="book-search">
+ <div class="book-search-spinner hidden">
+ <i class="fa fa-refresh fa-spin"></i>
+ </div>
+ <form class="search-bar d-flex" onsubmit="return false;"su>
+ <input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/">
+ <i class="fa fa-search search"></i>
+ <i class="fa fa-circle-o-notch fa-spin spinner"></i>
+ </form>
+ <div class="book-search-spinner hidden"></div>
+ <ul id="book-search-results"></ul>
+ </div>
+ </div>
+ </div>
+ </nav>
+ <div class="navbar-clearfix"></div>
+</header>
+
+
+ <main class="flex">
+ <section class="container book-page">
+
+<article class="markdown">
+ <h1>
+ <a href="/2015/03/13/peeking-into-apache-flinks-engine-room/">Peeking into Apache Flink's Engine Room</a>
+ </h1>
+
+
+
+ March 13, 2015 -
+
+
+
+
+
+ <p><h3 id="join-processing-in-apache-flink">
+ Join Processing in Apache Flink
+ <a class="anchor" href="#join-processing-in-apache-flink">#</a>
+</h3>
+<p>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 processing system.</p>
+<p>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</p>
+<ul>
+<li>show how easy it is to join data sets using Flink’s fluent APIs,</li>
+<li>discuss basic distributed join strategies, Flink’s join implementations, and its memory management,</li>
+<li>talk about Flink’s optimizer that automatically chooses join strategies,</li>
+<li>show some performance numbers for joining data sets of different sizes, and finally</li>
+<li>briefly discuss joining of co-located and pre-sorted data sets.</li>
+</ul>
+<p><em>Disclaimer</em>: This blog post is exclusively about equi-joins. Whenever I say “join” in the following, I actually mean “equi-join”.</p>
+<h3 id="how-do-i-join-with-flink">
+ How do I join with Flink?
+ <a class="anchor" href="#how-do-i-join-with-flink">#</a>
+</h3>
+<p>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 <a href="http://research.google.com/archive/mapreduce.html">[1]</a> but also operators for joining, co-grouping, and iterative processing. The documentation gives an overview of [...]
+<p>Joining two Scala case class data sets is very easy as the following example shows:</p>
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-scala" data-lang="scala"><span class="line"><span class="cl"><span class="c1">// define your data types
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">case</span> <span class="k">class</span> <span class="nc">PageVisit</span><span class="o">(</span><span class="n">url</span><span class="k">:</span> <span class="kt">String</span><span class="o">,</span> <span class="n">ip</span><span class="k">:</span> <span class="kt">String</span><span class="o">,</span> <span class="n">userId</span><span class="k">:</span> <span class="kt">Long</span><spa [...]
+</span></span><span class="line"><span class="cl"><span class="k">case</span> <span class="k">class</span> <span class="nc">User</span><span class="o">(</span><span class="n">id</span><span class="k">:</span> <span class="kt">Long</span><span class="o">,</span> <span class="n">name</span><span class="k">:</span> <span class="kt">String</span><span class="o">,</span> <span class="n">email</span><span class="k">:</span> <span class="kt">String</span><span class="o">,</span> <span class="n" [...]
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="c1">// get your data from somewhere
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">val</span> <span class="n">visits</span><span class="k">:</span> <span class="kt">DataSet</span><span class="o">[</span><span class="kt">PageVisit</span><span class="o">]</span> <span class="k">=</span> <span class="o">...</span>
+</span></span><span class="line"><span class="cl"><span class="k">val</span> <span class="n">users</span><span class="k">:</span> <span class="kt">DataSet</span><span class="o">[</span><span class="kt">User</span><span class="o">]</span> <span class="k">=</span> <span class="o">...</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="c1">// filter the users data set
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">val</span> <span class="n">germanUsers</span> <span class="k">=</span> <span class="n">users</span><span class="o">.</span><span class="n">filter</span><span class="o">((</span><span class="n">u</span><span class="o">)</span> <span class="k">=></span> <span class="n">u</span><span class="o">.</span><span class="n">country</span><span class="o">.</span><span class="n">equals</span><span cla [...]
+</span></span><span class="line"><span class="cl"><span class="c1">// join data sets
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">val</span> <span class="n">germanVisits</span><span class="k">:</span> <span class="kt">DataSet</span><span class="o">[(</span><span class="kt">PageVisit</span>, <span class="kt">User</span><span class="o">)]</span> <span class="k">=</span>
+</span></span><span class="line"><span class="cl"> <span class="c1">// equi-join condition (PageVisit.userId = User.id)
+</span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="n">visits</span><span class="o">.</span><span class="n">join</span><span class="o">(</span><span class="n">germanUsers</span><span class="o">).</span><span class="n">where</span><span class="o">(</span><span class="s">"userId"</span><span class="o">).</span><span class="n">equalTo</span><span class="o">(</span><span class="s">"id"</span><span class="o">)</span>
+</span></span></code></pre></div><p>Flink’s APIs also allow to:</p>
+<ul>
+<li>apply a user-defined join function to each pair of joined elements instead returning a <code>($Left, $Right)</code> tuple,</li>
+<li>select fields of pairs of joined Tuple elements (projection), and</li>
+<li>define composite join keys such as <code>.where(“orderDate”, “zipCode”).equalTo(“date”, “zip”)</code>.</li>
+</ul>
+<p>See the documentation for more details on Flink’s join features <a href="//nightlies.apache.org/flink/flink-docs-release-0.8/dataset_transformations.html#join">[3]</a>.</p>
+<h3 id="how-does-flink-join-my-data">
+ How does Flink join my data?
+ <a class="anchor" href="#how-does-flink-join-my-data">#</a>
+</h3>
+<p>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 has quadratic complexity an [...]
+<p>In a distributed system joins are commonly processed in two steps:</p>
+<ol>
+<li>The data of both inputs is distributed across all parallel instances that participate in the join and</li>
+<li>each parallel instance performs a standard stand-alone join algorithm on its local partition of the overall data.</li>
+</ol>
+<p>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 Flink terminology, the first phase is called Ship Strategy and the second phase Local Strategy. In the following I will describe Flink’s ship and local strategies to join two data sets <em>R</em> and <em>S</em>.</p>
+<h4 id="ship-strategies">
+ Ship Strategies
+ <a class="anchor" href="#ship-strategies">#</a>
+</h4>
+<p>Flink features two ship strategies to establish a valid data partitioning for a join:</p>
+<ul>
+<li>the <em>Repartition-Repartition</em> strategy (RR) and</li>
+<li>the <em>Broadcast-Forward</em> strategy (BF).</li>
+</ul>
+<p>The Repartition-Repartition strategy partitions both inputs, R and S, on their join key attributes using the same partitioning function. Each partition is assigned to exactly one parallel join instance and all data of that partition is sent to its associated instance. This ensures that all elements that share the same join key are shipped to the same parallel instance and can be locally joined. The cost of the RR strategy is a full shuffle of both data sets over the network.</p>
+<center>
+<img src="/img/blog/joins-repartition.png" style="width:90%;margin:15px">
+</center>
+<p>The Broadcast-Forward strategy sends one complete data set (R) to each parallel instance that holds a partition of the other data set (S), i.e., each parallel instance receives the full data set R. Data set S remains local and is not shipped at all. The cost of the BF strategy depends on the size of R and the number of parallel instances it is shipped to. The size of S does not matter because S is not moved. The figure below illustrates how both ship strategies work.</p>
+<center>
+<img src="/img/blog/joins-broadcast.png" style="width:90%;margin:15px">
+</center>
+<p>The Repartition-Repartition and Broadcast-Forward ship strategies establish suitable data distributions to execute a distributed join. Depending on the operations that are applied before the join, one or even both inputs of a join are already distributed in a suitable way across parallel instances. In this case, Flink will reuse such distributions and only ship one or no input at all.</p>
+<h4 id="flinks-memory-management">
+ Flink’s Memory Management
+ <a class="anchor" href="#flinks-memory-management">#</a>
+</h4>
+<p>Before delving into the details of Flink’s local join algorithms, I will briefly discuss Flink’s internal memory management. Data processing algorithms such as joining, grouping, and sorting need to hold portions of their input data in memory. While such algorithms perform best if there is enough memory available to hold all data, it is crucial to gracefully handle situations where the data size exceeds memory. Such situations are especially tricky in JVM-based systems such as Flink b [...]
+<p>Flink handles this challenge by actively managing its memory. When a worker node (TaskManager) is started, it allocates a fixed portion (70% by default) of the JVM’s heap memory that is available after initialization as 32KB byte arrays. These byte arrays are distributed as working memory to all algorithms that need to hold significant portions of data in memory. The algorithms receive their input data as Java data objects and serialize them into their working memory.</p>
+<p>This design has several nice properties. First, the number of data objects on the JVM heap is much lower resulting in less garbage collection pressure. Second, objects on the heap have a certain space overhead and the binary representation is more compact. Especially data sets of many small elements benefit from that. Third, an algorithm knows exactly when the input data exceeds its working memory and can react by writing some of its filled byte arrays to the worker’s local filesystem [...]
+<center>
+<img src="/img/blog/joins-memmgmt.png" style="width:90%;margin:15px">
+</center>
+<p>This active memory management makes Flink extremely robust for processing very large data sets on limited memory resources while preserving all benefits of in-memory processing if data is small enough to fit in-memory. De/serializing data into and from memory has a certain cost overhead compared to simply holding all data elements on the JVM’s heap. However, Flink features efficient custom de/serializers which also allow to perform certain operations such as comparisons directly on se [...]
+<h4 id="local-strategies">
+ Local Strategies
+ <a class="anchor" href="#local-strategies">#</a>
+</h4>
+<p>After the data has been distributed across all parallel join instances using either a Repartition-Repartition or Broadcast-Forward ship strategy, each instance runs a local join algorithm to join the elements of its local partition. Flink’s runtime features two common join strategies to perform these local joins:</p>
+<ul>
+<li>the <em>Sort-Merge-Join</em> strategy (SM) and</li>
+<li>the <em>Hybrid-Hash-Join</em> strategy (HH).</li>
+</ul>
+<p>The Sort-Merge-Join works by first sorting both input data sets on their join key attributes (Sort Phase) and merging the sorted data sets as a second step (Merge Phase). The sort is done in-memory if the local partition of a data set is small enough. Otherwise, an external merge-sort is done by collecting data until the working memory is filled, sorting it, writing the sorted data to the local filesystem, and starting over by filling the working memory again with more incoming data. [...]
+<center>
+<img src="/img/blog/joins-smj.png" style="width:90%;margin:15px">
+</center>
+<p>The Hybrid-Hash-Join distinguishes its inputs as build-side and probe-side input and works in two phases, a build phase followed by a probe phase. In the build phase, the algorithm reads the build-side input and inserts all data elements into an in-memory hash table indexed by their join key attributes. If the hash table outgrows the algorithm’s working memory, parts of the hash table (ranges of hash indexes) are written to the local filesystem. The build phase ends after the bu [...]
+<center>
+<img src="/img/blog/joins-hhj.png" style="width:90%;margin:15px">
+</center>
+<h3 id="how-does-flink-choose-join-strategies">
+ How does Flink choose join strategies?
+ <a class="anchor" href="#how-does-flink-choose-join-strategies">#</a>
+</h3>
+<p>Ship and local strategies do not depend on each other and can be independently chosen. Therefore, Flink can execute a join of two data sets R and S in nine different ways by combining any of the three ship strategies (RR, BF with R being broadcasted, BF with S being broadcasted) with any of the three local strategies (SM, HH with R being build-side, HH with S being build-side). Each of these strategy combinations results in different execution performance depending on the data sizes a [...]
+<p>Flink features a cost-based optimizer which automatically chooses the execution strategies for all operators including joins. Without going into the details of cost-based optimization, this is done by computing cost estimates for execution plans with different strategies and picking the plan with the least estimated costs. Thereby, the optimizer estimates the amount of data which is shipped over the the network and written to disk. If no reliable size estimates for the input data can [...]
+<h3 id="how-is-flinks-join-performance">
+ How is Flink’s join performance?
+ <a class="anchor" href="#how-is-flinks-join-performance">#</a>
+</h3>
+<p>Alright, that sounds good, but how fast are joins in Flink? Let’s have a look. We start with a benchmark of the single-core performance of Flink’s Hybrid-Hash-Join implementation and run a Flink program that executes a Hybrid-Hash-Join with parallelism 1. We run the program on a n1-standard-2 Google Compute Engine instance (2 vCPUs, 7.5GB memory) with two locally attached SSDs. We give 4GB as working memory to the join. The join program generates 1KB records for both inputs on-the-fly [...]
+<center>
+<img src="/img/blog/joins-single-perf.png" style="width:85%;margin:15px">
+</center>
+<p>The joins with 1 to 3 GB build side (blue bars) are pure in-memory joins. The other joins partially spill data to disk (4 to 12GB, orange bars). The results show that the performance of Flink’s Hybrid-Hash-Join remains stable as long as the hash table completely fits into memory. As soon as the hash table becomes larger than the working memory, parts of the hash table and corresponding parts of the probe side are spilled to disk. The chart shows that the performance of the Hybrid-Hash [...]
+<p>So, Flink’s Hybrid-Hash-Join implementation performs well on a single thread even for limited memory resources, but how good is Flink’s performance when joining larger data sets in a distributed setting? For the next experiment we compare the performance of the most common join strategy combinations, namely:</p>
+<ul>
+<li>Broadcast-Forward, Hybrid-Hash-Join (broadcasting and building with the smaller side),</li>
+<li>Repartition, Hybrid-Hash-Join (building with the smaller side), and</li>
+<li>Repartition, Sort-Merge-Join</li>
+</ul>
+<p>for different input size ratios:</p>
+<ul>
+<li>1GB : 1000GB</li>
+<li>10GB : 1000GB</li>
+<li>100GB : 1000GB</li>
+<li>1000GB : 1000GB</li>
+</ul>
+<p>The Broadcast-Forward strategy is only executed for up to 10GB. Building a hash table from 100GB broadcasted data in 5GB working memory would result in spilling proximately 95GB (build input) + 950GB (probe input) in each parallel thread and require more than 8TB local disk storage on each machine.</p>
+<p>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 [...]
+<center>
+<img src="/img/blog/joins-dist-perf.png" style="width:70%;margin:15px">
+</center>
+<p>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 stra [...]
+<h3 id="ive-got-sooo-much-data-to-join-do-i-really-need-to-ship-it">
+ I’ve got sooo much data to join, do I really need to ship it?
+ <a class="anchor" href="#ive-got-sooo-much-data-to-join-do-i-really-need-to-ship-it">#</a>
+</h3>
+<p>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 filesystem without sending a single byte over your cluster’s network [...]
+<h3 id="tldr-what-should-i-remember-from-all-of-this">
+ tl;dr: What should I remember from all of this?
+ <a class="anchor" href="#tldr-what-should-i-remember-from-all-of-this">#</a>
+</h3>
+<ul>
+<li>Flink’s fluent Scala and Java APIs make joins and other data transformations easy as cake.</li>
+<li>The optimizer does the hard choices for you, but gives you control in case you know better.</li>
+<li>Flink’s join implementations perform very good in-memory and gracefully degrade when going to disk.</li>
+<li>Due to Flink’s robust memory management, there is no need for job- or data-specific memory tuning to avoid a nasty <code>OutOfMemoryException</code>. It just runs out-of-the-box.</li>
+</ul>
+<h4 id="references">
+ References
+ <a class="anchor" href="#references">#</a>
+</h4>
+<p>[1] <a href="">“MapReduce: Simplified data processing on large clusters”</a>, Dean, Ghemawat, 2004 <br>
+[2] <a href="//nightlies.apache.org/flink/flink-docs-release-0.8/dataset_transformations.html">Flink 0.8.1 documentation: Data Transformations</a> <br>
+[3] <a href="//nightlies.apache.org/flink/flink-docs-release-0.8/dataset_transformations.html#join">Flink 0.8.1 documentation: Joins</a> <br>
+[4] <a href="//nightlies.apache.org/flink/flink-docs-release-1.0/apis/batch/index.html#semantic-annotations">Flink 1.0 documentation: Semantic annotations</a> <br>
+[5] <a href="//nightlies.apache.org/flink/flink-docs-release-1.0/apis/batch/dataset_transformations.html#join-algorithm-hints">Flink 1.0 documentation: Optimizer join hints</a> <br></p>
+</p>
+</article>
+
+
+
+
+
+
+
+ <div class="edit-this-page">
+ <p>
+ <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
+ </p>
+ <p>
+ <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/posts/2015-03-13-peeking-into-Apache-Flinks-Engine-Room.md">
+ Edit This Page<i class="fa fa-edit fa-fw"></i>
+ </a>
+ </p>
+ </div>
+
+ </section>
+
+ <aside class="book-toc">
+
+
+
+<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
+ <ul>
+ <li>
+ <ul>
+ <li>
+ <ul>
+ <li><a href="#join-processing-in-apache-flink">Join Processing in Apache Flink</a></li>
+ <li><a href="#how-do-i-join-with-flink">How do I join with Flink?</a></li>
+ <li><a href="#how-does-flink-join-my-data">How does Flink join my data?</a></li>
+ <li><a href="#how-does-flink-choose-join-strategies">How does Flink choose join strategies?</a></li>
+ <li><a href="#how-is-flinks-join-performance">How is Flink’s join performance?</a></li>
+ <li><a href="#ive-got-sooo-much-data-to-join-do-i-really-need-to-ship-it">I’ve got sooo much data to join, do I really need to ship it?</a></li>
+ <li><a href="#tldr-what-should-i-remember-from-all-of-this">tl;dr: What should I remember from all of this?</a></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+
+ </aside>
+ <aside class="expand-toc hidden">
+ <a class="toc" onclick="expandToc()" href="javascript:void(0)">
+ <i class="fa fa-bars" aria-hidden="true"></i>
+ </a>
+ </aside>
+
+ </main>
+
+ <footer>
+
+
+
+<div class="separator"></div>
+<div class="panels">
+ <div class="wrapper">
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="https://flink-packages.org/">flink-packages.org</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/">Apache Software Foundation</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/licenses/">License</a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li>
+ <a href="/zh/">
+ <i class="fa fa-globe" aria-hidden="true"></i> 中文版
+ </a>
+ </li>
+
+
+
+ </ul>
+ </div>
+ <div class="panel">
+ <ul>
+ <li>
+ <a href="/what-is-flink/security">Security</a-->
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
+ </li>
+ <li>
+ <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+ </li>
+ </ul>
+ </div>
+ <div class="panel icons">
+ <div>
+ <a href="/posts">
+ <div class="icon flink-blog-icon"></div>
+ <span>Flink blog</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://github.com/apache/flink">
+ <div class="icon flink-github-icon"></div>
+ <span>Github</span>
+ </a>
+ </div>
+ <div>
+ <a href="https://twitter.com/apacheflink">
+ <div class="icon flink-twitter-icon"></div>
+ <span>Twitter</span>
+ </a>
+ </div>
+ </div>
+ </div>
+</div>
+
+<hr/>
+
+<div class="container disclaimer">
+ <p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
+</div>
+
+
+
+ </footer>
+
+ </body>
+</html>
+
+
+
+
+
+
diff --git a/content/2015/04/07/march-2015-in-the-flink-community/index.html b/content/2015/04/07/march-2015-in-the-flink-community/index.html
new file mode 100644
index 000000000..199728f27
--- /dev/null
+++ b/content/2015/04/07/march-2015-in-the-flink-community/index.html
@@ -0,0 +1,714 @@
+
+<!DOCTYPE html>
+<html lang="en" dir=ZgotmplZ>
+
+<head>
+
+
+
+<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
+<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
+<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
+<script src="/js/anchor.min.js"></script>
+<script src="/js/flink.js"></script>
+<link rel="canonical" href="https://flink.apache.org/2015/04/07/march-2015-in-the-flink-community/">
+
+ <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.
+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.">
+<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="March 2015 in the Flink community" />
+<meta property="og:description" 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." />
+<meta property="og:type" content="article" />
+<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.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
+<script defer src="/en.search.min.c34b8a3404aa0f9423d81bbba3f4b7195e00d999fc077279ac6672e2d7adbab6.js" integrity="sha256-w0uKNASqD5Qj2Bu7o/S3GV4A2Zn8B3J5rGZy4teturY="></script>
+<!--
+Made with Book Theme
+https://github.com/alex-shpak/hugo-book
+-->
+
+ <meta name="generator" content="Hugo 0.124.1">
+
+
+ <script>
+ var _paq = window._paq = window._paq || [];
+
+
+ _paq.push(['disableCookies']);
+
+ _paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="//analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '1']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+ </script>
+
+</head>
+
+<body dir=ZgotmplZ>
+
+
+
+<header>
+ <nav class="navbar navbar-expand-xl">
+ <div class="container-fluid">
+ <a class="navbar-brand" href="/">
+ <img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
+ <span>Apache Flink</span>
+ </a>
+ <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
+ <i class="fa fa-bars navbar-toggler-icon"></i>
+ </button>
+ <div class="collapse navbar-collapse" id="navbarSupportedContent">
+ <ul class="navbar-nav">
+
+
+
+
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/security/">Security</a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
+
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+
+
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
+ <ul class="dropdown-menu">
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
+
+ </li>
+
+ <li>
+
+
+ <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
+ </a>
+
... 376640 lines suppressed ...
(flink-web) 01/02: Add Flink 1.20.1 release
Posted by af...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
afedulov pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/flink-web.git
commit 030c6a2bb2e9c4d7d866ddeb1ef847c830012eda
Author: Alexander Fedulov <a_...@apple.com>
AuthorDate: Wed Jan 29 13:27:17 2025 +0100
Add Flink 1.20.1 release
---
docs/config.toml | 2 +-
docs/content/posts/2025-02-12-release-1.20.1.md | 208 ++++++++++++++++++++++++
docs/data/flink.yml | 14 +-
docs/data/release_archive.yml | 4 +
4 files changed, 220 insertions(+), 8 deletions(-)
diff --git a/docs/config.toml b/docs/config.toml
index 72ca22499..effa4bbd0 100644
--- a/docs/config.toml
+++ b/docs/config.toml
@@ -43,7 +43,7 @@ posts = "/:year/:month/:day/:title/"
# 4. Copy the invitation link by clicking on "Copy invite link".
FlinkSlackInviteUrl = "https://join.slack.com/t/apache-flink/shared_invite/zt-1ta0su2np-lCCV6xD7XeKjwQuHMOTBIA"
- FlinkStableVersion = "1.20.0"
+ FlinkStableVersion = "1.20.1"
FlinkStableShortVersion = "1.20"
StateFunStableVersion = "3.3.0"
StateFunStableShortVersion = "3.3"
diff --git a/docs/content/posts/2025-02-12-release-1.20.1.md b/docs/content/posts/2025-02-12-release-1.20.1.md
new file mode 100644
index 000000000..ad583c123
--- /dev/null
+++ b/docs/content/posts/2025-02-12-release-1.20.1.md
@@ -0,0 +1,208 @@
+---
+title: "Apache Flink 1.20.1 Release Announcement"
+date: "2025-02-12T00:00:00.000Z"
+aliases:
+- /news/2025/02/12/release-1.20.1.html
+authors:
+- afedulov:
+ name: "Alexander Fedulov"
+
+---
+
+The Apache Flink Community is pleased to announce the first bug fix release of the Flink 1.20 series.
+
+This release includes 75 bug fixes, vulnerability fixes, and minor improvements for Flink 1.20.
+Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see:
+[JIRA](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315522&version=12354994).
+
+We highly recommend all users upgrade to Flink 1.20.1.
+
+<div class="alert alert-warning" role="alert">
+ <b>Note:</b> Flink uses Apache Pekko for RPC communication, which in turn depends on Netty.
+In a recent Pekko update, its Netty dependency was upgraded from Netty 3 to Netty 4, allowing Flink to drop Netty 3 entirely. This change is important and desireable because Netty 3 has been end-of-life for several years and has a large number of known security vulnerabilities (CVEs).
+
+The Flink community agreed to include this update in a patch release, despite minor differences in default memory allocation between Netty 3 and Netty 4. By default, Netty 4 allocates slightly more memory to improve performance. However, we believe this will have no impact on the vast majority of use cases.
+
+For a detailed overview of these differences and available configuration options, please refer to the relevant section of the [Flink documentation]({{< param DocsBaseUrl >}}flink-docs-release-1.20/docs/deployment/memory/mem_tuning/#configure-memory-for-netty4).
+</div>
+
+# Release Artifacts
+
+## Maven Dependencies
+
+```xml
+<dependency>
+ <groupId>org.apache.flink</groupId>
+ <artifactId>flink-java</artifactId>
+ <version>1.20.1</version>
+</dependency>
+<dependency>
+ <groupId>org.apache.flink</groupId>
+ <artifactId>flink-streaming-java</artifactId>
+ <version>1.20.1</version>
+</dependency>
+<dependency>
+ <groupId>org.apache.flink</groupId>
+ <artifactId>flink-clients</artifactId>
+ <version>1.20.1</version>
+</dependency>
+```
+
+## Binaries
+
+You can find the binaries on the updated [Downloads page]({{< relref "downloads" >}}).
+
+## Docker Images
+
+* [library/flink](https://hub.docker.com/_/flink/tags?page=1&name=1.20.1) (official images)
+* [apache/flink](https://hub.docker.com/r/apache/flink/tags?page=1&name=1.20.1) (ASF repository)
+
+## PyPi
+
+* [apache-flink==1.20.1](https://pypi.org/project/apache-flink/1.20.1/)
+
+# Release Notes
+
+
+
+ Release Notes - Flink - Version 1.20.1
+
+<h2> Bug
+</h2>
+<ul>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-29065'>FLINK-29065</a>] - Flink v1.15.1 contains netty(version:3.10.6). There are many vulnerabilities, like CVE-2021-21409 etc. please confirm these version and fix. thx
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-29797'>FLINK-29797</a>] - can't run a job on yarn, if set fs.default-scheme
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-30899'>FLINK-30899</a>] - FileSystemTableSource with CSV format incorrectly selects fields if filtering for partition
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-33117'>FLINK-33117</a>] - a wrong scala example in udfs page
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-33571'>FLINK-33571</a>] - Bump json-path from 2.7.0 to 2.9.0
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-34194'>FLINK-34194</a>] - Upgrade Flink CI Docker container to Ubuntu 22.04
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-35334'>FLINK-35334</a>] - Code generation: init method exceeds 64 KB when there is a long array field with Table API
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-35721'>FLINK-35721</a>] - I found out that in the Flink SQL documentation it says that Double type cannot be converted to Boolean type, but in reality, it can.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-35764'>FLINK-35764</a>] - TimerGauge is incorrect when update is called during a measurement
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-35766'>FLINK-35766</a>] - When the job contains many YieldingOperatorFactory instances, compiling the JobGraph hangs
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-35833'>FLINK-35833</a>] - ArtifactFetchManager always creates artifact dir
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-35885'>FLINK-35885</a>] - proctime aggregate window triggered by watermark
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-35886'>FLINK-35886</a>] - Incorrect watermark idleness timeout accounting when subtask is backpressured/blocked
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-35887'>FLINK-35887</a>] - Null Pointer Exception in TypeExtractor.isRecord when trying to provide type info for interface
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-35935'>FLINK-35935</a>] - CREATE TABLE AS doesn't work with LIMIT
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-35977'>FLINK-35977</a>] - Missing an import in datastream.md
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36000'>FLINK-36000</a>] - DynamicTableSink#Context's getTargetColumns should not return an array of zero length
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36116'>FLINK-36116</a>] - Javadocs aren't visible anymore for Flink 1.17 and above
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36125'>FLINK-36125</a>] - File not found exception on restoring state handles with file merging
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36173'>FLINK-36173</a>] - Invalid link in checkpoint documentation
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36227'>FLINK-36227</a>] - NullPointerException when starting flink with logback logger
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36260'>FLINK-36260</a>] - numBytesInLocal and numBuffersInLocal being reported as remote
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36287'>FLINK-36287</a>] - Sink with topologies should not participate in UC
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36318'>FLINK-36318</a>] - Fail to restore from 1.18 if LAG function is used
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36368'>FLINK-36368</a>] - Fix subtask management in CommittableCollector
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36379'>FLINK-36379</a>] - Improve (Global)Committer with UC disabled
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36405'>FLINK-36405</a>] - Fix startup issues due to Hive delegation token on kerberos clusters
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36417'>FLINK-36417</a>] - STATE_TTL doesn't work with WatermarkAssigner
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36421'>FLINK-36421</a>] - Missing fsync in FsCheckpointStreamFactory
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36451'>FLINK-36451</a>] - Kubernetes Application JobManager Potential Deadlock and TaskManager Pod Residuals
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36455'>FLINK-36455</a>] - Sink should commit everything on notifyCheckpointCompleted
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36511'>FLINK-36511</a>] - FlinkSecurityManager#checkExit StackOverFlow if haltOnSystemExit is enabled
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36530'>FLINK-36530</a>] - Not able to restore list state from S3
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36533'>FLINK-36533</a>] - Fix detecting bind failure in case of Netty EPOLL transport
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36543'>FLINK-36543</a>] - Table API over windows cannot be string serialized
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36571'>FLINK-36571</a>] - Flink dashboard does not show Busy / Backpressure
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36642'>FLINK-36642</a>] - Table API expressions with several built-in functions are not correctly serialized to SQL
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36644'>FLINK-36644</a>] - TIMESTAMPDIFF can not be string serialized
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36654'>FLINK-36654</a>] - Decimal divide Integer reports Null pointer exception
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36714'>FLINK-36714</a>] - sstmerge/CompactionScheduler termination can be interrupted
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36788'>FLINK-36788</a>] - Add coverage for GlobalCommitter for SinkV2
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36840'>FLINK-36840</a>] - Multiple time-related built-in functions cannot be called
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36856'>FLINK-36856</a>] - CollectSinkOperatorFactory is not respecting batch size and socket timeout configs
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36883'>FLINK-36883</a>] - Views should keep the time attributes of the query
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36941'>FLINK-36941</a>] - Fix Doc for DATE_FORMAT
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37016'>FLINK-37016</a>] - NPE when ClusterEntrypoing is shut down before initialization
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37025'>FLINK-37025</a>] - Periodic SQL watermarks can travel back in time
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37029'>FLINK-37029</a>] - Fix the materialized table docs of full mode cron expression
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37084'>FLINK-37084</a>] - NullPointerException occurs during handling timer of window in PyFlink
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37098'>FLINK-37098</a>] - Can not select time attribute from a view
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37168'>FLINK-37168</a>] - TimerRegistrationAction in unregisteredTimers is not cleaned up properly after the timers are registered
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37183'>FLINK-37183</a>] - Usrlib symlinks are not followed
+</li>
+</ul>
+
+<h2> Improvement
+</h2>
+<ul>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36021'>FLINK-36021</a>] - Delegating the responsibility for compression to every tier
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36127'>FLINK-36127</a>] - Support sorting watermark on flink web
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36593'>FLINK-36593</a>] - Upgrade io.airlift:aircompressor to mitigate CVE
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36643'>FLINK-36643</a>] - Upgrade aws-java-sdk-core to 1.12.779 to fix vulnerability
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36689'>FLINK-36689</a>] - [UI] Upgrade runtime web Angular framework and associated deps to latest version
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36716'>FLINK-36716</a>] - Address vulnerabilities in Flink UI
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37099'>FLINK-37099</a>] - Document possible Netty4 memory related configurations
+</li>
+</ul>
+
+<h2> Technical Debt
+</h2>
+<ul>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36420'>FLINK-36420</a>] - Upgrade org.apache.avro:avro to 1.11.4
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36468'>FLINK-36468</a>] - Use Flink Preconditions util instead of Parquet
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36510'>FLINK-36510</a>] - Upgrade Pekko from 1.0.1 to 1.1.2
+</li>
+</ul>
+
\ No newline at end of file
diff --git a/docs/data/flink.yml b/docs/data/flink.yml
index 66716bd69..bd07bea04 100644
--- a/docs/data/flink.yml
+++ b/docs/data/flink.yml
@@ -25,13 +25,13 @@
source_release_sha512_url: "https://downloads.apache.org/flink/flink-2.0-preview1/flink-2.0-preview1-src.tgz.sha512"
1.20:
- name: "Apache Flink 1.20.0"
- binary_release_url: "https://www.apache.org/dyn/closer.lua/flink/flink-1.20.0/flink-1.20.0-bin-scala_2.12.tgz"
- binary_release_asc_url: "https://downloads.apache.org/flink/flink-1.20.0/flink-1.20.0-bin-scala_2.12.tgz.asc"
- binary_release_sha512_url: "https://downloads.apache.org/flink/flink-1.20.0/flink-1.20.0-bin-scala_2.12.tgz.sha512"
- source_release_url: "https://www.apache.org/dyn/closer.lua/flink/flink-1.20.0/flink-1.20.0-src.tgz"
- source_release_asc_url: "https://downloads.apache.org/flink/flink-1.20.0/flink-1.20.0-src.tgz.asc"
- source_release_sha512_url: "https://downloads.apache.org/flink/flink-1.20.0/flink-1.20.0-src.tgz.sha512"
+ name: "Apache Flink 1.20.1"
+ binary_release_url: "https://www.apache.org/dyn/closer.lua/flink/flink-1.20.1/flink-1.20.1-bin-scala_2.12.tgz"
+ binary_release_asc_url: "https://downloads.apache.org/flink/flink-1.20.1/flink-1.20.1-bin-scala_2.12.tgz.asc"
+ binary_release_sha512_url: "https://downloads.apache.org/flink/flink-1.20.1/flink-1.20.1-bin-scala_2.12.tgz.sha512"
+ source_release_url: "https://www.apache.org/dyn/closer.lua/flink/flink-1.20.1/flink-1.20.1-src.tgz"
+ source_release_asc_url: "https://downloads.apache.org/flink/flink-1.20.1/flink-1.20.1-src.tgz.asc"
+ source_release_sha512_url: "https://downloads.apache.org/flink/flink-1.20.1/flink-1.20.1-src.tgz.sha512"
release_notes_url: "https://nightlies.apache.org/flink/flink-docs-release-1.20/release-notes/flink-1.20"
1.19:
diff --git a/docs/data/release_archive.yml b/docs/data/release_archive.yml
index 6a486e9c3..cebf49265 100644
--- a/docs/data/release_archive.yml
+++ b/docs/data/release_archive.yml
@@ -4,6 +4,10 @@ release_archive:
version_short: "2.0"
version_long: 2.0-preview1
release_date: 2024-10-23
+ -
+ version_short: "1.20"
+ version_long: 1.20.1
+ release_date: 2025-02-12
-
version_short: "1.20"
version_long: 1.20.0