While trying to implement and introduce the idea of adopting FlightSQL, the
largest challenge was the API itself

I know it's meant to be low-level. But I found that most of the development
time was in code to convert to/from
row-based data (IE Map<String, Object>) and Java types, and columnar data +
Arrow types.

I'm likely in the minority position here -- I know that Arrow and FlightSQL
users are largely looking at transferring large volumes of data and
servicing OLAP-type workloads
But the thing that excites me most about FlightSQL, isn't its performance
(always nice to have), but that it's a language-agnostic standard for data
access.

That has broad implications -- for all kinds of data-access workloads and
business usecases.

The challenge is that in trying to advocate for it, when presenting a
proof-of-concept,
rather than what a developer might expect to see, something like:

// FlightSQL handler code
List<Map<String, Object>> results = ....;
results.add(Map.of("id", 1, "name", "Person 1");
return results;

A significant portion of the code is in Arrow-specific implementation
details:
creating a VectorSchemaRoot, FieldVector, de-serializing the results on the
client, etc.

Just curious whether there is any interest/intention of possibly making a
higher level API around the basic FlightSQL one?
Maybe something closer to the traditional notion of a row-based "DataFrame"
or "Table", like:

DataFrame df = new DataFrame();
df.addColumn("id", ArrowTypes.Int);
df.addColumn("name", ArrowTypes.VarChar);
df.addRow(Map.of("id", 1, "name", "Person 1"));
VectorSchemaRoot root = df.toVectorSchemaRoot();
listener.setVectorSchemaRoot(root);
listener.sendVectorSchemaRootContents();

Reply via email to