This is an automated email from the ASF dual-hosted git repository. github-bot pushed a commit to branch gh-pages in repository https://gitbox.apache.org/repos/asf/airflow-site.git
commit 0442e88ff7396de0d73c0970c03777b0cab123f5 Author: potiuk <[email protected]> AuthorDate: Sun May 1 00:26:16 2022 +0000 Deploying to gh-pages from @ f029737a693f8d62f7ed7a2e246a5b3be73e66ed 🚀 --- _gen/indexes/en/blog-posts.json | 2 +- blog/airflow-1.10.10/index.html | 4 +- blog/airflow-1.10.12/index.html | 4 +- blog/airflow-1.10.8-1.10.9/index.html | 4 +- blog/airflow-2.2.0/index.html | 43 ++++- blog/airflow-2.3.0/grid-view.png | Bin 0 -> 1136078 bytes blog/{airflow-2.2.0 => airflow-2.3.0}/index.html | 212 +++++++++++++++------ blog/airflow-survey-2020/index.html | 4 +- blog/airflow-survey/index.html | 4 +- blog/airflow-two-point-oh-is-here/index.html | 39 +++- blog/airflow_summit_2021/index.html | 4 +- blog/announcing-new-website/index.html | 4 +- blog/apache-airflow-for-newcomers/index.html | 4 +- .../index.html | 4 +- .../index.html | 4 +- .../index.html | 4 +- .../index.html | 4 +- .../index.html | 39 +++- blog/index.html | 35 ++++ blog/index.xml | 150 +++++++++++++++ .../index.html | 4 +- blog/tags/release/index.html | 37 +++- blog/tags/release/index.xml | 152 ++++++++++++++- docs/docker-stack/build-arg-ref.html | 4 +- docs/docker-stack/index.html | 6 +- docs/docker-stack/searchindex.js | 2 +- index.html | 32 ++-- index.xml | 150 +++++++++++++++ search/index.html | 4 +- sitemap.xml | 97 +++++----- tags/index.html | 2 +- tags/index.xml | 2 +- use-cases/adobe/index.html | 4 +- use-cases/adyen/index.html | 4 +- use-cases/big-fish-games/index.html | 4 +- use-cases/dish/index.html | 4 +- use-cases/experity/index.html | 4 +- use-cases/onefootball/index.html | 4 +- use-cases/plarium-krasnodar/index.html | 4 +- use-cases/seniorlink/index.html | 4 +- use-cases/sift/index.html | 4 +- 41 files changed, 911 insertions(+), 185 deletions(-) diff --git a/_gen/indexes/en/blog-posts.json b/_gen/indexes/en/blog-posts.json index e3ab2f9af..a0eee9788 100644 --- a/_gen/indexes/en/blog-posts.json +++ b/_gen/indexes/en/blog-posts.json @@ -1 +1 @@ -[{"content":"## The story behind the Airflow Breeze tool\nInitially, we started contributing to this fantastic open-source project [Apache Airflow] with a team of three which then grew to five. When we kicked it off a year ago, I realized pretty soon where the biggest bottlenecks and areas for improvement in terms of productivity were. Even with the help of our client, who provided us with a “homegrown” development environment it took us literally days to set it up and learn some basics. [...] \ No newline at end of file +[{"content":"## The story behind the Airflow Breeze tool\nInitially, we started contributing to this fantastic open-source project [Apache Airflow] with a team of three which then grew to five. When we kicked it off a year ago, I realized pretty soon where the biggest bottlenecks and areas for improvement in terms of productivity were. Even with the help of our client, who provided us with a “homegrown” development environment it took us literally days to set it up and learn some basics. [...] \ No newline at end of file diff --git a/blog/airflow-1.10.10/index.html b/blog/airflow-1.10.10/index.html index 16c0d5595..6934463a6 100644 --- a/blog/airflow-1.10.10/index.html +++ b/blog/airflow-1.10.10/index.html @@ -36,13 +36,13 @@ <meta property="og:image" content="/images/feature-image.png" /> <meta property="article:published_time" content="2020-04-09T00:00:00+00:00" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Apache Airflow 1.10.10"> <meta itemprop="description" content="We are happy to present Apache Airflow 1.10.10"> <meta itemprop="datePublished" content="2020-04-09T00:00:00+00:00" /> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="1143"> diff --git a/blog/airflow-1.10.12/index.html b/blog/airflow-1.10.12/index.html index 461785fb9..38757cc7e 100644 --- a/blog/airflow-1.10.12/index.html +++ b/blog/airflow-1.10.12/index.html @@ -36,13 +36,13 @@ <meta property="og:image" content="/images/feature-image.png" /> <meta property="article:published_time" content="2020-08-25T00:00:00+00:00" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Apache Airflow 1.10.12"> <meta itemprop="description" content="We are happy to present Apache Airflow 1.10.12"> <meta itemprop="datePublished" content="2020-08-25T00:00:00+00:00" /> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="911"> diff --git a/blog/airflow-1.10.8-1.10.9/index.html b/blog/airflow-1.10.8-1.10.9/index.html index 7b86b124e..aecf6759d 100644 --- a/blog/airflow-1.10.8-1.10.9/index.html +++ b/blog/airflow-1.10.8-1.10.9/index.html @@ -36,13 +36,13 @@ <meta property="og:image" content="/images/feature-image.png" /> <meta property="article:published_time" content="2020-02-23T00:00:00+00:00" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Apache Airflow 1.10.8 & 1.10.9"> <meta itemprop="description" content="We are happy to present the new 1.10.8 and 1.10.9 releases of Apache Airflow."> <meta itemprop="datePublished" content="2020-02-23T00:00:00+00:00" /> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="437"> diff --git a/blog/airflow-2.2.0/index.html b/blog/airflow-2.2.0/index.html index 9034aa5ab..58d6a6ea6 100644 --- a/blog/airflow-2.2.0/index.html +++ b/blog/airflow-2.2.0/index.html @@ -36,13 +36,13 @@ <meta property="og:image" content="/images/feature-image.png" /> <meta property="article:published_time" content="2021-10-11T00:00:00+00:00" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="What's new in Apache Airflow 2.2.0"> <meta itemprop="description" content="We're proud to announce that Apache Airflow 2.2.0 has been released."> <meta itemprop="datePublished" content="2021-10-11T00:00:00+00:00" /> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="658"> @@ -619,10 +619,10 @@ <button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Previous</button> </a> - <a > + <a href="/blog/airflow-2.3.0/"> -<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" disabled>Next</button> +<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Next</button> </a> </div> @@ -643,6 +643,41 @@ <div class="list-item list-item--wide"> +<div class="card"> + <div class="box-event__blogpost"> + <div class="box-event__blogpost--metadata"> + <div class="tags-container"> + + + <a class="tag" href="/blog/tags/release/">Release</a> + + + </div> + <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Sat, Apr 30, 2022</span> + </div> + <p class="box-event__blogpost--header"> + <a href="/blog/airflow-2.3.0/"> + Apache Airflow 2.3.0 is here + </a> + </p> + <p class="box-event__blogpost--author">Ephraim Anierobi</p> + <p class="box-event__blogpost--description">We're proud to announce that Apache Airflow 2.3.0 has been released.</p> + <div class="mt-auto"> + <a href="/blog/airflow-2.3.0/"> + + +<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Read more</button> + + </a> + </div> + </div> +</div> + + </div> + + <div class="list-item list-item--wide"> + + <div class="card"> <div class="box-event__blogpost"> <div class="box-event__blogpost--metadata"> diff --git a/blog/airflow-2.3.0/grid-view.png b/blog/airflow-2.3.0/grid-view.png new file mode 100644 index 000000000..59a0cfa4d Binary files /dev/null and b/blog/airflow-2.3.0/grid-view.png differ diff --git a/blog/airflow-2.2.0/index.html b/blog/airflow-2.3.0/index.html similarity index 85% copy from blog/airflow-2.2.0/index.html copy to blog/airflow-2.3.0/index.html index 9034aa5ab..871e468a1 100644 --- a/blog/airflow-2.2.0/index.html +++ b/blog/airflow-2.3.0/index.html @@ -29,21 +29,21 @@ <meta name="msapplication-TileImage" content="/favicons/ms-icon-144x144.png"> <meta name="theme-color" content="#ffffff"> -<title>What's new in Apache Airflow 2.2.0 | Apache Airflow</title><meta property="og:title" content="What's new in Apache Airflow 2.2.0" /> -<meta property="og:description" content="We're proud to announce that Apache Airflow 2.2.0 has been released." /> +<title>Apache Airflow 2.3.0 is here | Apache Airflow</title><meta property="og:title" content="Apache Airflow 2.3.0 is here" /> +<meta property="og:description" content="We're proud to announce that Apache Airflow 2.3.0 has been released." /> <meta property="og:type" content="article" /> -<meta property="og:url" content="/blog/airflow-2.2.0/" /> +<meta property="og:url" content="/blog/airflow-2.3.0/" /> <meta property="og:image" content="/images/feature-image.png" /> -<meta property="article:published_time" content="2021-10-11T00:00:00+00:00" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> -<meta itemprop="name" content="What's new in Apache Airflow 2.2.0"> -<meta itemprop="description" content="We're proud to announce that Apache Airflow 2.2.0 has been released."> +<meta property="article:published_time" content="2022-04-30T00:00:00+00:00" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta itemprop="name" content="Apache Airflow 2.3.0 is here"> +<meta itemprop="description" content="We're proud to announce that Apache Airflow 2.3.0 has been released."> -<meta itemprop="datePublished" content="2021-10-11T00:00:00+00:00" /> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> -<meta itemprop="wordCount" content="658"> +<meta itemprop="datePublished" content="2022-04-30T00:00:00+00:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> +<meta itemprop="wordCount" content="708"> @@ -51,8 +51,8 @@ <meta name="twitter:card" content="summary_large_image"/> <meta name="twitter:image" content="/images/feature-image.png"/> -<meta name="twitter:title" content="What's new in Apache Airflow 2.2.0"/> -<meta name="twitter:description" content="We're proud to announce that Apache Airflow 2.2.0 has been released."/> +<meta name="twitter:title" content="Apache Airflow 2.3.0 is here"/> +<meta name="twitter:description" content="We're proud to announce that Apache Airflow 2.3.0 has been released."/> @@ -69,7 +69,7 @@ crossorigin="anonymous"></script> -<meta name="description" content="We're proud to announce that Apache Airflow 2.2.0 has been released." /> +<meta name="description" content="We're proud to announce that Apache Airflow 2.3.0 has been released." /> @@ -446,16 +446,16 @@ </div> - <span class="bodytext__medium--brownish-grey">Mon, Oct 11, 2021</span> + <span class="bodytext__medium--brownish-grey">Sat, Apr 30, 2022</span> </div> - <p class="blogpost-content__metadata--title">What's new in Apache Airflow 2.2.0</p> + <p class="blogpost-content__metadata--title">Apache Airflow 2.3.0 is here</p> <div class="blogpost-content__metadata--author"> <span class="blogpost-content__metadata--author"> - Jed Cunningham + Ephraim Anierobi </span> - <a href="https://github.com/jedcunningham/" class="blogpost-content__metadata--social-media-icon"> + <a href="https://github.com/ephraimbuddy/" class="blogpost-content__metadata--social-media-icon"> <svg xmlns="http://www.w3.org/2000/svg" width="21.737" height="21.2" viewBox="0 0 21.737 21.2"> <path id="Path_1378" d="M33.971 1181.31a10.87 10.87 0 0 0-3.435 21.182c.543.1.742-.236.742-.524 0-.258-.009-.941-.015-1.848-3.023.657-3.661-1.457-3.661-1.457a2.876 2.876 0 0 0-1.207-1.59c-.987-.674.075-.661.075-.661a2.283 2.283 0 0 1 1.665 1.12 2.314 2.314 0 0 0 3.163.9 2.322 2.322 0 0 1 .69-1.453c-2.413-.274-4.951-1.207-4.951-5.371a4.2 4.2 0 0 1 1.119-2.917 3.908 3.908 0 0 1 .107-2.876s.913-.292 2.989 1.114a10.3 10.3 0 0 1 5.442 0c2.075-1.406 2.986-1.114 2.986-1.114a3.9 3.9 0 0 1 .1 [...] </svg> @@ -463,7 +463,7 @@ </a> - <a href="https://linkedin.com/in/jedidiah-cunningham/" class="blogpost-content__metadata--social-media-icon"> + <a href="https://linkedin.com/in/ephraimanierobi/" class="blogpost-content__metadata--social-media-icon"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 21"> <g id="Group_1745" data-name="Group 1745" transform="translate(.155 -.055)"> <ellipse id="Ellipse_20" cx="10" cy="10.5" fill="#51504f" data-name="Ellipse 20" rx="10" ry="10.5" transform="translate(-.155 .055)"/> @@ -477,85 +477,146 @@ </a> </div> - <p class="blogpost-content__metadata--description">We're proud to announce that Apache Airflow 2.2.0 has been released.</p> + <p class="blogpost-content__metadata--description">We're proud to announce that Apache Airflow 2.3.0 has been released.</p> </div> <div class="markdown-content"> -<p>I’m proud to announce that Apache Airflow 2.2.0 has been released. It contains over 600 commits since 2.1.4 and includes 30 new features, 84 improvements, 85 bug fixes, and many internal and doc changes.</p> +<p>Apache Airflow 2.3.0 contains over 700 commits since 2.2.0 and includes 50 new features, 99 improvements, 85 bug fixes, and several doc changes.</p> <p><strong>Details</strong>:</p> -<p>📦 PyPI: <a href="https://pypi.org/project/apache-airflow/2.2.0/" target="_blank">https://pypi.org/project/apache-airflow/2.2.0/</a> <br /> -📚 Docs: <a href="https://airflow.apache.org/docs/apache-airflow/2.2.0/" target="_blank">https://airflow.apache.org/docs/apache-airflow/2.2.0/</a> <br /> -🛠️ Changelog: <a href="https://airflow.apache.org/docs/apache-airflow/2.2.0/changelog.html" target="_blank">https://airflow.apache.org/docs/apache-airflow/2.2.0/changelog.html</a> <br /> -🐳 Docker Image: docker pull apache/airflow:2.2.0 <br /> -🚏 Constraints: <a href="https://github.com/apache/airflow/tree/constraints-2.2.0" target="_blank">https://github.com/apache/airflow/tree/constraints-2.2.0</a></p> +<p>📦 PyPI: <a href="https://pypi.org/project/apache-airflow/2.3.0/" target="_blank">https://pypi.org/project/apache-airflow/2.3.0/</a> <br /> +📚 Docs: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/" target="_blank">https://airflow.apache.org/docs/apache-airflow/2.3.0/</a> <br /> +🛠️ Release Notes: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/release_notes.html" target="_blank">https://airflow.apache.org/docs/apache-airflow/2.3.0/release_notes.html</a> <br /> +🐳 Docker Image: docker pull apache/airflow:2.3.0 <br /> +🚏 Constraints: <a href="https://github.com/apache/airflow/tree/constraints-2.3.0" target="_blank">https://github.com/apache/airflow/tree/constraints-2.3.0</a></p> <p>As the changelog is quite large, the following are some notable new features that shipped in this release.</p> -<h2 id="custom-timetables-aip-39">Custom Timetables (AIP-39)</h2> +<h2 id="dynamic-task-mapping-aip-42">Dynamic Task Mapping(AIP-42)</h2> -<p>Airflow has historically used cron expressions and timedeltas to represent when a DAG should run. This worked for a lot of use cases, but not all. For example, running daily on Monday-Friday, but not on weekends wasn’t possible.</p> +<p>There’s now first-class support for dynamic tasks in Airflow. What this means is that you can generate tasks dynamically at runtime. Much like using a <code>for</code> loop +to create a list of tasks, here you can create the same tasks without having to know the exact number of tasks ahead of time.</p> -<p>To provide more scheduling flexibility, determining when a DAG should run is now done with Timetables. Of course, backwards compatibility has been maintained - cron expressions and timedeltas are still fully supported, however, timetables are pluggable so you can add your own custom timetable to fit your needs! For example, you could write a timetable to schedule a DagRun</p> +<p>You can have a <code>task</code> generate the list to iterate over, which is not possible with a <code>for</code> loop.</p> -<p><code>execution_date</code> has long been confusing to new Airflowers, so as part of this change a new concept has been added to Airflow to replace it named <code>data_interval</code>, which is the period of data that a task should operate on. The following are now available:</p> +<p>Here is an example:</p> -<ul> -<li><code>logical_date</code> (aka <code>execution_date</code>)</li> -<li><code>data_interval_start</code> (same value as <code>execution_date</code> for cron)</li> -<li><code>data_interval_end</code> (aka <code>next_execution_date</code>)</li> -</ul> +<pre><code class="language-python">@task +def make_list(): + # This can also be from an API call, checking a database, -- almost anything you like, as long as the + # resulting list/dictionary can be stored in the current XCom backend. + return [1, 2, {"a": "b"}, "str"] + + +@task +def consumer(arg): + print(list(arg)) + + +with DAG(dag_id="dynamic-map", start_date=datetime(2022, 4, 2)) as dag: + consumer.expand(arg=make_list()) +</code></pre> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/concepts/dynamic-task-mapping.html" target="_blank">Dynamic Task Mapping</a></p> + +<h2 id="grid-view-replaces-tree-view">Grid View replaces Tree View</h2> + +<p>Grid view replaces tree view in Airflow 2.3.0.</p> + +<p><strong>Screenshots</strong>: +<img src="grid-view.png" alt="The new grid view" /></p> + +<h2 id="purge-history-from-metadata-database">Purge history from metadata database</h2> + +<p>Airflow 2.3.0 introduces a new <code>airflow db clean</code> command that can be used to purge old data from the metadata database.</p> + +<p>You would want to use this command if you want to reduce the size of the metadata database.</p> -<p>If you write your own timetables, keep in mind they should be idempotent and fast as they are used in the scheduler to create DagRuns.</p> +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/usage-cli.html#purge-history-from-metadata-database" target="_blank">Purge history from metadata database</a></p> -<p>More information can be found at: <a href="https://airflow.apache.org/docs/apache-airflow/stable/howto/timetable.html" target="_blank">Customizing DAG Scheduling with Timetables</a></p> +<h2 id="localkubernetesexecutor">LocalKubernetesExecutor</h2> -<h2 id="deferrable-tasks-aip-40">Deferrable Tasks (AIP-40)</h2> +<p>There is a new executor named LocalKubernetesExecutor. This executor helps you run some tasks using LocalExecutor and run another set of tasks using the KubernetesExecutor in the same deployment based on the task’s queue.</p> -<p>Deferrable tasks allows operators or sensors to defer themselves until a light-weight async check passes, at which point they can resume executing. Most importantly, this results in the worker slot, and most notably any resources used by it, to be returned to Airflow. This allows simple things like monitoring a job in an external system or watching for an event to be much cheaper.</p> +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/executor/local_kubernetes.html" target="_blank">LocalKubernetesExecutor</a></p> -<p>To support this feature, a new component has been added to Airflow, the triggerer, which is the daemon process that runs the asyncio event loop.</p> +<h2 id="dagprocessormanager-as-standalone-process-aip-43">DagProcessorManager as standalone process (AIP-43)</h2> -<p>Airflow 2.2.0 ships with 2 deferrable sensors, <code>DateTimeSensorAsync</code> and <code>TimeDeltaSensorAsync</code>, both of which are drop-in replacements for the existing corresponding sensor.</p> +<p>As of 2.3.0, you can run the DagProcessorManager as a standalone process. Because DagProcessorManager runs user code, separating it from the scheduler process and running it as an independent process in a different host is a good idea.</p> -<p>More information can be found at:</p> +<p>The <code>airflow dag-processor</code> cli command will start a new process that will run the DagProcessorManager in a separate process. Before you can run the DagProcessorManager as a standalone process, you need to set the <a href="https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html#standalone_dag_processor" target="_blank">[scheduler] standalone_dag_processor</a> to <code>True</code>.</p> -<p><a href="https://airflow.apache.org/docs/apache-airflow/stable/concepts/deferring.html" target="_blank">Deferrable Operators & Triggers</a></p> +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/cli-and-env-variables-ref.html#dag-processor" target="_blank">dag-processor CLI command</a></p> -<h2 id="custom-task-decorators-and-task-docker">Custom <code>@task</code> decorators and <code>@task.docker</code></h2> +<h2 id="json-serialization-for-connections">JSON serialization for connections</h2> -<p>Airflow 2.2.0 allows providers to create custom <code>@task</code> decorators in the TaskFlow interface.</p> +<p>You can now create connections using the <code>json</code> serialization format.</p> -<p>The <code>@task.docker</code> decorator is one such decorator that allows you to run a function in a docker container. Airflow handles getting the code into the container and returning xcom - you just worry about your function. This is particularly useful when you have conflicting dependencies between Airflow itself and tasks you need to run.</p> +<pre><code class="language-bash">airflow connections add 'my_prod_db' \ + --conn-json '{ + "conn_type": "my-conn-type", + "login": "my-login", + "password": "my-password", + "host": "my-host", + "port": 1234, + "schema": "my-schema", + "extra": { + "param1": "val1", + "param2": "val2" + } + }' +</code></pre> -<p>More information on creating custom <code>@task</code> decorators can be found at: <a href="https://airflow.apache.org/docs/apache-airflow/stable/howto/create-custom-decorator.html" target="_blank">Creating Custom @task Decorators</a></p> +<p>You can also use <code>json</code> serialization format when setting the connection in environment variables.</p> -<p>More information on the <code>@task.docker</code> decorator can be found at: <a href="https://airflow.apache.org/docs/apache-airflow/stable/tutorial_taskflow_api.html#using-the-taskflow-api-with-docker-or-virtual-environments" target="_blank">Using the Taskflow API with Docker or Virtual Environments</a></p> +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/howto/connection.html" target="_blank">JSON serialization for connections</a></p> -<h2 id="validation-of-dag-params">Validation of DAG params</h2> +<h2 id="airflow-db-downgrade-and-offline-generation-of-sql-scripts">Airflow <code>db downgrade</code> and Offline generation of SQL scripts</h2> -<p>You can now apply validation on DAG params by passing a <code>Param</code> object for each param. The <code>Param</code> object supports the full <a href="https://json-schema.org/draft/2020-12/json-schema-validation.html" target="_blank">json-schema validation specifications</a>.</p> +<p>Airflow 2.3.0 introduced a new command <code>airflow db downgrade</code> that will downgrade the database to your chosen version.</p> -<p>Currently this only functions with manually triggered DAGs, but it does set the stage for future params related functionality.</p> +<p>You can also generate the downgrade/upgrade SQL scripts for your database and manually run it against your database or just view the SQL queries that would be run by the downgrade/upgrade command.</p> -<p>More information can be found at: <a href="https://airflow.apache.org/docs/apache-airflow/stable/concepts/params.html" target="_blank">Params</a></p> +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/usage-cli.html#downgrading-airflow" target="_blank">Airflow <code>db downgrade</code> and Offline generation of SQL scripts</a></p> + +<h2 id="reuse-of-decorated-tasks">Reuse of decorated tasks</h2> + +<p>You can now reuse decorated tasks across your dag files. A decorated task has an <code>override</code> method that allows you to override it’s arguments.</p> + +<p>Here’s an example:</p> + +<pre><code class="language-python">@task +def add_task(x, y): + print(f"Task args: x={x}, y={y}") + return x + y + + +@dag(start_date=datetime(2022, 1, 1)) +def mydag(): + start = add_task.override(task_id="start")(1, 2) + for i in range(3): + start >> add_task.override(task_id=f"add_start_{i}")(start, i) +</code></pre> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/tutorial_taskflow_api.html#reusing-a-decorated-task" target="_blank">Reuse of decorated DAGs</a></p> <h2 id="other-small-features">Other small features</h2> <p>This isn’t a comprehensive list, but some noteworthy or interesting small features include:</p> <ul> -<li>Testing Connections from the UI - test the credentials for your Connection actually work</li> -<li>Duplication Connections from the UI</li> -<li>DAGs “Next run” info is shown in the UI, including when the run will actually start</li> -<li><code>airflow standalone</code> command runs all of the Airflow components directly without docker - great for local development</li> +<li>Support different timeout value for dag file parsing</li> +<li><code>airflow dags reserialize</code> command to reserialize dags</li> +<li>Events Timetable</li> +<li>SmoothOperator - Operator that does literally nothing except logging a YouTube link to +Sade’s “Smooth Operator”. Enjoy!</li> </ul> <h2 id="contributors">Contributors</h2> -<p>Thanks to everyone who contributed to this release: Andrew Godwin, Ash Berlin-Taylor, Brent Bovenzi, Elad Kalif, Ephraim Anierobi, James Timmins, Jarek Potiuk, Jed Cunningham, Josh Fell, Kamil Breguła, Kaxil Naik, Malthe Borch, Sam Wheating, Sumit Maheshwari, Tzu-ping Chung and many others</p> +<p>Thanks to everyone who contributed to this release: Ash Berlin-Taylor, Brent Bovenzi, Daniel Standish, Elad, Ephraim Anierobi, Jarek Potiuk, Jed Cunningham, Josh Fell, Kamil Breguła, Kanthi, Kaxil Naik, Khalid Mammadov, Malthe Borch, Ping Zhang, Tzu-ping Chung and many others who keep making Airflow better for everyone.</p> </div> @@ -613,7 +674,7 @@ <div class="pager"> - <a href="/blog/airflow_summit_2021/"> + <a href="/blog/airflow-2.2.0/"> <button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Previous</button> @@ -643,6 +704,41 @@ <div class="list-item list-item--wide"> +<div class="card"> + <div class="box-event__blogpost"> + <div class="box-event__blogpost--metadata"> + <div class="tags-container"> + + + <a class="tag" href="/blog/tags/release/">Release</a> + + + </div> + <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Mon, Oct 11, 2021</span> + </div> + <p class="box-event__blogpost--header"> + <a href="/blog/airflow-2.2.0/"> + What's new in Apache Airflow 2.2.0 + </a> + </p> + <p class="box-event__blogpost--author">Jed Cunningham</p> + <p class="box-event__blogpost--description">We're proud to announce that Apache Airflow 2.2.0 has been released.</p> + <div class="mt-auto"> + <a href="/blog/airflow-2.2.0/"> + + +<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Read more</button> + + </a> + </div> + </div> +</div> + + </div> + + <div class="list-item list-item--wide"> + + <div class="card"> <div class="box-event__blogpost"> <div class="box-event__blogpost--metadata"> @@ -687,7 +783,7 @@ <div class="base-layout--button"> - <a href=https://github.com/apache/airflow-site/edit/main/landing-pages/site/content/en/blog/airflow-2.2.0/index.md> + <a href=https://github.com/apache/airflow-site/edit/main/landing-pages/site/content/en/blog/airflow-2.3.0/index.md> diff --git a/blog/airflow-survey-2020/index.html b/blog/airflow-survey-2020/index.html index 24f8703a1..f24cc1356 100644 --- a/blog/airflow-survey-2020/index.html +++ b/blog/airflow-survey-2020/index.html @@ -36,13 +36,13 @@ <meta property="og:image" content="/images/feature-image.png" /> <meta property="article:published_time" content="2021-03-09T00:00:00+00:00" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Airflow Survey 2020"> <meta itemprop="description" content="We observe steady growth in number of users as well as in an amount of active contributors. So listening and understanding our community is of high importance."> <meta itemprop="datePublished" content="2021-03-09T00:00:00+00:00" /> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="2106"> diff --git a/blog/airflow-survey/index.html b/blog/airflow-survey/index.html index 922ba9106..9239269b2 100644 --- a/blog/airflow-survey/index.html +++ b/blog/airflow-survey/index.html @@ -36,13 +36,13 @@ <meta property="og:image" content="/images/feature-image.png" /> <meta property="article:published_time" content="2019-12-11T00:00:00+00:00" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Airflow Survey 2019"> <meta itemprop="description" content="Receiving and adjusting to our users’ feedback is a must. Let’s see who Airflow users are, how they play with it, and what they miss."> <meta itemprop="datePublished" content="2019-12-11T00:00:00+00:00" /> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="1775"> diff --git a/blog/airflow-two-point-oh-is-here/index.html b/blog/airflow-two-point-oh-is-here/index.html index 480f34953..23bb91089 100644 --- a/blog/airflow-two-point-oh-is-here/index.html +++ b/blog/airflow-two-point-oh-is-here/index.html @@ -36,13 +36,13 @@ <meta property="og:image" content="/images/feature-image.png" /> <meta property="article:published_time" content="2020-12-17T00:00:00+00:00" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Apache Airflow 2.0 is here!"> <meta itemprop="description" content="We're proud to announce that Apache Airflow 2.0.0 has been released."> <meta itemprop="datePublished" content="2020-12-17T00:00:00+00:00" /> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="1165"> @@ -703,6 +703,41 @@ Docs on <a href="http://airflow.apache.org/docs/apache-airflow-providers/package <div class="list-item list-item--wide"> +<div class="card"> + <div class="box-event__blogpost"> + <div class="box-event__blogpost--metadata"> + <div class="tags-container"> + + + <a class="tag" href="/blog/tags/release/">Release</a> + + + </div> + <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Sat, Apr 30, 2022</span> + </div> + <p class="box-event__blogpost--header"> + <a href="/blog/airflow-2.3.0/"> + Apache Airflow 2.3.0 is here + </a> + </p> + <p class="box-event__blogpost--author">Ephraim Anierobi</p> + <p class="box-event__blogpost--description">We're proud to announce that Apache Airflow 2.3.0 has been released.</p> + <div class="mt-auto"> + <a href="/blog/airflow-2.3.0/"> + + +<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Read more</button> + + </a> + </div> + </div> +</div> + + </div> + + <div class="list-item list-item--wide"> + + <div class="card"> <div class="box-event__blogpost"> <div class="box-event__blogpost--metadata"> diff --git a/blog/airflow_summit_2021/index.html b/blog/airflow_summit_2021/index.html index f5853d557..47b1dcd47 100644 --- a/blog/airflow_summit_2021/index.html +++ b/blog/airflow_summit_2021/index.html @@ -36,13 +36,13 @@ <meta property="og:image" content="/images/feature-image.png" /> <meta property="article:published_time" content="2021-03-21T00:00:00+00:00" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Airflow Summit 2021"> <meta itemprop="description" content="We are thrilled about Airflow Summit 2021!"> <meta itemprop="datePublished" content="2021-03-21T00:00:00+00:00" /> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="77"> diff --git a/blog/announcing-new-website/index.html b/blog/announcing-new-website/index.html index e957741d0..b44ab2812 100644 --- a/blog/announcing-new-website/index.html +++ b/blog/announcing-new-website/index.html @@ -36,13 +36,13 @@ <meta property="og:image" content="/images/feature-image.png" /> <meta property="article:published_time" content="2019-12-11T00:00:00+00:00" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="New Airflow website"> <meta itemprop="description" content="We are thrilled about our new website!"> <meta itemprop="datePublished" content="2019-12-11T00:00:00+00:00" /> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="282"> diff --git a/blog/apache-airflow-for-newcomers/index.html b/blog/apache-airflow-for-newcomers/index.html index a0736940e..fccd8d1a1 100644 --- a/blog/apache-airflow-for-newcomers/index.html +++ b/blog/apache-airflow-for-newcomers/index.html @@ -37,14 +37,14 @@ Authoring Workflow in Apache Airflow. Airflow makes it easy to author workflows <meta property="og:image" content="/images/feature-image.png" /> <meta property="article:published_time" content="2020-08-17T00:00:00+00:00" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Apache Airflow For Newcomers"> <meta itemprop="description" content="Apache Airflow is a platform to programmatically author, schedule, and monitor workflows. A workflow is a sequence of tasks that processes a set of data. You can think of workflow as the path that describes how tasks go from being undone to done. Scheduling, on the other hand, is the process of planning, controlling, and optimizing when a particular task should be done. Authoring Workflow in Apache Airflow. Airflow makes it easy to author workflows using python scripts."> <meta itemprop="datePublished" content="2020-08-17T00:00:00+00:00" /> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="1070"> diff --git a/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/index.html b/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/index.html index 8416b93b4..034580eb5 100644 --- a/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/index.html +++ b/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/index.html @@ -36,13 +36,13 @@ <meta property="og:image" content="/images/feature-image.png" /> <meta property="article:published_time" content="2019-11-22T00:00:00+00:00" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="ApacheCon Europe 2019 — Thoughts and Insights by Airflow Committers"> <meta itemprop="description" content="Here come some thoughts by Airflow committers and contributors from the ApacheCon Europe 2019. Get to know the ASF community!"> <meta itemprop="datePublished" content="2019-11-22T00:00:00+00:00" /> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="138"> diff --git a/blog/documenting-using-local-development-environments/index.html b/blog/documenting-using-local-development-environments/index.html index d9c90698e..b96560efb 100644 --- a/blog/documenting-using-local-development-environments/index.html +++ b/blog/documenting-using-local-development-environments/index.html @@ -36,13 +36,13 @@ <meta property="og:image" content="/images/feature-image.png" /> <meta property="article:published_time" content="2019-11-22T00:00:00+00:00" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Documenting using local development environment"> <meta itemprop="description" content="The story behind documenting local development environment of Apache Airflow"> <meta itemprop="datePublished" content="2019-11-22T00:00:00+00:00" /> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="256"> diff --git a/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/index.html b/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/index.html index 0857c9188..8aea4cbd1 100644 --- a/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/index.html +++ b/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/index.html @@ -37,14 +37,14 @@ About Me I have been writing tech articles on medium as well as my blog for the <meta property="og:image" content="/images/feature-image.png" /> <meta property="article:published_time" content="2019-12-20T00:00:00+00:00" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Experience in Google Season of Docs 2019 with Apache Airflow"> <meta itemprop="description" content="I came across Google Season of Docs (GSoD) almost by accident, thanks to my extensive HackerNews and Twitter addiction. I was familiar with the Google Summer of Code but not with this program. It turns out it was the inaugural phase. I read the details, and the process felt a lot like GSoC except that this was about documentation. About Me I have been writing tech articles on medium as well as my blog for the past 1."> <meta itemprop="datePublished" content="2019-12-20T00:00:00+00:00" /> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="1521"> diff --git a/blog/experience-with-airflow-as-an-outreachy-intern/index.html b/blog/experience-with-airflow-as-an-outreachy-intern/index.html index e99031ec4..9b8836381 100644 --- a/blog/experience-with-airflow-as-an-outreachy-intern/index.html +++ b/blog/experience-with-airflow-as-an-outreachy-intern/index.html @@ -37,14 +37,14 @@ Contribution Period The first thing I had to do was choose a project under an or <meta property="og:image" content="/images/feature-image.png" /> <meta property="article:published_time" content="2020-08-30T00:00:00+00:00" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Journey with Airflow as an Outreachy Intern"> <meta itemprop="description" content="Outreachy is a program which organises three months paid internships with FOSS projects for people who are typically underrepresented in those projects. Contribution Period The first thing I had to do was choose a project under an organisation. After going through all the projects I chose “Extending the REST API of Apache Airflow”, because I had a good idea of what REST API(s) are, so I thought it would be easier to get started with the contributions."> <meta itemprop="datePublished" content="2020-08-30T00:00:00+00:00" /> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="532"> diff --git a/blog/implementing-stable-api-for-apache-airflow/index.html b/blog/implementing-stable-api-for-apache-airflow/index.html index e2402844d..b713f1373 100644 --- a/blog/implementing-stable-api-for-apache-airflow/index.html +++ b/blog/implementing-stable-api-for-apache-airflow/index.html @@ -36,13 +36,13 @@ <meta property="og:image" content="/images/feature-image.png" /> <meta property="article:published_time" content="2020-07-19T00:00:00+00:00" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Implementing Stable API for Apache Airflow"> <meta itemprop="description" content="An Outreachy intern's progress report on contributing to Apache Airflow REST API."> <meta itemprop="datePublished" content="2020-07-19T00:00:00+00:00" /> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="703"> @@ -655,6 +655,41 @@ wonderful reviews. I’m grateful.</p> <div class="list-item list-item--wide"> +<div class="card"> + <div class="box-event__blogpost"> + <div class="box-event__blogpost--metadata"> + <div class="tags-container"> + + + <a class="tag" href="/blog/tags/release/">Release</a> + + + </div> + <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Sat, Apr 30, 2022</span> + </div> + <p class="box-event__blogpost--header"> + <a href="/blog/airflow-2.3.0/"> + Apache Airflow 2.3.0 is here + </a> + </p> + <p class="box-event__blogpost--author">Ephraim Anierobi</p> + <p class="box-event__blogpost--description">We're proud to announce that Apache Airflow 2.3.0 has been released.</p> + <div class="mt-auto"> + <a href="/blog/airflow-2.3.0/"> + + +<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Read more</button> + + </a> + </div> + </div> +</div> + + </div> + + <div class="list-item list-item--wide"> + + <div class="card"> <div class="box-event__blogpost"> <div class="box-event__blogpost--metadata"> diff --git a/blog/index.html b/blog/index.html index 6aaa94f59..cd9a08559 100644 --- a/blog/index.html +++ b/blog/index.html @@ -489,6 +489,41 @@ <div class="list-item list-item--wide"> +<div class="card"> + <div class="box-event__blogpost"> + <div class="box-event__blogpost--metadata"> + <div class="tags-container"> + + + <a class="tag" href="/blog/tags/release/">Release</a> + + + </div> + <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Sat, Apr 30, 2022</span> + </div> + <p class="box-event__blogpost--header"> + <a href="/blog/airflow-2.3.0/"> + Apache Airflow 2.3.0 is here + </a> + </p> + <p class="box-event__blogpost--author">Ephraim Anierobi</p> + <p class="box-event__blogpost--description">We're proud to announce that Apache Airflow 2.3.0 has been released.</p> + <div class="mt-auto"> + <a href="/blog/airflow-2.3.0/"> + + +<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Read more</button> + + </a> + </div> + </div> +</div> + + </div> + + <div class="list-item list-item--wide"> + + <div class="card"> <div class="box-event__blogpost"> <div class="box-event__blogpost--metadata"> diff --git a/blog/index.xml b/blog/index.xml index a2f8002ca..4d557d6f7 100644 --- a/blog/index.xml +++ b/blog/index.xml @@ -13,6 +13,156 @@ + <item> + <title>Blog: Apache Airflow 2.3.0 is here</title> + <link>/blog/airflow-2.3.0/</link> + <pubDate>Sat, 30 Apr 2022 00:00:00 +0000</pubDate> + + <guid>/blog/airflow-2.3.0/</guid> + <description> + + + + +<p>Apache Airflow 2.3.0 contains over 700 commits since 2.2.0 and includes 50 new features, 99 improvements, 85 bug fixes, and several doc changes.</p> + +<p><strong>Details</strong>:</p> + +<p>📦 PyPI: <a href="https://pypi.org/project/apache-airflow/2.3.0/" target="_blank">https://pypi.org/project/apache-airflow/2.3.0/</a> <br /> +📚 Docs: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/" target="_blank">https://airflow.apache.org/docs/apache-airflow/2.3.0/</a> <br /> +🛠️ Release Notes: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/release_notes.html" target="_blank">https://airflow.apache.org/docs/apache-airflow/2.3.0/release_notes.html</a> <br /> +🐳 Docker Image: docker pull apache/airflow:2.3.0 <br /> +🚏 Constraints: <a href="https://github.com/apache/airflow/tree/constraints-2.3.0" target="_blank">https://github.com/apache/airflow/tree/constraints-2.3.0</a></p> + +<p>As the changelog is quite large, the following are some notable new features that shipped in this release.</p> + +<h2 id="dynamic-task-mapping-aip-42">Dynamic Task Mapping(AIP-42)</h2> + +<p>There&rsquo;s now first-class support for dynamic tasks in Airflow. What this means is that you can generate tasks dynamically at runtime. Much like using a <code>for</code> loop +to create a list of tasks, here you can create the same tasks without having to know the exact number of tasks ahead of time.</p> + +<p>You can have a <code>task</code> generate the list to iterate over, which is not possible with a <code>for</code> loop.</p> + +<p>Here is an example:</p> + +<pre><code class="language-python">@task +def make_list(): + # This can also be from an API call, checking a database, -- almost anything you like, as long as the + # resulting list/dictionary can be stored in the current XCom backend. + return [1, 2, {&quot;a&quot;: &quot;b&quot;}, &quot;str&quot;] + + +@task +def consumer(arg): + print(list(arg)) + + +with DAG(dag_id=&quot;dynamic-map&quot;, start_date=datetime(2022, 4, 2)) as dag: + consumer.expand(arg=make_list()) +</code></pre> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/concepts/dynamic-task-mapping.html" target="_blank">Dynamic Task Mapping</a></p> + +<h2 id="grid-view-replaces-tree-view">Grid View replaces Tree View</h2> + +<p>Grid view replaces tree view in Airflow 2.3.0.</p> + +<p><strong>Screenshots</strong>: +<img src="grid-view.png" alt="The new grid view" /></p> + +<h2 id="purge-history-from-metadata-database">Purge history from metadata database</h2> + +<p>Airflow 2.3.0 introduces a new <code>airflow db clean</code> command that can be used to purge old data from the metadata database.</p> + +<p>You would want to use this command if you want to reduce the size of the metadata database.</p> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/usage-cli.html#purge-history-from-metadata-database" target="_blank">Purge history from metadata database</a></p> + +<h2 id="localkubernetesexecutor">LocalKubernetesExecutor</h2> + +<p>There is a new executor named LocalKubernetesExecutor. This executor helps you run some tasks using LocalExecutor and run another set of tasks using the KubernetesExecutor in the same deployment based on the task&rsquo;s queue.</p> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/executor/local_kubernetes.html" target="_blank">LocalKubernetesExecutor</a></p> + +<h2 id="dagprocessormanager-as-standalone-process-aip-43">DagProcessorManager as standalone process (AIP-43)</h2> + +<p>As of 2.3.0, you can run the DagProcessorManager as a standalone process. Because DagProcessorManager runs user code, separating it from the scheduler process and running it as an independent process in a different host is a good idea.</p> + +<p>The <code>airflow dag-processor</code> cli command will start a new process that will run the DagProcessorManager in a separate process. Before you can run the DagProcessorManager as a standalone process, you need to set the <a href="https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html#standalone_dag_processor" target="_blank">[scheduler] standalone_dag_processor</a> to <code>True</code>.</p> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/cli-and-env-variables-ref.html#dag-processor" target="_blank">dag-processor CLI command</a></p> + +<h2 id="json-serialization-for-connections">JSON serialization for connections</h2> + +<p>You can now create connections using the <code>json</code> serialization format.</p> + +<pre><code class="language-bash">airflow connections add 'my_prod_db' \ + --conn-json '{ + &quot;conn_type&quot;: &quot;my-conn-type&quot;, + &quot;login&quot;: &quot;my-login&quot;, + &quot;password&quot;: &quot;my-password&quot;, + &quot;host&quot;: &quot;my-host&quot;, + &quot;port&quot;: 1234, + &quot;schema&quot;: &quot;my-schema&quot;, + &quot;extra&quot;: { + &quot;param1&quot;: &quot;val1&quot;, + &quot;param2&quot;: &quot;val2&quot; + } + }' +</code></pre> + +<p>You can also use <code>json</code> serialization format when setting the connection in environment variables.</p> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/howto/connection.html" target="_blank">JSON serialization for connections</a></p> + +<h2 id="airflow-db-downgrade-and-offline-generation-of-sql-scripts">Airflow <code>db downgrade</code> and Offline generation of SQL scripts</h2> + +<p>Airflow 2.3.0 introduced a new command <code>airflow db downgrade</code> that will downgrade the database to your chosen version.</p> + +<p>You can also generate the downgrade/upgrade SQL scripts for your database and manually run it against your database or just view the SQL queries that would be run by the downgrade/upgrade command.</p> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/usage-cli.html#downgrading-airflow" target="_blank">Airflow <code>db downgrade</code> and Offline generation of SQL scripts</a></p> + +<h2 id="reuse-of-decorated-tasks">Reuse of decorated tasks</h2> + +<p>You can now reuse decorated tasks across your dag files. A decorated task has an <code>override</code> method that allows you to override it&rsquo;s arguments.</p> + +<p>Here&rsquo;s an example:</p> + +<pre><code class="language-python">@task +def add_task(x, y): + print(f&quot;Task args: x={x}, y={y}&quot;) + return x + y + + +@dag(start_date=datetime(2022, 1, 1)) +def mydag(): + start = add_task.override(task_id=&quot;start&quot;)(1, 2) + for i in range(3): + start &gt;&gt; add_task.override(task_id=f&quot;add_start_{i}&quot;)(start, i) +</code></pre> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/tutorial_taskflow_api.html#reusing-a-decorated-task" target="_blank">Reuse of decorated DAGs</a></p> + +<h2 id="other-small-features">Other small features</h2> + +<p>This isn’t a comprehensive list, but some noteworthy or interesting small features include:</p> + +<ul> +<li>Support different timeout value for dag file parsing</li> +<li><code>airflow dags reserialize</code> command to reserialize dags</li> +<li>Events Timetable</li> +<li>SmoothOperator - Operator that does literally nothing except logging a YouTube link to +Sade&rsquo;s &ldquo;Smooth Operator&rdquo;. Enjoy!</li> +</ul> + +<h2 id="contributors">Contributors</h2> + +<p>Thanks to everyone who contributed to this release: Ash Berlin-Taylor, Brent Bovenzi, Daniel Standish, Elad, Ephraim Anierobi, Jarek Potiuk, Jed Cunningham, Josh Fell, Kamil Breguła, Kanthi, Kaxil Naik, Khalid Mammadov, Malthe Borch, Ping Zhang, Tzu-ping Chung and many others who keep making Airflow better for everyone.</p> + + </description> + </item> + <item> <title>Blog: What's new in Apache Airflow 2.2.0</title> <link>/blog/airflow-2.2.0/</link> diff --git a/blog/its-a-breeze-to-develop-apache-airflow/index.html b/blog/its-a-breeze-to-develop-apache-airflow/index.html index 33abe4ee3..98072ac26 100644 --- a/blog/its-a-breeze-to-develop-apache-airflow/index.html +++ b/blog/its-a-breeze-to-develop-apache-airflow/index.html @@ -36,13 +36,13 @@ <meta property="og:image" content="/images/feature-image.png" /> <meta property="article:published_time" content="2019-11-22T00:00:00+00:00" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="It's a "Breeze" to develop Apache Airflow"> <meta itemprop="description" content="A Principal Software Engineer's journey to developer productivity. Learn how Jarek and his team speeded up and simplified Airflow development for the community."> <meta itemprop="datePublished" content="2019-11-22T00:00:00+00:00" /> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="124"> diff --git a/blog/tags/release/index.html b/blog/tags/release/index.html index 56444954f..b491c87fa 100644 --- a/blog/tags/release/index.html +++ b/blog/tags/release/index.html @@ -37,7 +37,7 @@ <meta property="og:image" content="/images/feature-image.png" /> -<meta property="og:updated_time" content="2021-10-11T00:00:00+00:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="og:updated_time" content="2022-04-30T00:00:00+00:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="release"> <meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows."> @@ -499,6 +499,41 @@ <div class="list-item list-item--wide"> +<div class="card"> + <div class="box-event__blogpost"> + <div class="box-event__blogpost--metadata"> + <div class="tags-container"> + + + <a class="tag" href="/blog/tags/release/">Release</a> + + + </div> + <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Sat, Apr 30, 2022</span> + </div> + <p class="box-event__blogpost--header"> + <a href="/blog/airflow-2.3.0/"> + Apache Airflow 2.3.0 is here + </a> + </p> + <p class="box-event__blogpost--author">Ephraim Anierobi</p> + <p class="box-event__blogpost--description">We're proud to announce that Apache Airflow 2.3.0 has been released.</p> + <div class="mt-auto"> + <a href="/blog/airflow-2.3.0/"> + + +<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Read more</button> + + </a> + </div> + </div> +</div> + + </div> + + <div class="list-item list-item--wide"> + + <div class="card"> <div class="box-event__blogpost"> <div class="box-event__blogpost--metadata"> diff --git a/blog/tags/release/index.xml b/blog/tags/release/index.xml index a44a3ffcf..eb7c63ebf 100644 --- a/blog/tags/release/index.xml +++ b/blog/tags/release/index.xml @@ -4,7 +4,7 @@ <link>/blog/tags/release/</link> <description>Recent content in release on Apache Airflow</description> <generator>Hugo -- gohugo.io</generator> - <lastBuildDate>Mon, 11 Oct 2021 00:00:00 +0000</lastBuildDate> + <lastBuildDate>Sat, 30 Apr 2022 00:00:00 +0000</lastBuildDate> <atom:link href="/blog/tags/release/index.xml" rel="self" type="application/rss+xml" /> @@ -14,6 +14,156 @@ + <item> + <title>Blog: Apache Airflow 2.3.0 is here</title> + <link>/blog/airflow-2.3.0/</link> + <pubDate>Sat, 30 Apr 2022 00:00:00 +0000</pubDate> + + <guid>/blog/airflow-2.3.0/</guid> + <description> + + + + +<p>Apache Airflow 2.3.0 contains over 700 commits since 2.2.0 and includes 50 new features, 99 improvements, 85 bug fixes, and several doc changes.</p> + +<p><strong>Details</strong>:</p> + +<p>📦 PyPI: <a href="https://pypi.org/project/apache-airflow/2.3.0/" target="_blank">https://pypi.org/project/apache-airflow/2.3.0/</a> <br /> +📚 Docs: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/" target="_blank">https://airflow.apache.org/docs/apache-airflow/2.3.0/</a> <br /> +🛠️ Release Notes: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/release_notes.html" target="_blank">https://airflow.apache.org/docs/apache-airflow/2.3.0/release_notes.html</a> <br /> +🐳 Docker Image: docker pull apache/airflow:2.3.0 <br /> +🚏 Constraints: <a href="https://github.com/apache/airflow/tree/constraints-2.3.0" target="_blank">https://github.com/apache/airflow/tree/constraints-2.3.0</a></p> + +<p>As the changelog is quite large, the following are some notable new features that shipped in this release.</p> + +<h2 id="dynamic-task-mapping-aip-42">Dynamic Task Mapping(AIP-42)</h2> + +<p>There&rsquo;s now first-class support for dynamic tasks in Airflow. What this means is that you can generate tasks dynamically at runtime. Much like using a <code>for</code> loop +to create a list of tasks, here you can create the same tasks without having to know the exact number of tasks ahead of time.</p> + +<p>You can have a <code>task</code> generate the list to iterate over, which is not possible with a <code>for</code> loop.</p> + +<p>Here is an example:</p> + +<pre><code class="language-python">@task +def make_list(): + # This can also be from an API call, checking a database, -- almost anything you like, as long as the + # resulting list/dictionary can be stored in the current XCom backend. + return [1, 2, {&quot;a&quot;: &quot;b&quot;}, &quot;str&quot;] + + +@task +def consumer(arg): + print(list(arg)) + + +with DAG(dag_id=&quot;dynamic-map&quot;, start_date=datetime(2022, 4, 2)) as dag: + consumer.expand(arg=make_list()) +</code></pre> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/concepts/dynamic-task-mapping.html" target="_blank">Dynamic Task Mapping</a></p> + +<h2 id="grid-view-replaces-tree-view">Grid View replaces Tree View</h2> + +<p>Grid view replaces tree view in Airflow 2.3.0.</p> + +<p><strong>Screenshots</strong>: +<img src="grid-view.png" alt="The new grid view" /></p> + +<h2 id="purge-history-from-metadata-database">Purge history from metadata database</h2> + +<p>Airflow 2.3.0 introduces a new <code>airflow db clean</code> command that can be used to purge old data from the metadata database.</p> + +<p>You would want to use this command if you want to reduce the size of the metadata database.</p> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/usage-cli.html#purge-history-from-metadata-database" target="_blank">Purge history from metadata database</a></p> + +<h2 id="localkubernetesexecutor">LocalKubernetesExecutor</h2> + +<p>There is a new executor named LocalKubernetesExecutor. This executor helps you run some tasks using LocalExecutor and run another set of tasks using the KubernetesExecutor in the same deployment based on the task&rsquo;s queue.</p> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/executor/local_kubernetes.html" target="_blank">LocalKubernetesExecutor</a></p> + +<h2 id="dagprocessormanager-as-standalone-process-aip-43">DagProcessorManager as standalone process (AIP-43)</h2> + +<p>As of 2.3.0, you can run the DagProcessorManager as a standalone process. Because DagProcessorManager runs user code, separating it from the scheduler process and running it as an independent process in a different host is a good idea.</p> + +<p>The <code>airflow dag-processor</code> cli command will start a new process that will run the DagProcessorManager in a separate process. Before you can run the DagProcessorManager as a standalone process, you need to set the <a href="https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html#standalone_dag_processor" target="_blank">[scheduler] standalone_dag_processor</a> to <code>True</code>.</p> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/cli-and-env-variables-ref.html#dag-processor" target="_blank">dag-processor CLI command</a></p> + +<h2 id="json-serialization-for-connections">JSON serialization for connections</h2> + +<p>You can now create connections using the <code>json</code> serialization format.</p> + +<pre><code class="language-bash">airflow connections add 'my_prod_db' \ + --conn-json '{ + &quot;conn_type&quot;: &quot;my-conn-type&quot;, + &quot;login&quot;: &quot;my-login&quot;, + &quot;password&quot;: &quot;my-password&quot;, + &quot;host&quot;: &quot;my-host&quot;, + &quot;port&quot;: 1234, + &quot;schema&quot;: &quot;my-schema&quot;, + &quot;extra&quot;: { + &quot;param1&quot;: &quot;val1&quot;, + &quot;param2&quot;: &quot;val2&quot; + } + }' +</code></pre> + +<p>You can also use <code>json</code> serialization format when setting the connection in environment variables.</p> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/howto/connection.html" target="_blank">JSON serialization for connections</a></p> + +<h2 id="airflow-db-downgrade-and-offline-generation-of-sql-scripts">Airflow <code>db downgrade</code> and Offline generation of SQL scripts</h2> + +<p>Airflow 2.3.0 introduced a new command <code>airflow db downgrade</code> that will downgrade the database to your chosen version.</p> + +<p>You can also generate the downgrade/upgrade SQL scripts for your database and manually run it against your database or just view the SQL queries that would be run by the downgrade/upgrade command.</p> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/usage-cli.html#downgrading-airflow" target="_blank">Airflow <code>db downgrade</code> and Offline generation of SQL scripts</a></p> + +<h2 id="reuse-of-decorated-tasks">Reuse of decorated tasks</h2> + +<p>You can now reuse decorated tasks across your dag files. A decorated task has an <code>override</code> method that allows you to override it&rsquo;s arguments.</p> + +<p>Here&rsquo;s an example:</p> + +<pre><code class="language-python">@task +def add_task(x, y): + print(f&quot;Task args: x={x}, y={y}&quot;) + return x + y + + +@dag(start_date=datetime(2022, 1, 1)) +def mydag(): + start = add_task.override(task_id=&quot;start&quot;)(1, 2) + for i in range(3): + start &gt;&gt; add_task.override(task_id=f&quot;add_start_{i}&quot;)(start, i) +</code></pre> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/tutorial_taskflow_api.html#reusing-a-decorated-task" target="_blank">Reuse of decorated DAGs</a></p> + +<h2 id="other-small-features">Other small features</h2> + +<p>This isn’t a comprehensive list, but some noteworthy or interesting small features include:</p> + +<ul> +<li>Support different timeout value for dag file parsing</li> +<li><code>airflow dags reserialize</code> command to reserialize dags</li> +<li>Events Timetable</li> +<li>SmoothOperator - Operator that does literally nothing except logging a YouTube link to +Sade&rsquo;s &ldquo;Smooth Operator&rdquo;. Enjoy!</li> +</ul> + +<h2 id="contributors">Contributors</h2> + +<p>Thanks to everyone who contributed to this release: Ash Berlin-Taylor, Brent Bovenzi, Daniel Standish, Elad, Ephraim Anierobi, Jarek Potiuk, Jed Cunningham, Josh Fell, Kamil Breguła, Kanthi, Kaxil Naik, Khalid Mammadov, Malthe Borch, Ping Zhang, Tzu-ping Chung and many others who keep making Airflow better for everyone.</p> + + </description> + </item> + <item> <title>Blog: What's new in Apache Airflow 2.2.0</title> <link>/blog/airflow-2.2.0/</link> diff --git a/docs/docker-stack/build-arg-ref.html b/docs/docker-stack/build-arg-ref.html index b07def04c..5a75ba653 100644 --- a/docs/docker-stack/build-arg-ref.html +++ b/docs/docker-stack/build-arg-ref.html @@ -582,7 +582,7 @@ Those arguments are used when you want to customize the image. You can see some <td><p>Base python image.</p></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">AIRFLOW_VERSION</span></code></p></td> -<td><p><code class="code docutils literal notranslate"><span class="pre">2.3.0.dev0</span></code></p></td> +<td><p><code class="code docutils literal notranslate"><span class="pre">2.3.0</span></code></p></td> <td><p>version of Airflow.</p></td> </tr> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">AIRFLOW_EXTRAS</span></code></p></td> @@ -625,7 +625,7 @@ It can be <code class="docutils literal notranslate"><span class="pre">constrain 2.0.* installation. In case of building specific version you want to point it to specific tag, for example -<code class="code docutils literal notranslate"><span class="pre">constraints-2.3.0.dev0</span></code>. +<code class="code docutils literal notranslate"><span class="pre">constraints-2.3.0</span></code>. Auto-detected if empty.</p></td> </tr> </tbody> diff --git a/docs/docker-stack/index.html b/docs/docker-stack/index.html index e764fc234..1e6642ae7 100644 --- a/docs/docker-stack/index.html +++ b/docs/docker-stack/index.html @@ -557,12 +557,12 @@ image.</p> Every time a new version of Airflow is released, the images are prepared in the <a class="reference external" href="https://hub.docker.com/r/apache/airflow">apache/airflow DockerHub</a> for all the supported Python versions.</p> -<p>You can find the following images there (Assuming Airflow version <code class="code docutils literal notranslate"><span class="pre">2.3.0.dev0</span></code>):</p> +<p>You can find the following images there (Assuming Airflow version <code class="code docutils literal notranslate"><span class="pre">2.3.0</span></code>):</p> <ul class="simple"> <li><p><code class="code docutils literal notranslate"><span class="pre">apache/airflow:latest</span></code> - the latest released Airflow image with default Python version (3.7 currently)</p></li> <li><p><code class="code docutils literal notranslate"><span class="pre">apache/airflow:latest-pythonX.Y</span></code> - the latest released Airflow image with specific Python version</p></li> -<li><p><code class="code docutils literal notranslate"><span class="pre">apache/airflow:2.3.0.dev0</span></code> - the versioned Airflow image with default Python version (3.7 currently)</p></li> -<li><p><code class="code docutils literal notranslate"><span class="pre">apache/airflow:2.3.0.dev0-pythonX.Y</span></code> - the versioned Airflow image with specific Python version</p></li> +<li><p><code class="code docutils literal notranslate"><span class="pre">apache/airflow:2.3.0</span></code> - the versioned Airflow image with default Python version (3.7 currently)</p></li> +<li><p><code class="code docutils literal notranslate"><span class="pre">apache/airflow:2.3.0-pythonX.Y</span></code> - the versioned Airflow image with specific Python version</p></li> </ul> <p>Those are “reference” images. They contain the most common set of extras, dependencies and providers that are often used by the users and they are good to “try-things-out” when you want to just take Airflow for a spin,</p> diff --git a/docs/docker-stack/searchindex.js b/docs/docker-stack/searchindex.js index 3c09b2297..252a4c9e5 100644 --- a/docs/docker-stack/searchindex.js +++ b/docs/docker-stack/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["build","build-arg-ref","changelog","entrypoint","index","recipes"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["build.rst","build-arg-ref.rst","changelog.rst","entrypoint. [...] \ No newline at end of file +Search.setIndex({docnames:["build","build-arg-ref","changelog","entrypoint","index","recipes"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["build.rst","build-arg-ref.rst","changelog.rst","entrypoint. [...] \ No newline at end of file diff --git a/index.html b/index.html index ffb77f75b..9c1ef34bf 100644 --- a/index.html +++ b/index.html @@ -1233,12 +1233,12 @@ <div id="integrations-container" class="list-items"> - <a class="list-item" href="/docs/apache-airflow-providers-amazon/stable/index.html"> + <a class="list-item" href="/docs/apache-airflow-providers-google/stable/operators/marketing_platform/campaign_manager.html"> <div class="card"> <div class="box-event box-event__integration"> - <span class="box-event__integration--name">AWS Step Functions</span> + <span class="box-event__integration--name">Google Campaign Manager</span> </div> </div> @@ -1246,12 +1246,12 @@ - <a class="list-item" href="/docs/apache-airflow-providers-amazon/stable/operators/glacier.html"> + <a class="list-item" href="/docs/apache-airflow-providers-google/stable/index.html"> <div class="card"> <div class="box-event box-event__integration"> - <span class="box-event__integration--name">Amazon Glacier</span> + <span class="box-event__integration--name">Google Cloud Key Management Service (KMS)</span> </div> </div> @@ -1259,12 +1259,12 @@ - <a class="list-item" href="/docs/apache-airflow-providers-jdbc/stable/operators.html"> + <a class="list-item" href="/docs/apache-airflow-providers-google/stable/operators/cloud/spanner.html"> <div class="card"> <div class="box-event box-event__integration"> - <span class="box-event__integration--name">Java Database Connectivity (JDBC)</span> + <span class="box-event__integration--name">Google Cloud Spanner</span> </div> </div> @@ -1272,12 +1272,12 @@ - <a class="list-item" href="/docs/apache-airflow-providers-microsoft-azure/stable/index.html"> + <a class="list-item" href="/docs/apache-airflow-providers-google/stable/index.html"> <div class="card"> <div class="box-event box-event__integration"> - <span class="box-event__integration--name">Microsoft Azure Files</span> + <span class="box-event__integration--name">Google Drive</span> </div> </div> @@ -1285,12 +1285,12 @@ - <a class="list-item" href="/docs/apache-airflow-providers-google/stable/operators/cloud/video_intelligence.html"> + <a class="list-item" href="/docs/apache-airflow-providers-google/stable/operators/cloud/cloud_sql.html"> <div class="card"> <div class="box-event box-event__integration"> - <span class="box-event__integration--name">Google Cloud Video Intelligence</span> + <span class="box-event__integration--name">Google Cloud SQL</span> </div> </div> @@ -1298,12 +1298,12 @@ - <a class="list-item" href="/docs/apache-airflow-providers-google/stable/operators/cloud/natural_language.html"> + <a class="list-item" href="/docs/apache-airflow-providers-google/stable/operators/cloud/data_loss_prevention.html"> <div class="card"> <div class="box-event box-event__integration"> - <span class="box-event__integration--name">Google Cloud Natural Language</span> + <span class="box-event__integration--name">Google Cloud Data Loss Prevention (DLP)</span> </div> </div> @@ -1311,12 +1311,12 @@ - <a class="list-item" href="/docs/apache-airflow-providers-google/stable/operators/firebase/firestore.html"> + <a class="list-item" href="/docs/apache-airflow-providers-elasticsearch/stable/index.html"> <div class="card"> <div class="box-event box-event__integration"> - <span class="box-event__integration--name">Google Cloud Firestore</span> + <span class="box-event__integration--name">Elasticsearch</span> </div> </div> @@ -1324,12 +1324,12 @@ - <a class="list-item" href="/docs/apache-airflow-providers-microsoft-azure/stable/index.html"> + <a class="list-item" href="/docs/apache-airflow-providers-google/stable/operators/cloud/natural_language.html"> <div class="card"> <div class="box-event box-event__integration"> - <span class="box-event__integration--name">Microsoft Azure Container Instances</span> + <span class="box-event__integration--name">Google Cloud Natural Language</span> </div> </div> diff --git a/index.xml b/index.xml index fb17a146a..70b93dc30 100644 --- a/index.xml +++ b/index.xml @@ -12,6 +12,156 @@ + <item> + <title>Blog: Apache Airflow 2.3.0 is here</title> + <link>/blog/airflow-2.3.0/</link> + <pubDate>Sat, 30 Apr 2022 00:00:00 +0000</pubDate> + + <guid>/blog/airflow-2.3.0/</guid> + <description> + + + + +<p>Apache Airflow 2.3.0 contains over 700 commits since 2.2.0 and includes 50 new features, 99 improvements, 85 bug fixes, and several doc changes.</p> + +<p><strong>Details</strong>:</p> + +<p>📦 PyPI: <a href="https://pypi.org/project/apache-airflow/2.3.0/" target="_blank">https://pypi.org/project/apache-airflow/2.3.0/</a> <br /> +📚 Docs: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/" target="_blank">https://airflow.apache.org/docs/apache-airflow/2.3.0/</a> <br /> +🛠️ Release Notes: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/release_notes.html" target="_blank">https://airflow.apache.org/docs/apache-airflow/2.3.0/release_notes.html</a> <br /> +🐳 Docker Image: docker pull apache/airflow:2.3.0 <br /> +🚏 Constraints: <a href="https://github.com/apache/airflow/tree/constraints-2.3.0" target="_blank">https://github.com/apache/airflow/tree/constraints-2.3.0</a></p> + +<p>As the changelog is quite large, the following are some notable new features that shipped in this release.</p> + +<h2 id="dynamic-task-mapping-aip-42">Dynamic Task Mapping(AIP-42)</h2> + +<p>There&rsquo;s now first-class support for dynamic tasks in Airflow. What this means is that you can generate tasks dynamically at runtime. Much like using a <code>for</code> loop +to create a list of tasks, here you can create the same tasks without having to know the exact number of tasks ahead of time.</p> + +<p>You can have a <code>task</code> generate the list to iterate over, which is not possible with a <code>for</code> loop.</p> + +<p>Here is an example:</p> + +<pre><code class="language-python">@task +def make_list(): + # This can also be from an API call, checking a database, -- almost anything you like, as long as the + # resulting list/dictionary can be stored in the current XCom backend. + return [1, 2, {&quot;a&quot;: &quot;b&quot;}, &quot;str&quot;] + + +@task +def consumer(arg): + print(list(arg)) + + +with DAG(dag_id=&quot;dynamic-map&quot;, start_date=datetime(2022, 4, 2)) as dag: + consumer.expand(arg=make_list()) +</code></pre> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/concepts/dynamic-task-mapping.html" target="_blank">Dynamic Task Mapping</a></p> + +<h2 id="grid-view-replaces-tree-view">Grid View replaces Tree View</h2> + +<p>Grid view replaces tree view in Airflow 2.3.0.</p> + +<p><strong>Screenshots</strong>: +<img src="grid-view.png" alt="The new grid view" /></p> + +<h2 id="purge-history-from-metadata-database">Purge history from metadata database</h2> + +<p>Airflow 2.3.0 introduces a new <code>airflow db clean</code> command that can be used to purge old data from the metadata database.</p> + +<p>You would want to use this command if you want to reduce the size of the metadata database.</p> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/usage-cli.html#purge-history-from-metadata-database" target="_blank">Purge history from metadata database</a></p> + +<h2 id="localkubernetesexecutor">LocalKubernetesExecutor</h2> + +<p>There is a new executor named LocalKubernetesExecutor. This executor helps you run some tasks using LocalExecutor and run another set of tasks using the KubernetesExecutor in the same deployment based on the task&rsquo;s queue.</p> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/executor/local_kubernetes.html" target="_blank">LocalKubernetesExecutor</a></p> + +<h2 id="dagprocessormanager-as-standalone-process-aip-43">DagProcessorManager as standalone process (AIP-43)</h2> + +<p>As of 2.3.0, you can run the DagProcessorManager as a standalone process. Because DagProcessorManager runs user code, separating it from the scheduler process and running it as an independent process in a different host is a good idea.</p> + +<p>The <code>airflow dag-processor</code> cli command will start a new process that will run the DagProcessorManager in a separate process. Before you can run the DagProcessorManager as a standalone process, you need to set the <a href="https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html#standalone_dag_processor" target="_blank">[scheduler] standalone_dag_processor</a> to <code>True</code>.</p> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/cli-and-env-variables-ref.html#dag-processor" target="_blank">dag-processor CLI command</a></p> + +<h2 id="json-serialization-for-connections">JSON serialization for connections</h2> + +<p>You can now create connections using the <code>json</code> serialization format.</p> + +<pre><code class="language-bash">airflow connections add 'my_prod_db' \ + --conn-json '{ + &quot;conn_type&quot;: &quot;my-conn-type&quot;, + &quot;login&quot;: &quot;my-login&quot;, + &quot;password&quot;: &quot;my-password&quot;, + &quot;host&quot;: &quot;my-host&quot;, + &quot;port&quot;: 1234, + &quot;schema&quot;: &quot;my-schema&quot;, + &quot;extra&quot;: { + &quot;param1&quot;: &quot;val1&quot;, + &quot;param2&quot;: &quot;val2&quot; + } + }' +</code></pre> + +<p>You can also use <code>json</code> serialization format when setting the connection in environment variables.</p> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/howto/connection.html" target="_blank">JSON serialization for connections</a></p> + +<h2 id="airflow-db-downgrade-and-offline-generation-of-sql-scripts">Airflow <code>db downgrade</code> and Offline generation of SQL scripts</h2> + +<p>Airflow 2.3.0 introduced a new command <code>airflow db downgrade</code> that will downgrade the database to your chosen version.</p> + +<p>You can also generate the downgrade/upgrade SQL scripts for your database and manually run it against your database or just view the SQL queries that would be run by the downgrade/upgrade command.</p> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/usage-cli.html#downgrading-airflow" target="_blank">Airflow <code>db downgrade</code> and Offline generation of SQL scripts</a></p> + +<h2 id="reuse-of-decorated-tasks">Reuse of decorated tasks</h2> + +<p>You can now reuse decorated tasks across your dag files. A decorated task has an <code>override</code> method that allows you to override it&rsquo;s arguments.</p> + +<p>Here&rsquo;s an example:</p> + +<pre><code class="language-python">@task +def add_task(x, y): + print(f&quot;Task args: x={x}, y={y}&quot;) + return x + y + + +@dag(start_date=datetime(2022, 1, 1)) +def mydag(): + start = add_task.override(task_id=&quot;start&quot;)(1, 2) + for i in range(3): + start &gt;&gt; add_task.override(task_id=f&quot;add_start_{i}&quot;)(start, i) +</code></pre> + +<p>More information can be found here: <a href="https://airflow.apache.org/docs/apache-airflow/2.3.0/tutorial_taskflow_api.html#reusing-a-decorated-task" target="_blank">Reuse of decorated DAGs</a></p> + +<h2 id="other-small-features">Other small features</h2> + +<p>This isn’t a comprehensive list, but some noteworthy or interesting small features include:</p> + +<ul> +<li>Support different timeout value for dag file parsing</li> +<li><code>airflow dags reserialize</code> command to reserialize dags</li> +<li>Events Timetable</li> +<li>SmoothOperator - Operator that does literally nothing except logging a YouTube link to +Sade&rsquo;s &ldquo;Smooth Operator&rdquo;. Enjoy!</li> +</ul> + +<h2 id="contributors">Contributors</h2> + +<p>Thanks to everyone who contributed to this release: Ash Berlin-Taylor, Brent Bovenzi, Daniel Standish, Elad, Ephraim Anierobi, Jarek Potiuk, Jed Cunningham, Josh Fell, Kamil Breguła, Kanthi, Kaxil Naik, Khalid Mammadov, Malthe Borch, Ping Zhang, Tzu-ping Chung and many others who keep making Airflow better for everyone.</p> + + </description> + </item> + <item> <title>Blog: What's new in Apache Airflow 2.2.0</title> <link>/blog/airflow-2.2.0/</link> diff --git a/search/index.html b/search/index.html index c00bfdfbe..b2256d6e5 100644 --- a/search/index.html +++ b/search/index.html @@ -35,12 +35,12 @@ <meta property="og:url" content="/search/" /> <meta property="og:image" content="/images/feature-image.png" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Search Results"> <meta itemprop="description" content=""> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="0"> diff --git a/sitemap.xml b/sitemap.xml index e8441858d..d6201beb7 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -4,157 +4,162 @@ <url> <loc>/docs/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> + </url> + + <url> + <loc>/blog/airflow-2.3.0/</loc> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/tags/release/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/tags/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/airflow-2.2.0/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/tags/airflow-summit/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/airflow_summit_2021/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/tags/community/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/airflow-survey-2020/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/tags/survey/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/tags/users/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/airflow-two-point-oh-is-here/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/experience-with-airflow-as-an-outreachy-intern/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/airflow-1.10.12/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/apache-airflow-for-newcomers/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/announcements/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/implementing-stable-api-for-apache-airflow/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/tags/rest-api/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/airflow-1.10.10/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/airflow-1.10.8-1.10.9/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/tags/documentation/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/airflow-survey/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/announcing-new-website/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/tags/development/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/documenting-using-local-development-environments/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/its-a-breeze-to-develop-apache-airflow/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/use-cases/adobe/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/use-cases/adyen/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/use-cases/big-fish-games/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/blog/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> @@ -163,77 +168,77 @@ <url> <loc>/community/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/use-cases/dish/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/ecosystem/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/use-cases/experity/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/install/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/meetups/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/use-cases/onefootball/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/use-cases/plarium-krasnodar/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/privacy-notice/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/roadmap/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/search/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/use-cases/seniorlink/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/use-cases/sift/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> <url> <loc>/use-cases/</loc> - <lastmod>2022-04-30T23:44:13+01:00</lastmod> + <lastmod>2022-05-01T02:15:50+02:00</lastmod> </url> </urlset> \ No newline at end of file diff --git a/tags/index.html b/tags/index.html index 6cceaad3c..7e0f70b90 100644 --- a/tags/index.html +++ b/tags/index.html @@ -37,7 +37,7 @@ <meta property="og:image" content="/images/feature-image.png" /> -<meta property="og:updated_time" content="2021-10-11T00:00:00+00:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="og:updated_time" content="2022-04-30T00:00:00+00:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Tags"> <meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows."> diff --git a/tags/index.xml b/tags/index.xml index 779b1e12e..959674e76 100644 --- a/tags/index.xml +++ b/tags/index.xml @@ -4,7 +4,7 @@ <link>/tags/</link> <description>Recent content in Tags on Apache Airflow</description> <generator>Hugo -- gohugo.io</generator> - <lastBuildDate>Mon, 11 Oct 2021 00:00:00 +0000</lastBuildDate> + <lastBuildDate>Sat, 30 Apr 2022 00:00:00 +0000</lastBuildDate> <atom:link href="/tags/index.xml" rel="self" type="application/rss+xml" /> diff --git a/use-cases/adobe/index.html b/use-cases/adobe/index.html index b7b944801..d1c699f32 100644 --- a/use-cases/adobe/index.html +++ b/use-cases/adobe/index.html @@ -35,12 +35,12 @@ <meta property="og:url" content="/use-cases/adobe/" /> <meta property="og:image" content="/images/feature-image.png" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Adobe"> <meta itemprop="description" content="What was the problem? Modern big data platforms need sophisticated data pipelines connecting to many backend services enabling complex workflows. These workflows need to be deployed, monitored, and run either on regular schedules or triggered by external events. Adobe Experience Platform component services architected and built an orchestration service to enable their users to author, schedule, and monitor complex hierarchical (including sequential a [...] -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="251"> diff --git a/use-cases/adyen/index.html b/use-cases/adyen/index.html index e6ade97c6..b7461a413 100644 --- a/use-cases/adyen/index.html +++ b/use-cases/adyen/index.html @@ -35,12 +35,12 @@ <meta property="og:url" content="/use-cases/adyen/" /> <meta property="og:image" content="/images/feature-image.png" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Adyen"> <meta itemprop="description" content="What was the problem? Many years ago we started out with our own orchestration framework. Due to all the required custom functionality it made sense at the time. However, quickly we realized creating an orchestration tool is not to be underestimated. With the quickly increasing number of users and teams, time spent on fixing issues increased, severely limiting development speed. Furthermore, due to it not being open source, we constantly had to make [...] -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="405"> diff --git a/use-cases/big-fish-games/index.html b/use-cases/big-fish-games/index.html index 376bc1b3e..67740e7cc 100644 --- a/use-cases/big-fish-games/index.html +++ b/use-cases/big-fish-games/index.html @@ -35,12 +35,12 @@ <meta property="og:url" content="/use-cases/big-fish-games/" /> <meta property="og:image" content="/images/feature-image.png" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Big Fish Games"> <meta itemprop="description" content="What was the problem? The main challenge is the lack of standardized ETL workflow orchestration tools. PowerShell and Python-based ETL frameworks built in-house are currently used for scheduling and running analytical workloads. However, there is no web UI through which we can monitor these workflows and it requires additional effort to maintain this framework. These scheduled jobs based on external dependencies are not well suited to modern Big Data [...] -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="336"> diff --git a/use-cases/dish/index.html b/use-cases/dish/index.html index 200e7f7de..bd32d038a 100644 --- a/use-cases/dish/index.html +++ b/use-cases/dish/index.html @@ -35,12 +35,12 @@ <meta property="og:url" content="/use-cases/dish/" /> <meta property="og:image" content="/images/feature-image.png" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Dish"> <meta itemprop="description" content="What was the problem? We faced increasing complexity managing lengthy crontabs with scheduling being an issue, this required carefully planning timing due to resource constraints, usage patterns, and especially custom code needed for retry logic. In the last case, having to verify success of previous jobs and/or steps prior to running the next. Furthermore, time to results is important, but we were increasingly relying on buffers for processing, wher [...] -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="248"> diff --git a/use-cases/experity/index.html b/use-cases/experity/index.html index 927eeab95..abaf164a5 100644 --- a/use-cases/experity/index.html +++ b/use-cases/experity/index.html @@ -36,13 +36,13 @@ How did Apache Airflow help to solve this problem? Ultimately we decided flexibl <meta property="og:url" content="/use-cases/experity/" /> <meta property="og:image" content="/images/feature-image.png" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Experity"> <meta itemprop="description" content="What was the problem? We had to deploy our complex, flagship app to multiple nodes in multiple ways. This required tasks to communicate across Windows nodes and coordinate timing perfectly. We did not want to buy an expensive enterprise scheduling tool and needed ultimate flexibility. How did Apache Airflow help to solve this problem? Ultimately we decided flexible, multi-node, DAG capable tooling was key and airflow was one of the few tools that fit that bill."> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="191"> diff --git a/use-cases/onefootball/index.html b/use-cases/onefootball/index.html index 5b80c064f..a55228a40 100644 --- a/use-cases/onefootball/index.html +++ b/use-cases/onefootball/index.html @@ -36,13 +36,13 @@ On top of that, new data tools appear each month: third party data sources, clou <meta property="og:url" content="/use-cases/onefootball/" /> <meta property="og:image" content="/images/feature-image.png" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Onefootball"> <meta itemprop="description" content="What was the problem? With millions of daily active users, managing the complexity of data engineering at Onefootball is a constant challenge. Lengthy crontabs, multiplication of custom API clients, erosion of confidence in the analytics served, increasing heroism (“only one person can solve this issue”). Those are the challenges that most teams face unless they consciously invest in their tools and processes. On top of that, new data tools appear each month: third party data sources, cloud providers solutions, different storage technologies… Managing all those integrations is costly and brittle, especially for small data engineering teams that are trying to do more with less."> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="294"> diff --git a/use-cases/plarium-krasnodar/index.html b/use-cases/plarium-krasnodar/index.html index 60ca6e577..093509b9d 100644 --- a/use-cases/plarium-krasnodar/index.html +++ b/use-cases/plarium-krasnodar/index.html @@ -35,12 +35,12 @@ <meta property="og:url" content="/use-cases/plarium-krasnodar/" /> <meta property="og:image" content="/images/feature-image.png" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Plarium Krasnodar"> <meta itemprop="description" content="What was the problem? Our Research & Development department carries out various experiments, and in all of them, we need to create workflow orchestrations for solving tasks in game dev. Previously, we didn’t have any suitable tools with a sufficient number of built-in functions, and we had to orchestrate processes manually and entirely from scratch every time. This led to difficulties with dependencies and monitoring when building complex w [...] -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="257"> diff --git a/use-cases/seniorlink/index.html b/use-cases/seniorlink/index.html index 89d8b925e..bc22889b9 100644 --- a/use-cases/seniorlink/index.html +++ b/use-cases/seniorlink/index.html @@ -36,13 +36,13 @@ We had built a robust stack of batch processes to deliver value to the business, <meta property="og:url" content="/use-cases/seniorlink/" /> <meta property="og:image" content="/images/feature-image.png" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Seniorlink"> <meta itemprop="description" content="What was the problem? Here at Seniorlink, we provide services, support, and technology that engages family caregivers. One of our focuses is using data to bolster our knowledge and improve the experience of our users. Like many looking to build an effective data stack, we adopted a Python, Spark, Redshift, and Tableau core toolset. We had built a robust stack of batch processes to deliver value to the business, deploying these data services in AWS using a mixture of EMR, ECS, Lambda, and EC2."> -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="400"> diff --git a/use-cases/sift/index.html b/use-cases/sift/index.html index 766c9a5c1..6d08c73ed 100644 --- a/use-cases/sift/index.html +++ b/use-cases/sift/index.html @@ -35,12 +35,12 @@ <meta property="og:url" content="/use-cases/sift/" /> <meta property="og:image" content="/images/feature-image.png" /> -<meta property="article:modified_time" content="2022-04-30T23:44:13+01:00" /><meta property="og:site_name" content="Apache Airflow" /> +<meta property="article:modified_time" content="2022-05-01T02:15:50+02:00" /><meta property="og:site_name" content="Apache Airflow" /> <meta itemprop="name" content="Sift"> <meta itemprop="description" content="What was the problem? At Sift, we’re constantly training machine learning models that feed into the core of Sift’s Digital Trust & Safety platform. The platform gives our customers a way to discern suspicious online behavior from trustworthy behavior, allowing our customers to protect their online transactions, maintain the integrity of their content platforms, and keep their users’ accounts secure. To make this possible, we’ve built model traini [...] -<meta itemprop="dateModified" content="2022-04-30T23:44:13+01:00" /> +<meta itemprop="dateModified" content="2022-05-01T02:15:50+02:00" /> <meta itemprop="wordCount" content="641">
