Live data from Hacker News

Building a streaming SQL engine with Arrow and DataFusion

arroyo.dev

21–30 of 32 posts

Re: Building a streaming SQL engine with Arrow and DataFusion

#21
Arrow has been the most exciting piece of technology I've seen in the last few years. The ecosystem being built around it is amazing, and it's standardizing a bunch of disparate data ecosystems.

The arrow ecosystem nets you a great compute implementation, storage (parquet), and a great RPC framework (arrow flight).

Re: Building a streaming SQL engine with Arrow and DataFusion

#22

Arrow has been the most exciting piece of technology I've seen in the last few years. The ecosystem being built around it is amazing, and it's standardizing a bunch of disparate data ecosystems. The arrow ecosystem nets you a great compute implementation, storage (parquet), and a great RPC framework (arrow flight).

I only really know Arrow from Feather and from Pandas 2.0+. Can you recommend where I could learn more?

Re: Building a streaming SQL engine with Arrow and DataFusion

#23

How does it compare to DuckDB, which is an Arrow-compatible OLAP SQL database, easy to embed and just plain awesome?

This is a different use case - DuckDB is large queries over your entire dataset; Arroyo is continuous queries executing over a live data stream.

So if you have a stream of sensor data from a bunch of IoT devices, you might use Arroyo to run “live” queries over the flowing data, and you might use DuckDB to do analytical queries over archive data

Although they are both hammers to whack nails with I guess, so a lot of use cases likely work well to solve with both systems

Re: Building a streaming SQL engine with Arrow and DataFusion

#24
Nice work on the performance boost :).

How does it compare with things like: 1. https://github.com/bytewax/bytewax 2. https://github.com/pathwaycom/pathway

I recently read this article (https://materializedview.io/p/from-samza-to-flink-a-decade-o...) about Flink and it commented on Flink grew to fit all of these different use cases (applications, analytics and ETL) with disjoint requirements that Confluent built kafka-streams, ksql and connector for. What of those would you say Arroyo is better suited for?

Re: Building a streaming SQL engine with Arrow and DataFusion

#25

How does it compare to DuckDB, which is an Arrow-compatible OLAP SQL database, easy to embed and just plain awesome?

This is a different use case - DuckDB is large queries over your entire dataset; Arroyo is continuous queries executing over a live data stream. So if you have a stream of sensor data from a bunch of IoT devices, you might use Arroyo to run “live” queries over the flowing data, and you might use DuckDB to do analytical queries over archive data Although they are both hammers to whack nails with I guess, so a lot of u…

DuckDB processes data lazily, and can easily be integrated with custom synthetic relations.

I guess it's still not really designed to work well with infinite relations, but then again neither is SQL really.

Re: Building a streaming SQL engine with Arrow and DataFusion

#26

Earlier quoted context omitted.

This is a different use case - DuckDB is large queries over your entire dataset; Arroyo is continuous queries executing over a live data stream. So if you have a stream of sensor data from a bunch of IoT devices, you might use Arroyo to run “live” queries over the flowing data, and you might use DuckDB to do analytical queries over archive data Although they are both hammers to whack nails with I guess, so a lot of u…

DuckDB processes data lazily, and can easily be integrated with custom synthetic relations. I guess it's still not really designed to work well with infinite relations, but then again neither is SQL really.

Maybe I’ve not used DuckDB enough but: How would you set it up to consume, say, a Kafka stream, apply some transformations or windowed aggregates and continuously output the result?

In my experience DuckDB is a batch tool, vs this thing which is a continuous stream tool

Re: Building a streaming SQL engine with Arrow and DataFusion

#27
post #22

Arrow has been the most exciting piece of technology I've seen in the last few years. The ecosystem being built around it is amazing, and it's standardizing a bunch of disparate data ecosystems. The arrow ecosystem nets you a great compute implementation, storage (parquet), and a great RPC framework (arrow flight).

I only really know Arrow from Feather and from Pandas 2.0+. Can you recommend where I could learn more?

The DataFusion repo has a lot of good write up’s, as does Andy Grove’s blog - he started datafusion before it was donated to Apache.

Re: Building a streaming SQL engine with Arrow and DataFusion

#29

Earlier quoted context omitted.

DuckDB processes data lazily, and can easily be integrated with custom synthetic relations. I guess it's still not really designed to work well with infinite relations, but then again neither is SQL really.

Maybe I’ve not used DuckDB enough but: How would you set it up to consume, say, a Kafka stream, apply some transformations or windowed aggregates and continuously output the result? In my experience DuckDB is a batch tool, vs this thing which is a continuous stream tool

You would implement the relation type that maps to your data source.

Re: Building a streaming SQL engine with Arrow and DataFusion

#30

Arrow has been the most exciting piece of technology I've seen in the last few years. The ecosystem being built around it is amazing, and it's standardizing a bunch of disparate data ecosystems. The arrow ecosystem nets you a great compute implementation, storage (parquet), and a great RPC framework (arrow flight).

I'm also pretty excited about Arrow Database Connectivity (ADBC) development.

https://arrow.apache.org/docs/format/ADBC.html

And nanoarrow but it seems like the adoption has been pretty a little slow. Perhaps a lot of the projects that I would like to see it in may actually depend on a wider range of arrow functionality.

https://arrow.apache.org/nanoarrow/latest/index.html

Post reply on HN