Repository navigation
DataFusion weekly project plan (Andrew Lamb) - April 1, 2024聽#9899
Description
Follow on to #9796
It would be great for other contributors to DataFusion who plan non trivial work could try to make them visible somehow as well 馃檹 (feel free to copy / modify the format)
My Highlights from Last Week
-
37.0.0 release is looking 馃殌 Release DataFusion 37.0.0聽#9682
-
The community made great progress on unparsing expressions: Complete support for
Expr --> String聽#9726 -
"extract scalar functions from the core" continues at good pace way [Epic] Port BuiltInFunctons to
datafusion-functions-*crates聽#9285 (thanks @jayzhan211 and @erenavsarogullari and @Omega359 for keeping the 馃殝 running here) -
Submitted SIGMOD final draft : Finalize SIGMOD 2024 paper ~(if accepted)~聽#8373
-
Ran our first in person meetup (it would be great if others wanted to organize meetups in other geographies): UPDATE: VENUE IS FULL Invitation: Mar 25, 2024 DataFusion meetup before the DataCouncil March 2024 in Austin TX聽#8522
-
We have submitted the proposal for a new top level project for DataFusion to the ASF board: [DISCUSS] Move Apache Arrow Datafusion to a new top level Apache project聽#6475 (comment)
My (personal) goals
1000 projects are built using DataFusion 馃搱
My (personal) plans for this week
- Make at least two more PRs for subtasks [EPIC] Stop copying
LogicalPlanduring OptimizerPasses聽#9637 - Catchup on review backlog
- Writeup ideas on custom / user defined indexes (I mentioned this to @westonpace in person but haven't written it down yet)
Project Queue (list of future projects)
Projects I plan to help actively help review / plan
- [EPIC] Implement
StringViewArrayandBinaryViewArray聽arrow-rs#5374 - [Epic] Port BuiltInFunctons to
datafusion-functions-*crates聽#9285 - [EPIC] Support converting Exprs and LogicalPlans --> SQL Strings聽#9494
- Supporting using parallel parquet writer outside of Datafusion query execution聽#9493 with @wiedld
Algorithm for (my) prioritizing PR reviews
Note there are many committers who can and do review and merge PRs, so this is not the priorities of the project as a whole, just the approximate algorithm I use to prioritize my own time
Priority:
- Bug fixes (where something is just incorrect), especially regressions (where it used to work and now does not)
- Improvements directly related to features needed for InfluxDB (my employer)
- Documentation and test improvements (I view these as very strategically important)
- PRs that I think are strategically important
- Other new features / additions to functionality (note this is the lowest)
The top strategically important projects in my head are:
- Anything that makes it easier to use DataFusion as a user (docs, examples, better APIs, etc), including Getting started guide for new users (who want to use DataFusion in their project)
- Anything that improves DataFusion's quality such as bug fixes, and improved / expanded tests, etc
- Making function packages modular and easier to mix/match: [EPIC] Unify Function Interface (remove
BuiltInScalarFunction)聽#8045
Thus, if you are interested in contributing to DataFusion and are interested in a fast turn around time I would recommend looking into bug fixes / test improvements / documentation or the projects named above
If you propose adding new functionality, the review cycle will likely be longer. You can make it a shorter cycle by looking at the comments on other recent PRs and following the same model (e.g. ensure there are tests in sqllogictest for example, the CI passes, includes documentation, etc)
Background
The idea of this ticket is make my plans for DataFusion visible, largely for my own personal organizational needs, but also to:
- Communicate / coordinate in the community
- Help provide an interesting summary of what is happening in DataFusion this week
Activity
matthewmturner commentedon Apr 1, 2024
Really interested to see your thoughts on custom indices, its something were currently working on to improve performance of listing table.
alamb commentedon Apr 1, 2024
Review queue
Arrow
StringViewandBinaryViewin parquet (part 2)聽arrow-rs#5557 (review)0.4.34聽arrow-rs#5578try_filter_leavesto propagate error from filter closure聽arrow-rs#5575 (review)DataFusion
AggregateUDFImpl::accumulatorsignature, support ORDER BY for UDAFs聽#9874alamb commentedon Apr 1, 2024
Arrow:
StringViewandBinaryViewin parquet (part 2)聽arrow-rs#5557DataFusion
Arc<str>instead ofCow<&'a>in the analyzer聽#9824CREATE EXTERNAL TABLEif table already exists.聽#9912seddonm1 commentedon Apr 3, 2024
Sorry for the location and possibly dumb question, but shouldn't all functions be exported here: https://github.com/apache/arrow-datafusion/blob/main/datafusion/functions/src/unicode/mod.rs#L138
I am probably using the library incorrectly but (for example)
LENGTHwill not be registered by the central context here: https://github.com/apache/arrow-datafusion/blob/2f550032140d42d1ee6d8ed86f7790766fa7302e/datafusion/core/src/execution/context/mod.rs#L1450alamb commentedon Apr 3, 2024
Hi @seddonm1 馃憢
Yes that is the intention
I think
lengthis registered as an alias ofcharacter_lengthseddonm1 commentedon Apr 3, 2024
Thanks @alamb . If you look at the first link I cannot see anywhere where the
lengthalias is actually registered. My queries which previously worked started failing after this update. I haven't investigated if more functions have also not been registered.Omega359 commentedon Apr 4, 2024
aliases for character_length are defined in https://github.com/apache/arrow-datafusion/blob/4bd7c137e0e205140e273a7c25824c94b457c660/datafusion/functions/src/unicode/character_length.rs#L45 and is used during udf registration @ https://github.com/apache/arrow-datafusion/blob/4bd7c137e0e205140e273a7c25824c94b457c660/datafusion/core/src/execution/context/mod.rs#L2137
alamb commentedon Apr 4, 2024
Arrow:
StringViewandBinaryViewin parquet (part 2)聽arrow-rs#5557DataFusion
AggregateExpr,PhysicalExprandPhysicalSortExprto physical-expr-core聽#9926 (review)cbrt,cos,cosh,degreestodatafusion-functions聽#9938OwnedTableReferenceandOwnedSchemaReference聽#9933COUNT(1): Change the sentinel value's type for COUNT(*) to Int64聽#9944alamb commentedon Apr 4, 2024
DataFusion 37.0.0 is released: #9682 馃尞
seddonm1 commentedon Apr 4, 2024
Thanks @Omega359 . I was thrown as the aliases are not registered here https://github.com/apache/arrow-datafusion/blob/3ae029988754c3fd3eb000abd4b76e643b9cbc7b/datafusion/execution/src/registry.rs#L174
alamb commentedon Apr 5, 2024
BTW something cool for next week -- @milenkovicm WASM UDFs #9326 / #9326 (comment) / https://github.com/milenkovicm/wasaffi
alamb commentedon Apr 5, 2024
In case anyone else is following along, here are some items related to indexing:
ParquetExec(enable custom indexes, finer grained pushdown)聽#9929While I had this on the brain, @matthewmturner I also filed #9964 as I suspect others will be interested in helping make ListingTable faster too
alamb commentedon Apr 5, 2024
Reviews:
@jayzhan211 is starting to pull aggregate functions out of the core: #9960
alamb commentedon Apr 8, 2024
Next week #10002