blob: e574b15e914e625fcd42eaceddf2d19ffe6304f5 [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/what-is-flink/use-cases/">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Use Cases # Apache Flink is an excellent choice to develop and run many different types of applications due to its extensive feature set. Flink&rsquo;s features include support for stream and batch processing, sophisticated state management, event-time processing semantics, and exactly-once consistency guarantees for state. Moreover, Flink can be deployed on various resource providers such as YARN and Kubernetes, but also as a stand-alone cluster on bare-metal hardware. Configured for high availability, Flink does not have a single point of failure.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Use Cases" />
<meta property="og:description" content="Use Cases # Apache Flink is an excellent choice to develop and run many different types of applications due to its extensive feature set. Flink&rsquo;s features include support for stream and batch processing, sophisticated state management, event-time processing semantics, and exactly-once consistency guarantees for state. Moreover, Flink can be deployed on various resource providers such as YARN and Kubernetes, but also as a stand-alone cluster on bare-metal hardware. Configured for high availability, Flink does not have a single point of failure." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://flink.apache.org/what-is-flink/use-cases/" /><meta property="article:section" content="what-is-flink" />
<title>Use Cases | Apache Flink</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/what-is-flink/use-cases/" title="应用场景">
<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"><!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<h1 id="use-cases">
Use Cases
<a class="anchor" href="#use-cases">#</a>
</h1>
<p>Apache Flink is an excellent choice to develop and run many different types of applications due to its extensive feature set. Flink&rsquo;s features include support for stream and batch processing, sophisticated state management, event-time processing semantics, and exactly-once consistency guarantees for state. Moreover, Flink can be deployed on various resource providers such as YARN and Kubernetes, but also as a stand-alone cluster on bare-metal hardware. Configured for high availability, Flink does not have a single point of failure. Flink has been proven to scale to thousands of cores and terabytes of application state, delivers high throughput and low latency, and powers some of the world&rsquo;s most demanding stream processing applications.</p>
<p>Below, we explore the most common types of applications that are powered by Flink and give pointers to real-world examples.</p>
<ul>
<li><a href="#event-driven-applications-a-nameeventdrivenappsa">Event-driven Applications</a></li>
<li><a href="#data-analytics-applicationsa-nameanalyticsa">Data Analytics Applications</a></li>
<li><a href="#data-pipeline-applications-a-namepipelinesa">Data Pipeline Applications</a></li>
</ul>
<h2 id="event-driven-applications-a-nameeventdrivenappsa">
Event-driven Applications <a name="eventDrivenApps"></a>
<a class="anchor" href="#event-driven-applications-a-nameeventdrivenappsa">#</a>
</h2>
<h3 id="what-are-event-driven-applications">
What are event-driven applications?
<a class="anchor" href="#what-are-event-driven-applications">#</a>
</h3>
<p>An event-driven application is a stateful application that ingest events from one or more event streams and reacts to incoming events by triggering computations, state updates, or external actions.</p>
<p>Event-driven applications are an evolution of the traditional application design with separated compute and data storage tiers. In this architecture, applications read data from and persist data to a remote transactional database.</p>
<p>In contrast, event-driven applications are based on stateful stream processing applications. In this design, data and computation are co-located, which yields local (in-memory or disk) data access. Fault-tolerance is achieved by periodically writing checkpoints to a remote persistent storage. The figure below depicts the difference between the traditional application architecture and event-driven applications.</p>
<br>
<div>
<img
src="https://flink.apache.org//img/usecases-eventdrivenapps.png"
alt=""
width="700px"
style="display:block;margin-left:auto;margin-right:auto"
>
</div>
<h3 id="what-are-the-advantages-of-event-driven-applications">
What are the advantages of event-driven applications?
<a class="anchor" href="#what-are-the-advantages-of-event-driven-applications">#</a>
</h3>
<p>Instead of querying a remote database, event-driven applications access their data locally which yields better performance, both in terms of throughput and latency. The periodic checkpoints to a remote persistent storage can be asynchronous and incremental. Hence, the impact of checkpointing on the regular event processing is very small. However, the event-driven application design provides more benefits than just local data access. In the tiered architecture, it is common that multiple applications share the same database. Hence, any change of the database, such as changing the data layout due to an application update or scaling the service, needs to be coordinated. Since each event-driven application is responsible for its own data, changes to the data representation or scaling the application requires less coordination.</p>
<h3 id="how-does-flink-support-event-driven-applications">
How does Flink support event-driven applications?
<a class="anchor" href="#how-does-flink-support-event-driven-applications">#</a>
</h3>
<p>The limits of event-driven applications are defined by how well a stream processor can handle time and state. Many of Flink&rsquo;s outstanding features are centered around these concepts. Flink provides a rich set of state primitives that can manage very large data volumes (up to several terabytes) with exactly-once consistency guarantees. Moreover, Flink&rsquo;s support for event-time, highly customizable window logic, and fine-grained control of time as provided by the <code>ProcessFunction</code> enable the implementation of advanced business logic. Moreover, Flink features a library for Complex Event Processing (CEP) to detect patterns in data streams.</p>
<p>However, Flink&rsquo;s outstanding feature for event-driven applications is its support for savepoints. A savepoint is a consistent state image that can be used as a starting point for compatible applications. Given a savepoint, an application can be updated or adapt its scale, or multiple versions of an application can be started for A/B testing.</p>
<h3 id="what-are-typical-event-driven-applications">
What are typical event-driven applications?
<a class="anchor" href="#what-are-typical-event-driven-applications">#</a>
</h3>
<ul>
<li><a href="https://www.youtube.com/watch?v=Do7C4UJyWCM/">Fraud detection</a></li>
<li><a href="https://www.youtube.com/watch?v=rJNH5WhWAj4/">Anomaly detection</a></li>
<li><a href="https://www.youtube.com/watch?v=_yHds9SvMfE/">Rule-based alerting</a></li>
<li><a href="https://jobs.zalando.com/tech/blog/complex-event-generation-for-business-process-monitoring-using-apache-flink/">Business process monitoring</a></li>
<li><a href="https://www.youtube.com/watch?v=0cJ565r2FVI/">Web application (social network)</a></li>
</ul>
<h2 id="data-analytics-applicationsa-nameanalyticsa">
Data Analytics Applications<a name="analytics"></a>
<a class="anchor" href="#data-analytics-applicationsa-nameanalyticsa">#</a>
</h2>
<h3 id="what-are-data-analytics-applications">
What are data analytics applications?
<a class="anchor" href="#what-are-data-analytics-applications">#</a>
</h3>
<p>Analytical jobs extract information and insight from raw data. Traditionally, analytics are performed as batch queries or applications on bounded data sets of recorded events. In order to incorporate the latest data into the result of the analysis, it has to be added to the analyzed data set and the query or application is rerun. The results are written to a storage system or emitted as reports.</p>
<p>With a sophisticated stream processing engine, analytics can also be performed in a real-time fashion. Instead of reading finite data sets, streaming queries or applications ingest real-time event streams and continuously produce and update results as events are consumed. The results are either written to an external database or maintained as internal state. A dashboard application can read the latest results from the external database or directly query the internal state of the application.</p>
<p>Apache Flink supports streaming as well as batch analytical applications as shown in the figure below.</p>
<div>
<img
src="https://flink.apache.org//img/usecases-analytics.png"
alt=""
width="700px"
style="display:block;margin-left:auto;margin-right:auto"
>
</div>
<h3 id="what-are-the-advantages-of-streaming-analytics-applications">
What are the advantages of streaming analytics applications?
<a class="anchor" href="#what-are-the-advantages-of-streaming-analytics-applications">#</a>
</h3>
<p>The advantages of continuous streaming analytics compared to batch analytics are not limited to a much lower latency from events to insight due to elimination of periodic import and query execution. In contrast to batch queries, streaming queries do not have to deal with artificial boundaries in the input data which are caused by periodic imports and the bounded nature of the input.</p>
<p>Another aspect is a simpler application architecture. A batch analytics pipeline consists of several independent components to periodically schedule data ingestion and query execution. Reliably operating such a pipeline is non-trivial because failures of one component affect the following steps of the pipeline. In contrast, a streaming analytics application which runs on a sophisticated stream processor like Flink incorporates all steps from data ingestions to continuous result computation. Therefore, it can rely on the engine&rsquo;s failure recovery mechanism.</p>
<h3 id="how-does-flink-support-data-analytics-applications">
How does Flink support data analytics applications?
<a class="anchor" href="#how-does-flink-support-data-analytics-applications">#</a>
</h3>
<p>Flink provides very good support for continuous streaming as well as batch analytics. Specifically, it features an ANSI-compliant SQL interface with unified semantics for batch and streaming queries. SQL queries compute the same result regardless whether they are run on a static data set of recorded events or on a real-time event stream. Rich support for user-defined functions ensures that custom code can be executed in SQL queries. If even more custom logic is required, Flink&rsquo;s DataStream API or DataSet API provide more low-level control.</p>
<h3 id="what-are-typical-data-analytics-applications">
What are typical data analytics applications?
<a class="anchor" href="#what-are-typical-data-analytics-applications">#</a>
</h3>
<ul>
<li><a href="https://www.youtube.com/watch?v=izYsMQWeUbE/">Quality monitoring of Telco networks</a></li>
<li><a href="https://www.youtube.com/watch?v=17tUR4TsvpM/">Analysis of product updates &amp; experiment evaluation</a> in mobile applications</li>
<li><a href="https://eng.uber.com/athenax/">Ad-hoc analysis of live data</a> in consumer technology</li>
<li>Large-scale graph analysis</li>
</ul>
<h2 id="data-pipeline-applications-a-namepipelinesa">
Data Pipeline Applications <a name="pipelines"></a>
<a class="anchor" href="#data-pipeline-applications-a-namepipelinesa">#</a>
</h2>
<h3 id="what-are-data-pipelines">
What are data pipelines?
<a class="anchor" href="#what-are-data-pipelines">#</a>
</h3>
<p>Extract-transform-load (ETL) is a common approach to convert and move data between storage systems. Often ETL jobs are periodically triggered to copy data from transactional database systems to an analytical database or a data warehouse.</p>
<p>Data pipelines serve a similar purpose as ETL jobs. They transform and enrich data and can move it from one storage system to another. However, they operate in a continuous streaming mode instead of being periodically triggered. Hence, they are able to read records from sources that continuously produce data and move it with low latency to their destination. For example a data pipeline might monitor a file system directory for new files and write their data into an event log. Another application might materialize an event stream to a database or incrementally build and refine a search index.</p>
<p>The figure below depicts the difference between periodic ETL jobs and continuous data pipelines.</p>
<div>
<img
src="https://flink.apache.org//img/usecases-datapipelines.png"
alt=""
width="700px"
style="display:block;margin-left:auto;margin-right:auto"
>
</div>
<h3 id="what-are-the-advantages-of-data-pipelines">
What are the advantages of data pipelines?
<a class="anchor" href="#what-are-the-advantages-of-data-pipelines">#</a>
</h3>
<p>The obvious advantage of continuous data pipelines over periodic ETL jobs is the reduced latency of moving data to its destination. Moreover, data pipelines are more versatile and can be employed for more use cases because they are able to continuously consume and emit data.</p>
<h3 id="how-does-flink-support-data-pipelines">
How does Flink support data pipelines?
<a class="anchor" href="#how-does-flink-support-data-pipelines">#</a>
</h3>
<p>Many common data transformation or enrichment tasks can be addressed by Flink&rsquo;s SQL interface (or Table API) and its support for user-defined functions. Data pipelines with more advanced requirements can be realized by using the DataStream API which is more generic. Flink provides a rich set of connectors to various storage systems such as Kafka, Kinesis, Elasticsearch, and JDBC database systems. It also features continuous sources for file systems that monitor directories and sinks that write files in a time-bucketed fashion.</p>
<h3 id="what-are-typical-data-pipeline-applications">
What are typical data pipeline applications?
<a class="anchor" href="#what-are-typical-data-pipeline-applications">#</a>
</h3>
<ul>
<li><a href="https://ververica.com/blog/blink-flink-alibaba-search">Real-time search index building</a> in e-commerce</li>
<li><a href="https://engineering.zalando.com/posts/2016/03/apache-showdown-flink-vs.-spark.html">Continuous ETL</a> in e-commerce</li>
</ul>
</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/what-is-flink/use-cases.md">
Edit This Page<i class="fa fa-edit fa-fw"></i>
</a>
</p>
</div>
</section>
<aside class="book-toc">
<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
<ul>
<li><a href="#use-cases">Use Cases</a>
<ul>
<li><a href="#event-driven-applications-a-nameeventdrivenappsa">Event-driven Applications <a name="eventDrivenApps"></a></a>
<ul>
<li><a href="#what-are-event-driven-applications">What are event-driven applications?</a></li>
<li><a href="#what-are-the-advantages-of-event-driven-applications">What are the advantages of event-driven applications?</a></li>
<li><a href="#how-does-flink-support-event-driven-applications">How does Flink support event-driven applications?</a></li>
<li><a href="#what-are-typical-event-driven-applications">What are typical event-driven applications?</a></li>
</ul>
</li>
<li><a href="#data-analytics-applicationsa-nameanalyticsa">Data Analytics Applications<a name="analytics"></a></a>
<ul>
<li><a href="#what-are-data-analytics-applications">What are data analytics applications?</a></li>
<li><a href="#what-are-the-advantages-of-streaming-analytics-applications">What are the advantages of streaming analytics applications?</a></li>
<li><a href="#how-does-flink-support-data-analytics-applications">How does Flink support data analytics applications?</a></li>
<li><a href="#what-are-typical-data-analytics-applications">What are typical data analytics applications?</a></li>
</ul>
</li>
<li><a href="#data-pipeline-applications-a-namepipelinesa">Data Pipeline Applications <a name="pipelines"></a></a>
<ul>
<li><a href="#what-are-data-pipelines">What are data pipelines?</a></li>
<li><a href="#what-are-the-advantages-of-data-pipelines">What are the advantages of data pipelines?</a></li>
<li><a href="#how-does-flink-support-data-pipelines">How does Flink support data pipelines?</a></li>
<li><a href="#what-are-typical-data-pipeline-applications">What are typical data pipeline applications?</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/what-is-flink/use-cases/">
<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>