#flight #arrow #udf

arrow-udf-flight

Client for remote Arrow UDFs

6 releases (3 breaking)

0.4.2 Mar 19, 2025
0.4.1 Mar 19, 2025
0.4.0 Oct 10, 2024
0.3.0 Sep 19, 2024
0.1.0 May 7, 2024

#9 in #udf

Download history 735/week @ 2025-04-09 440/week @ 2025-04-16 326/week @ 2025-04-23 79/week @ 2025-04-30 76/week @ 2025-05-07 247/week @ 2025-05-14 186/week @ 2025-05-21 183/week @ 2025-05-28 181/week @ 2025-06-04 166/week @ 2025-06-11 120/week @ 2025-06-18 172/week @ 2025-06-25 100/week @ 2025-07-02 111/week @ 2025-07-09 152/week @ 2025-07-16 7/week @ 2025-07-23

411 downloads per month

Apache-2.0

130KB
2.5K SLoC

Java 1.5K SLoC // 0.2% comments Python 816 SLoC // 0.2% comments Rust 159 SLoC // 0.2% comments

Remote UDF based on Arrow Flight

Crate Docs

Run user-defined functions in a separate process and call them via Arrow Flight RPC.

Server

Currently the following languages are supported:

Please click the link to see the specific usage.

Client

Add the following lines to your Cargo.toml:

[dependencies]
arrow-udf-flight = "0.4"
use arrow_udf_flight::Client;

// Connect to the UDF server
let client = Client::new("localhost:8815").await.unwrap();

// Call functions
let input: RecordBatch = ...;
let output: RecordBatch = client.call("gcd", &input).await.unwrap();

Communication Protocol

The communication protocol between client and server is based on Arrow Flight RPC.

Details to be added.

Dependencies

~15–24MB
~350K SLoC