You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by GitBox <gi...@apache.org> on 2023/01/10 22:53:36 UTC

[GitHub] [arrow-site] alamb commented on a diff in pull request #294: [WEBSITE] DataFusion 16.0.0 blog post

alamb commented on code in PR #294:
URL: https://github.com/apache/arrow-site/pull/294#discussion_r1066423131


##########
_posts/2023-01-07-datafusion-16.0.0.md:
##########
@@ -0,0 +1,308 @@
+---
+layout: post
+title: "Apache Arrow DataFusion 16.0.0 Project Update"
+date: "2023-01-07 00:00:00"
+author: pmc
+categories: [release]
+---
+<!--
+{% comment %}
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to you under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endcomment %}
+-->
+
+# Introduction
+
+[DataFusion](https://arrow.apache.org/datafusion/) is an extensible
+query execution framework, written in [Rust](https://www.rust-lang.org/),
+that uses [Apache Arrow](https://arrow.apache.org) as its
+in-memory format. It is targeted primarily at developers creating data
+intensive analytics, and offers mature
+[SQL support](https://arrow.apache.org/datafusion/user-guide/sql/index.html),
+a DataFrame API, and many extension points.
+
+Systems based on DataFusion perform very well in benchmarks,
+especially considering they operate directly on parquet files rather
+than first loading into a specialized format.  Some recent highlights
+include [clickbench](https://benchmark.clickhouse.com/) and the
+[Cloudfuse.io standalone query
+engines](https://www.cloudfuse.io/dashboards/standalone-engines) page.
+
+DataFusion is also part of a longer term trend, articulated clearly by
+[Andy Pavlo](http://www.cs.cmu.edu/~pavlo/) in his [2022 Databases
+Retrospective](https://ottertune.com/blog/2022-databases-retrospective/).
+Database frameworks are proliferating and it is likely that all OLAP
+DBMSs and other data heavy applications, such as machine learning,
+will **require** a vectorized, highly performant query engine in the next
+5 years to remain relevant.  The only practical way to make such
+technology so widely available without many millions of dollars of
+investment is though open source engine such as DataFusion or
+[Velox](https://github.com/facebookincubator/velox).
+
+The rest of this post describes the improvements made to DataFusion
+over the last three months and some hints of where we are heading.
+
+
+## Community Growth
+
+We again saw significant growth in the DataFusion community since [our last update](https://arrow.apache.org/blog/2022/10/25/datafusion-13.0.0/). There are some interesting metrics on [OSSRank](https://ossrank.com/p/1573-apache-arrow-datafusion).
+
+The DataFusion 16.0.0 release consists of 524 PRs from 70 distinct contributors, not including all the work that goes into dependencies such as [arrow](https://crates.io/crates/arrow), [parquet](https://crates.io/crates/parquet), and [object_store](https://crates.io/crates/object_store), that much of the same community helps support. Thank you all for your help
+
+<!--
+git log --pretty=oneline 13.0.0..16.0.0-rc1 . | wc -l
+524
+
+    $ git shortlog -sn 13.0.0..16.0.0-rc1 . | wc -l
+70
+-->
+Several [new systems based on DataFusion](https://github.com/apache/arrow-datafusion#known-uses) were recently added:
+
+* [Greptime DB](https://github.com/GreptimeTeam/greptimedb)
+* [Synnada](https://synnada.ai/)
+* [PRQL](https://github.com/PRQL/prql-query)
+- [Parseable](https://github.com/parseablehq/parseable)
+* [SeaFowl](https://github.com/splitgraph/seafowl)
+
+
+## Performance 🚀
+
+Performance and efficiency are core values for
+DataFusion. While there is still a gap between DataFusion and the best of
+breed, tightly integrated systems such as [DuckDB](https://duckdb.org)
+and [Polars](https://www.pola.rs/), DataFusion is
+closing the gap quickly. Performance highlights from the last three
+months:
+
+* Up to 30% Faster Sorting and Merging using the new [Row Format](https://arrow.apache.org/blog/2022/11/07/multi-column-sorts-in-arrow-rust-part-1/)
+* [Advanced predicate pushdown](https://arrow.apache.org/blog/2022/12/26/querying-parquet-with-millisecond-latency/), directly on parquet, directly from object storage, enabling sub millisecond filtering. <!-- Andrew nots: we should really get this turned on by default -->
+* `70%` faster `IN` expressions evaluation ([#4057])
+* Sort and partition aware optimizations ([#3969] and  [#4691])
+* Filter selectivity analysis ([#3868])
+
+## Runtime Resource Limits
+
+Previously, DataFusion could potentially use unbounded amounts of memory for certain queries that included Sorts, Grouping or Joins.
+
+In version 16.0.0, it is possible to limit DataFusion's memory usage for Sorting and Grouping. We are looking for help adding similar limiting for Joins as well as expanding our algorithms to optionally spill to secondary storage. See [#3941] for more detail.
+
+
+## SQL Window Functions
+
+[SQL Window Functions](https://en.wikipedia.org/wiki/Window_function_(SQL)) are useful for a variety of analysis and DataFusion's implementation support expanded significantly:
+
+- Custom window frames such as `... OVER (ORDER BY ... RANGE BETWEEN 0.2 PRECEDING AND 0.2 FOLLOWING)`
+- Unbounded window frames such as `... OVER (ORDER BY ... RANGE UNBOUNDED ROWS PRECEDING)`
+- Support for the `NTILE` window function ([#4676])
+- Support for `GROUPS` mode ([#4155])
+
+
+# Improved Joins
+
+Joins are often the most complicated operations to handle well in
+analytics systems and DataFusion 16.0.0 offers significant improvements
+such as
+
+- Cost based optimizer (CBO) automatically reorders join evaluations, selects algorithms (Merge / Hash), and pick build side based on available statistics and join type (`INNER`, `LEFT`, etc) ([#4219])
+- Fast non `column=column` equijoins such as `JOIN ON a.x + 5 = b.y`
+- Better performance on non-equijoins ([#4562]) <!-- TODO is this a good thing to mention as any time this is usd the query is going to go slow or the data size is small -->
+
+# Streaming Execution
+
+One emerging use case for Datafusion is as a foundation for
+streaming-first data platforms. An important prerequisite
+is support for incremental execution if queries that can be computed

Review Comment:
   ```suggestion
   is support for incremental execution for queries that can be computed
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org