Comments (6)
The more I think about this the more I think trying to make SessionState
a container that doesn't have all the optional features (like parquet support) by default makes sense
So like
let session_state = SessionState::new();
// no table providers, etc
// install standard built in table providers
SessionContex::install_built_in(&mut session_state);
// now session_state has them here
from arrow-datafusion.
I made #11183 to start breaking apart the API and implementation -- there is still a ways to go
from arrow-datafusion.
@alamb I took a stab at moving parquet functionality into a datafusion-parquet crate (#11188) , and I ran into similar challenges you highlight here. I think to accomplish these goals core
will need to be refactored into a number of different crates to avoid circular dependencies and allow core to still offer a batteries included experience.
from arrow-datafusion.
The more I think about this the more I think trying to make
SessionState
a container that doesn't have all the optional features (like parquet support) by default makes senseSo like
let session_state = SessionState::new(); // no table providers, etc // install standard built in table providers SessionContex::install_built_in(&mut session_state); // now session_state has them here
I filed #11320 to track this idea
from arrow-datafusion.
I looked into this --
One of the major challenges is that SessionState's
constructor basically installs the "pre-provided" functionality (like data sources, etc
datafusion/datafusion/core/src/execution/session_state.rs
Lines 190 to 295 in 78055fe
One way to handle this would be to allow constructing SessionState with the minimal built in features, and have a function in SessionContext
like SessionContext::register_built_ins
that would register things like listing table, information schema, etc.
That way it would still be easy to use DataFusion with a minimal SessionState but also easily register all the built in extensions 🤔
from arrow-datafusion.
I think to accomplish these goals core will need to be refactored into a number of different crates to avoid circular dependencies and allow core to still offer a batteries included experience.
I agree with this entirely
The center of the knot is SessionState I think -- figuring out how to get that out of the core is likely key to breaking things up reasonably
from arrow-datafusion.
Related Issues (20)
- `strpos` (and `postion` and `instr`) throw a cast error when called with arguments of different types
- Panic in `NTH_VALUE()` window function (SQLancer) HOT 1
- Add min_by and max_by aggregate functions HOT 1
- A simple count() query caused Internal Error in PhysicalOptimizer (SQLancer) HOT 1
- Add additional regexp function `regexp_count()`
- Use GenericStringBuilder to improve performance of UDF split_part
- Document "how to read an explain plan" HOT 11
- Thread panics in SpawnedTask during shutdown. HOT 6
- SMJ full join produces a null join row for a buffered row even the buffered row is joined with streamed row and passes join filter
- Implement GroupsAccumulator for stddev and var aggregaters
- Cannot infer common string type for string concat operation Dictionary(Int32, Utf8) || Dictionary(Int32, Utf8) HOT 2
- Bug detecting datatype in VALUES tuples HOT 1
- Handle downstream impacts to union's behavioral changes. HOT 6
- Aggregation fuzz testing HOT 4
- Systematic fuzz testing for parquet predicate pushdown HOT 1
- Support protobuf serialization for `ScalarValue::Utf8View` and `ScalarValue::BinaryView` HOT 1
- Support substrait serialization for `ScalarValue::Utf8View` and `ScalarValue::BinaryView` HOT 3
- Add config flag to convert `Utf8View`/`BinaryView` --> `Utf8` / `Binary` at output HOT 4
- Add the possibility to work with plan clones directly in `inline_table_scan` HOT 3
- Parquet statistics missing when reading `Utf8` as `Utf8View`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from arrow-datafusion.