blob: ca7650c29743afaf95891b985164e23716f73a99 [file] [log] [blame]
<!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/2017/02/06/announcing-apache-flink-1.2.0/">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Apache Flink community is pleased to announce the 1.2.0 release. Over the past months, the Flink community has been working hard to resolve 650 issues. See the complete changelog for more detail.
This is the third major release in the 1.x.y series. It is API compatible with the other 1.x.y releases for APIs annotated with the @Public annotation.
We encourage everyone to download the release and check out the documentation.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Announcing Apache Flink 1.2.0" />
<meta property="og:description" content="The Apache Flink community is pleased to announce the 1.2.0 release. Over the past months, the Flink community has been working hard to resolve 650 issues. See the complete changelog for more detail.
This is the third major release in the 1.x.y series. It is API compatible with the other 1.x.y releases for APIs annotated with the @Public annotation.
We encourage everyone to download the release and check out the documentation." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://flink.apache.org/2017/02/06/announcing-apache-flink-1.2.0/" /><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2017-02-06T12:00:00+00:00" />
<meta property="article:modified_time" content="2017-02-06T12:00:00+00:00" />
<title>Announcing Apache Flink 1.2.0 | Apache Flink</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
<script defer src="/en.search.min.2698f0d1b683dae4d6cb071668b310a55ebcf1c48d11410a015a51d90105b53e.js" integrity="sha256-Jpjw0baD2uTWywcWaLMQpV688cSNEUEKAVpR2QEFtT4="></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.19 (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-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.8 (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.0 (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="/2017/02/06/announcing-apache-flink-1.2.0/">Announcing Apache Flink 1.2.0</a>
</h1>
February 6, 2017 -
<p><p>The Apache Flink community is pleased to announce the 1.2.0 release. Over the past months, the Flink community has been working hard to resolve 650 issues. See the <a href="http://flink.apache.org/blog/release_1.2.0-changelog.html">complete changelog</a> for more detail.</p>
<p>This is the third major release in the 1.x.y series. It is API compatible with the other 1.x.y releases for APIs annotated with the @Public annotation.</p>
<p>We encourage everyone to download the release and check out the <a href="//nightlies.apache.org/flink/flink-docs-release-1.2/">documentation</a>. Feedback through the <a href="http://flink.apache.org/community.html#mailing-lists">Flink mailing lists</a> is, as always, gladly encouraged!</p>
<p>You can find the binaries on the updated <a href="http://flink.apache.org/downloads.html">Downloads page</a>. Some highlights of the release are listed below.</p>
<h2 id="dynamic-scaling--key-groups">
Dynamic Scaling / Key Groups
<a class="anchor" href="#dynamic-scaling--key-groups">#</a>
</h2>
<p>Flink now supports changing the parallelism of a streaming job by restoring it from a savepoint with a different parallelism. Both changing the entire job’s parallelism and operator parallelism is supported.
In the <code>StreamExecutionEnvironment</code>, users can set a new per-job configuration parameter called “max parallelism”. It determines the upper limit for the parallelism.</p>
<p>By default, the value is set to:</p>
<ul>
<li><code>128</code> : for all parallelism &lt;= 128</li>
<li><code>MIN(nextPowerOfTwo(parallelism + (parallelism / 2)), 2^15)</code>: for all parallelism &gt; 128</li>
</ul>
<p>The following built-in functions and operators support rescaling:</p>
<ul>
<li>Window operator</li>
<li>Rolling/Bucketing sink</li>
<li>Kafka consumers</li>
<li>Continuous File Processing source</li>
</ul>
<p>The write-ahead log Cassandra sink and the CEP operator are currently not rescalable. Users using the keyed state interfaces can use the dynamic scaling without changing their code.</p>
<h2 id="rescalable-non-partitioned-state">
Rescalable Non-Partitioned State
<a class="anchor" href="#rescalable-non-partitioned-state">#</a>
</h2>
<p>As part of the dynamic scaling effort, the community has also added rescalable non-partitioned state for operators like the Kafka consumer that don’t use keyed state but instead use operator state.</p>
<p>In case of rescaling, the operator state needs to be redistributed among the parallel consumer instances. In case of the Kafka consumer, the assigned partitions and their offsets are redistributed.</p>
<h2 id="processfunction">
ProcessFunction
<a class="anchor" href="#processfunction">#</a>
</h2>
<p>The <code>ProcessFunction</code> is a low-level stream processing operation giving access to the basic building blocks of all (acyclic) streaming applications:</p>
<ul>
<li>Events (stream elements)</li>
<li>State (fault tolerant, consistent)</li>
<li>Timers (event time and processing time)</li>
</ul>
<p>The ProcessFunction can be thought of as a FlatMapFunction with access to keyed state and timers.</p>
<p><a href="//nightlies.apache.org/flink/flink-docs-release-1.2/dev/stream/process_function.html">ProcessFunction documentation</a></p>
<h2 id="async-io">
Async I/O
<a class="anchor" href="#async-io">#</a>
</h2>
<p>Flink now has a dedicated Async I/O operator for making blocking calls asynchronously and in a checkpointed fashion. For example, there are many Flink applications that need to query external datastores for each element in a stream. To avoid slowing down the stream to the speed of the external system, the async I/O operator allows requests to overlap.</p>
<p><a href="//nightlies.apache.org/flink/flink-docs-release-1.2/dev/stream/asyncio.html">Async I/O documentation</a></p>
<h2 id="run-flink-with-apache-mesos">
Run Flink with Apache Mesos
<a class="anchor" href="#run-flink-with-apache-mesos">#</a>
</h2>
<p>The latest release further extends Flink’s deployment flexibility by adding support for Apache Mesos and DC/OS. In combination with Marathon, it is now possible to run an highly available Flink cluster on Mesos.</p>
<p><a href="//nightlies.apache.org/flink/flink-docs-release-1.2/setup/mesos.html">Mesos documentation</a></p>
<h2 id="secure-data-access">
Secure Data Access
<a class="anchor" href="#secure-data-access">#</a>
</h2>
<p>Flink is now able to authenticate against external services such as Zookeeper, Kafka, HDFS and YARN using Kerberos.
Also, experimental support for encryption over the wire has been added.</p>
<p><a href="//nightlies.apache.org/flink/flink-docs-release-1.2/ops/security-kerberos.html">Kerberos documentation</a> and <a href="//nightlies.apache.org/flink/flink-docs-release-1.2/setup/security-ssl.html">SSL setup documentation</a>.</p>
<h2 id="queryable-state">
Queryable State
<a class="anchor" href="#queryable-state">#</a>
</h2>
<p>This experimental feature allows users to query the current state of an operator.
If you have, for example, a flatMap() operator that keeps a running aggregate per key, queryable state allows you to retrieve the current aggregate value at any time by directly connecting to the TaskManager and retrieving that value.</p>
<p><a href="//nightlies.apache.org/flink/flink-docs-release-1.2/dev/stream/queryable_state.html">Queryable State documentation</a></p>
<h2 id="backwards-compatible-savepoints">
Backwards compatible savepoints
<a class="anchor" href="#backwards-compatible-savepoints">#</a>
</h2>
<p>Flink 1.2.0 allows users to restart a job from an 1.1.4 savepoint. This makes major Flink version upgrades possible without losing application state. The following built-in operators are backwards compatible:</p>
<ul>
<li>Window operator</li>
<li>Rolling/Bucketing sink</li>
<li>Kafka consumers</li>
<li>Continuous File Processing source</li>
</ul>
<p><a href="//nightlies.apache.org/flink/flink-docs-release-1.2/ops/upgrading.html">Upgrading Flink applications documentation</a></p>
<h2 id="table-api--sql">
Table API &amp; SQL
<a class="anchor" href="#table-api--sql">#</a>
</h2>
<p>This release significantly expanded the performance, stability, and coverage of Flink’s Table API and SQL support for batch and streaming tables.</p>
<p>The community added tumbling, sliding, and session group-window aggregations over streaming tables
e.g. <code>table.window(Session withGap 10.minutes on 'rowtime as 'w)</code></p>
<p>SQL supports more built-in functions and operations
e.g. <code>EXISTS</code>, <code>VALUES</code>, <code>LIMIT</code>, <code>CURRENT_DATE</code>, <code>INITCAP</code>, <code>NULLIF</code></p>
<p>Both APIs support more data types and are better integrated
e.g. access a POJO field <code>myPojo.get('field')</code>, <code>myPojo.flatten()</code></p>
<p>Users can now define their own scalar and table functions
e.g. <code>table.select('uid, parse('field) as 'parsed).join(split('parsed) as 'atom)</code></p>
<p><a href="//nightlies.apache.org/flink/flink-docs-release-1.2/dev/table_api.html">Flink Table API &amp; SQL documentation</a></p>
<h2 id="miscellaneous-improvements">
Miscellaneous improvements
<a class="anchor" href="#miscellaneous-improvements">#</a>
</h2>
<ul>
<li>
<p>Metrics in Flink web interface: A metrics system was added in Flink 1.1, and with this release, Flink provides a new tab in the web frontend to see some of the metrics in the web UI.</p>
</li>
<li>
<p>Kafka 0.10 support: Flink 1.2 now provides a connector for Apache Kafka 0.10.0.x, including support for consuming and producing messages with a timestamp using Flink’s internal event time (<a href="//nightlies.apache.org/flink/flink-docs-release-1.2/dev/connectors/kafka.html">Kafka Connector Documentation</a>)</p>
</li>
<li>
<p>Evictor Semantics: Flink 1.2 ships with more expressive evictor semantics that allow the programmer to evict elements form a window both before and after the application of the window function, and to remove elements arbitrarily (<a href="//nightlies.apache.org/flink/flink-docs-release-1.2/dev/windows.html#evictors">Evictor Semantics Documentation</a>)</p>
</li>
</ul>
<h2 id="list-of-contributors">
List of Contributors
<a class="anchor" href="#list-of-contributors">#</a>
</h2>
<p>According to git shortlog, the following 122 people contributed to the 1.2.0 release. Thank you to all contributors!</p>
<ul>
<li>Abhishek R. Singh</li>
<li>Ahmad Ragab</li>
<li>Aleksandr Chermenin</li>
<li>Alexander Pivovarov</li>
<li>Alexander Shoshin</li>
<li>Alexey Diomin</li>
<li>Aljoscha Krettek</li>
<li>Andrey Melentyev</li>
<li>Anton Mushin</li>
<li>Bob Thorman</li>
<li>Boris Osipov</li>
<li>Bram Vogelaar</li>
<li>Bruno Aranda</li>
<li>David Anderson</li>
<li>Dominik</li>
<li>Evgeny_Kincharov</li>
<li>Fabian Hueske</li>
<li>Fokko Driesprong</li>
<li>Gabor Gevay</li>
<li>George</li>
<li>Gordon Tai</li>
<li>Greg Hogan</li>
<li>Gyula Fora</li>
<li>Haohui Mai</li>
<li>Holger Frydrych</li>
<li>HungUnicorn</li>
<li>Ismaël Mejía</li>
<li>Ivan Mushketyk</li>
<li>Jakub Havlik</li>
<li>Jark Wu</li>
<li>Jendrik Poloczek</li>
<li>Jincheng Sun</li>
<li>Josh</li>
<li>Joshi</li>
<li>Keiji Yoshida</li>
<li>Kirill Morozov</li>
<li>Kurt Young</li>
<li>Liwei Lin</li>
<li>Lorenz Buehmann</li>
<li>Maciek Próchniak</li>
<li>Makman2</li>
<li>Markus Müller</li>
<li>Martin Junghanns</li>
<li>Márton Balassi</li>
<li>Max Kuklinski</li>
<li>Maximilian Michels</li>
<li>Milosz Tanski</li>
<li>Nagarjun</li>
<li>Neelesh Srinivas Salian</li>
<li>Neil Derraugh</li>
<li>Nick Chadwick</li>
<li>Nico Kruber</li>
<li>Niels Basjes</li>
<li>Pattarawat Chormai</li>
<li>Piotr Godek</li>
<li>Raghav</li>
<li>Ramkrishna</li>
<li>Robert Metzger</li>
<li>Rohit Agarwal</li>
<li>Roman Maier</li>
<li>Sachin</li>
<li>Sachin Goel</li>
<li>Scott Kidder</li>
<li>Shannon Carey</li>
<li>Stefan Richter</li>
<li>Steffen Hausmann</li>
<li>Stephan Epping</li>
<li>Stephan Ewen</li>
<li>Sunny T</li>
<li>Suri</li>
<li>Theodore Vasiloudis</li>
<li>Till Rohrmann</li>
<li>Tony Wei</li>
<li>Tzu-Li (Gordon) Tai</li>
<li>Ufuk Celebi</li>
<li>Vijay Srinivasaraghavan</li>
<li>Vishnu Viswanath</li>
<li>WangTaoTheTonic</li>
<li>William-Sang</li>
<li>Yassine Marzougui</li>
<li>anton solovev</li>
<li>beyond1920</li>
<li>biao.liub</li>
<li>chobeat</li>
<li>danielblazevski</li>
<li>f7753</li>
<li>fengyelei</li>
<li>fengyelei 00406569</li>
<li>gallenvara</li>
<li>gaolun.gl</li>
<li>godfreyhe</li>
<li>heytitle</li>
<li>hzyuemeng1</li>
<li>iteblog</li>
<li>kl0u</li>
<li>larsbachmann</li>
<li>lincoln-lil</li>
<li>manuzhang</li>
<li>medale</li>
<li>miaoever</li>
<li>mtunique</li>
<li>radekg</li>
<li>renkai</li>
<li>sergey_sokur</li>
<li>shijinkui</li>
<li>shuai.xus</li>
<li>smarthi</li>
<li>swapnil-chougule</li>
<li>tedyu</li>
<li>tibor.moger</li>
<li>tonycox</li>
<li>twalthr</li>
<li>vasia</li>
<li>wenlong.lwl</li>
<li>wrighe3</li>
<li>xiaogang.sxg</li>
<li>yushi.wxg</li>
<li>yuzhongliu</li>
<li>zentol</li>
<li>zhuhaifengleon</li>
<li>淘江</li>
<li>魏偉哲</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/2017-02-06-release-1.2.0.md">
Edit This Page<i class="fa fa-edit fa-fw"></i>
</a>
</p>
</div>
</section>
<aside class="book-toc">
<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
<ul>
<li>
<ul>
<li><a href="#dynamic-scaling--key-groups">Dynamic Scaling / Key Groups</a></li>
<li><a href="#rescalable-non-partitioned-state">Rescalable Non-Partitioned State</a></li>
<li><a href="#processfunction">ProcessFunction</a></li>
<li><a href="#async-io">Async I/O</a></li>
<li><a href="#run-flink-with-apache-mesos">Run Flink with Apache Mesos</a></li>
<li><a href="#secure-data-access">Secure Data Access</a></li>
<li><a href="#queryable-state">Queryable State</a></li>
<li><a href="#backwards-compatible-savepoints">Backwards compatible savepoints</a></li>
<li><a href="#table-api--sql">Table API &amp; SQL</a></li>
<li><a href="#miscellaneous-improvements">Miscellaneous improvements</a></li>
<li><a href="#list-of-contributors">List of 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>&nbsp;中文版
</a>
</li>
</ul>
</div>
<div class="panel">
<ul>
<li>
<a href="/what-is-flink/security">Security</a-->
</li>
<li>
<a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
</li>
<li>
<a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
</ul>
</div>
<div class="panel icons">
<div>
<a href="/posts">
<div class="icon flink-blog-icon"></div>
<span>Flink blog</span>
</a>
</div>
<div>
<a href="https://github.com/apache/flink">
<div class="icon flink-github-icon"></div>
<span>Github</span>
</a>
</div>
<div>
<a href="https://twitter.com/apacheflink">
<div class="icon flink-twitter-icon"></div>
<span>Twitter</span>
</a>
</div>
</div>
</div>
</div>
<hr/>
<div class="container disclaimer">
<p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
</div>
</footer>
</body>
</html>