arrow2
case-studies
Our great sponsors
arrow2 | case-studies | |
---|---|---|
25 | 11 | |
1,071 | 1,601 | |
- | - | |
0.0 | 3.8 | |
2 months ago | about 1 month ago | |
Rust | Rust | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
arrow2
-
Polars: Company Formation Announcement
One of the interesting components of Polars that I've been watching is the use of the Apache Arrow memory format, which is a standard layout for data in memory that enables processing (querying, iterating, calculating, etc) in a language agnostic way, in particular without having to copy/convert it into the local object format first. This enables cross-language data access by mmaping or transferring a single buffer, with zero [de]serialization overhead.
For some history, there's has been a bit of contention between the official arrow-rs implementation and the arrow2 implementation created by the polars team which includes some extra features that they find important. I think the current status is that everyone agrees that having two crates that implement the same standard is not ideal, and they are working to port any necessary features to the arrow-rs crate and plan on eventually switching to it and deprecating arrow2. But that's not easy.
https://github.com/apache/arrow-rs/issues/1176
https://github.com/jorgecarleitao/arrow2/pull/1476
-
Data Engineering with Rust
https://github.com/jorgecarleitao/arrow2 https://github.com/apache/arrow-datafusion https://github.com/apache/arrow-ballista https://github.com/pola-rs/polars https://github.com/duckdb/duckdb
-
Polars[Query Engine/ DataFrame] 0.28.0 released :)
Currently datafusion and polars aren't directly operable iirc because they use different underlying arrows implementations, but there seems to be work being done on that here https://github.com/jorgecarleitao/arrow2/issues/1429
- Arrow2 0.15 has been released. Happy festivities everyone =)
-
Rust is showing a lot of promise in the DataFrame / tabular data space
[arrow2](https://github.com/jorgecarleitao/arrow2) and [parquet2](https://github.com/jorgecarleitao/parquet2) are great foundational libraries for and DataFrame libs in Rust.
-
Matano - Open source security lake built with Arrow2 + Rust
[1] https://github.com/jorgecarleitao/arrow2
-
Polars 0.23.0 released
In lockstep with arrow2's 0.13 release, we have published polars 0.23.0.
- Arrow2 v0.13.0, now with support to read Apache ORC and COW semantics!
-
::lending-iterator — Lending/streaming Iterators on Stable Rust (and a pinch of HKT)
This is so freaking life-saving! - we have been using StreamingIterator and FallibleStreamingIterator in libraries (arrow2 and parquet2) and the existing landscape is quite confusing for new users!
-
Mssql :(
arrow2 has support for mssql via ODBC (which microsoft has first class support to). Here are the integration tests we have (both read and write) against mssql specifically.
case-studies
-
::lending-iterator — Lending/streaming Iterators on Stable Rust (and a pinch of HKT)
Luckily there is a workaround to emulate such a definition, which dtolnay discovered and explained here: https://github.com/dtolnay/case-studies/tree/b9802f6df8dc8e54970b83fb9af6df923b46abf5/unit-type-parameters.
-
Hey Rustaceans! Got a question? Ask here! (17/2022)!
I think they are talking about this one trick which the devs don't want you to know about. Note that while it looks like specialization, it works only in a few very limited cases and is quite fragile, so it's a hack, not a substitute for the real feature.
-
Any good resources for learning Rust macros?
Also I suggest his case studies repo since you are looking at what is possible: https://github.com/dtolnay/case-studies
-
What are some creative/advanced uses of macro_rules?
/u/dtolnay has a great case studies repository.
-
Hey Rustaceans! Got an easy question? Ask here (29/2021)!
Once you have the basics down, read dtolnay's case studies. They show how to do advanced stuff with easy macros.
-
println use `Debug` if argument is not `Display`
If you were writing your own println macro, you might be able to get away with this kind of hack: https://github.com/dtolnay/case-studies/blob/master/autoref-specialization/README.md
-
Hey Rustaceans! Got an easy question? Ask here (11/2021)!
You can use "Autoref-based stable specialization" or use/mimic the impls crate.
-
Why I gave up on Rust (for now)
With a subset of specialization likely riding the trains soon and a workaround available, why would you give up?
-
Hey Rustaceans! Got an easy question? Ask here (10/2021)!
this works since values and types are in different namespaces (see: Rusts Universes or dtolnay's Case Study about "Unit struct with type parameters")
-
Hey Rustaceans! Got an easy question? Ask here (53/2020)!
To do this with traits you would need specialization but since you are using macros you should be able to use "Autoref-based stable specialization". Here is a playground which uses the latter approach to implement the wanted macro without using any nightly features.
What are some alternatives?
polars - Dataframes powered by a multithreaded, vectorized query engine, written in Rust
rocket-auth-login - Authentication and login processing for Rust's Rocket web framework. Demonstrates a working example of how to authenticate users and process login as well as how to handle logging out.
arrow-datafusion - Apache DataFusion SQL Query Engine
mini-redis - Incomplete Redis client and server implementation using Tokio - for learning purposes only
db-benchmark - reproducible benchmark of database-like ops
xargo - The sysroot manager that lets you build and customize `std`
arrow-rs - Official Rust implementation of Apache Arrow
proc-macro-crate - `$crate` in procedural macros.
pyodide - Pyodide is a Python distribution for the browser and Node.js based on WebAssembly
parquet2 - Fastest and safest Rust implementation of parquet. `unsafe` free. Integration-tested against pyarrow
explorer - Series (one-dimensional) and dataframes (two-dimensional) for fast and elegant data exploration in Elixir
cargo-expand - Subcommand to show result of macro expansion