High-Performance Columnar Transfers: Combining Apache Arrow Flight and Iceberg REST Catalogs
Cross-posted. This article's canonical home is iceberglakehouse.com.
Modern lakehouse architecture is easier to reason about when you separate two questions. The first question is how a system discovers and governs a table. The second question is how data moves once a query has something to return.
Apache Iceberg REST Catalog and Apache Arrow Flight answer different parts of that puzzle. The Iceberg REST Catalog gives engines a standard way to interact with table metadata and catalog operations. Arrow Flight gives systems a high-performance way to move Arrow columnar data over RPC. One is mostly about the control plane. The other is mostly about the data plane.
That distinction is useful because many data architectures blur those concerns. A client connects to one engine through one driver, that engine talks to one catalog, and results come back through whatever protocol that engine happens to expose. That can work, but it tends to make the architecture harder to evolve. If table metadata, query planning, authorization, and data transport are bundled too tightly, every integration becomes more custom than it needs to be.
The open lakehouse is moving in the opposite direction. Iceberg standardizes table semantics. REST catalogs standardize catalog interaction. Arrow standardizes in-memory columnar representation. Arrow Flight standardizes high-throughput columnar transfer. When these pieces are composed carefully, the lakehouse starts to look less like one monolithic platform and more like a set of open layers that can improve independently.
That is a healthy direction for analytics, BI, data science, and AI agents.

Control Plane and Data Plane
In networking, people often distinguish the control plane from the data plane. The control plane decides how traffic should move. The data plane moves the traffic. That same mental model is helpful in data platforms.
In a lakehouse, the control plane includes table discovery, metadata lookup, namespace management, schema information, snapshot references, authorization checks, and catalog operations. It answers questions such as:
- What tables exist?
- Which table version is current?
- What schema should be used?
- What snapshots and manifests describe the table?
- What permissions apply?
- Which operations are allowed?
The data plane is about moving the actual data. It answers questions such as:
- How do result batches get transferred?
- What memory format is used?
- How much serialization overhead is involved?
- Can clients stream results efficiently?
- Can different languages consume the same columnar representation?
Apache Iceberg REST Catalog sits naturally in the control-plane conversation. Apache Arrow Flight sits naturally in the data-plane conversation. The two projects are not the same thing, and the Iceberg REST Catalog does not require Arrow Flight. But they complement each other because modern analytical systems need both standard metadata access and efficient data movement.
This is especially important as more workloads become interactive. A human analyst using a BI tool, a data scientist exploring features, and an AI agent running a tool call all care about latency. Slow metadata operations hurt planning. Slow result transfer hurts interactivity. A strong architecture reduces friction in both places.
What the Iceberg REST Catalog Standardizes
Apache Iceberg makes object-storage tables behave like real analytical tables. It tracks schemas, partition evolution, snapshots, manifests, delete files, and table metadata. But a table format alone is not enough. Engines need a way to find and commit table metadata safely.
That is where catalogs come in. Historically, catalog integration could be tightly coupled to a specific metastore, cloud service, or engine. The REST Catalog specification gives the Iceberg ecosystem a common HTTP-based interface for catalog operations. That makes it easier for different engines and platforms to talk to a catalog without each one inventing a custom integration.
The REST Catalog is important because openness at the file layer does not automatically create openness at the control layer. If the table data is open but the catalog is closed, the architecture still has a lock-in problem. Engines may understand the files but struggle to participate safely in table operations. Governance may fragment. Metadata may become difficult to share.
A standard catalog API gives the ecosystem a cleaner contract. Engines can request table metadata, work with namespaces, and coordinate operations through a known interface. Catalog providers can implement that interface while adding their own policy, identity, and operational controls underneath.
For teams building agentic analytics, this matters because agents should not be pointed at storage paths and asked to infer state. They should interact through table-aware and policy-aware services. REST catalog patterns move the architecture in that direction.
What Arrow Flight Optimizes
Apache Arrow is a columnar memory format designed for efficient analytical processing across languages and systems. Arrow Flight builds on that by providing an RPC framework for transferring Arrow data. It uses gRPC and is designed for high-throughput data services.
The key point is that Arrow Flight focuses on data movement. Once a system has decided what data to send, Flight can move columnar record batches efficiently to clients. That is valuable because analytical workloads often pay a hidden tax in serialization, copying, and format conversion. If a result set is produced in one internal format and then converted several times before a client can consume it, latency and resource use increase.
Columnar transfer matters for more than big scans. It matters for interactive analytics too. A dashboard that loads quickly, a notebook that previews data without delay, or an agent that can retrieve a result within a bounded time window all benefit from efficient transport.
Arrow Flight also fits the broader open ecosystem. Arrow has bindings and adoption across many data tools and languages. A columnar result format that can be consumed cleanly by different clients supports the same architectural philosophy as Iceberg: data systems should interoperate through shared standards rather than one-off adapters.
Why Combining the Patterns Is Useful
It is tempting to ask whether Arrow Flight and Iceberg REST Catalog are competitors or alternatives. They are not. They sit at different points in the stack.
Imagine a client wants to analyze an Iceberg table. The client or service first needs to understand the table: where it is, what schema it has, what snapshot is current, and what policies apply. That is control-plane work. A REST catalog can provide the table metadata and coordinate catalog-level interaction.
Then a query engine plans and executes the query. That engine may read Iceberg metadata, prune files, apply filters, enforce policy, and compute results. Once results exist, the system has to return them to the client. That is where Arrow Flight can be a strong transport option.
The useful architecture is not "REST Catalog plus Flight equals one product." It is "standardized control-plane access plus efficient columnar data-plane transfer creates more composable lakehouse systems."
That composability has practical benefits. A catalog can evolve without forcing every client to change its result transport. A transport service can improve throughput without changing table metadata semantics. Query engines can focus on planning and execution while using open protocols at the edges. Clients can consume columnar results without being tied to one storage engine's private wire format.

Where This Helps BI, Notebooks, and Agents
Different clients stress the architecture in different ways.
BI tools care about predictable latency, governed metrics, and stable schemas. They need fast result delivery, but they also need the query to be based on the right table state and business definition. REST catalog integration helps with table state. Semantic layers help with definitions. Arrow Flight can help with moving results efficiently.
Notebooks care about exploration. Data scientists may inspect schemas, sample data, join across sources, and move between Python and SQL. Arrow's language-friendly columnar representation is useful here because it reduces friction between systems. Iceberg helps because the table has a reliable history and schema evolution model.
AI agents care about tool use and bounded action. An agent might inspect metadata, select a dataset, run a query, validate a result, and decide whether another step is needed. Agents are sensitive to both correctness and latency. If every metadata lookup is slow, planning suffers. If every result transfer is inefficient, the loop becomes sluggish. If governance is unclear, the agent becomes risky.
The common thread is that all three workloads need open, reliable foundations. They need table metadata they can trust. They need results they can consume efficiently. They need governance that follows the user or workload identity. They need semantic context when the question involves business meaning.
Why This Matters for the Agentic Lakehouse
The agentic lakehouse is not just a lakehouse with a chatbot on top. It is a data platform designed for systems that can reason, query, validate, and act. That raises the standard for each layer.
Agents need to discover data through approved interfaces. That points to catalogs and metadata services. Agents need to ask business questions using trusted definitions. That points to semantic layers. Agents need to execute queries quickly enough to support multi-step workflows. That points to query acceleration and efficient transport. Agents need to leave an audit trail. That points to policy-aware orchestration.
Open protocols make this easier to build. If a lakehouse uses Iceberg for table semantics, REST catalogs for table access, Arrow for columnar representation, and Flight for high-performance transfer, the architecture is less dependent on private contracts. That does not remove the need for a strong platform. It gives the platform cleaner building blocks.
This is where the Dremio Lakehouse approach becomes compelling in a subtle but important way. Dremio's story has long been tied to open data, Apache Arrow, Apache Iceberg, query federation, semantic access, and acceleration. Those are not isolated feature bullets. They are the pieces that make agentic analytics more practical. If the market is moving toward multi-step AI workflows over enterprise data, then architectures built on open table and columnar standards have a strong argument.
The Security Boundary
Efficient data transfer can become a liability if it bypasses policy. A fast data plane must still respect the control plane.
In a well-designed architecture, authorization should be resolved before results move. The query service should know who is asking, what tables or views they can access, which columns need masking, and which filters are required. If the result is delivered through Arrow Flight, that delivery should reflect those decisions. Flight is not a substitute for access control.
There is also a metadata security question. Catalogs reveal information. A user who cannot query a table may also need restrictions on whether they can discover that the table exists. Agents make this more important because metadata is part of their reasoning process. If an agent can list sensitive datasets it cannot query, that may still reveal more than the organization intends.
Good architecture treats metadata, query execution, and result transfer as connected but distinct policy surfaces. The catalog enforces discovery and table-operation rules. The query layer enforces data access. The transport layer delivers only authorized results. The audit layer records what happened.
For regulated environments, the audit record should include the user or workload identity, the dataset or semantic asset, the table snapshot where possible, the policy checks, the query or logical plan, and the result delivery event. That may sound heavy, but agentic systems make this discipline necessary.
Performance Is More Than Transfer Speed
Arrow Flight can improve result transfer, but transfer speed is only one part of performance. Query latency includes metadata planning, file pruning, data scanning, filtering, joins, aggregations, network transfer, and client-side processing. A fast transport layer cannot compensate for poor table layout, stale statistics, inefficient joins, or missing acceleration.
That is why the open lakehouse performance conversation has to be broader. Iceberg metadata helps engines plan better. Catalog services help standardize access. Query engines need to optimize across data sources. Acceleration mechanisms can reduce repeated computation. Columnar transfer can reduce the cost of moving results.
The most useful systems improve the whole path. A query that plans slowly but transfers quickly is still slow. A query that scans too much data but streams results efficiently is still wasteful. A query that returns quickly but uses the wrong metric definition is worse than slow because it is misleading.
This is one reason I like separating the architecture into layers. It prevents teams from pretending that one optimization solves every problem. It also helps them decide where a bottleneck actually lives.
Avoiding a New Kind of Lock-In
Open file formats reduced one kind of lock-in, but they did not eliminate all of it. A company can store data in open Parquet files or Iceberg tables and still become dependent on a closed catalog, a closed optimizer, a closed semantic layer, or a closed result interface.
That is why REST catalogs and Arrow Flight are interesting. They represent pressure toward openness above the file layer. The table metadata contract becomes more open. The result transport can become more open. Clients and engines have clearer ways to interoperate.
This does not mean every implementation is interchangeable. Real systems differ in performance, governance, reliability, maturity, and user experience. Open standards do not erase product differences. They make the boundaries clearer and give buyers more leverage.
For architects, the key question is not "Is every layer open?" The better question is "Can I change or add engines, clients, catalogs, and governance services without rebuilding my whole data platform?" If the answer is yes, the architecture is healthier.

A Practical Implementation Pattern
A practical pattern might look like this.
First, store analytical datasets as Iceberg tables in object storage. Make sure table maintenance, compaction, partition evolution, and snapshot retention are managed deliberately.
Second, use a catalog that supports open Iceberg access patterns. The catalog should integrate with identity, policy, and audit systems. If multiple engines need access, test their behavior against the catalog rather than assuming compatibility.
Third, put a query layer in front of the tables. This layer should handle planning, optimization, policy enforcement, federation, and acceleration. It should provide SQL access for humans and tool access for agents.
Fourth, use Arrow-native pathways where they improve interoperability and performance. That might include Arrow in memory, Arrow-based clients, or Arrow Flight for high-throughput transfer. The exact design depends on the tools involved.
Fifth, expose semantic assets instead of raw tables whenever the question involves business meaning. The table may be open, but the metric should still be governed.
Sixth, design agent tools around narrow tasks. An agent should be able to describe approved datasets, retrieve metric definitions, run governed queries, and inspect lineage. It should not need broad direct access to storage.
Seventh, measure the full query path. Track catalog latency, planning time, scan time, acceleration hit rate, transfer time, and client consumption time. Performance work without measurement becomes folklore.
Common Mistakes to Avoid
The first mistake is treating the catalog as a passive registry. In an Iceberg architecture, catalog behavior affects correctness, governance, and multi-engine access. It deserves serious design work.
The second mistake is confusing open storage with open architecture. A table in object storage is not automatically portable if only one platform can manage the catalog or query it well.
The third mistake is using fast transport to excuse weak semantics. Returning the wrong answer quickly is not progress. Business definitions need to be explicit.
The fourth mistake is exposing too much to agents too early. Start with read-only, scoped tools over trusted assets. Expand only after audit, access control, and evaluation are working.
The fifth mistake is ignoring client diversity. BI tools, notebooks, APIs, and agents consume data differently. The architecture should support those modes without creating separate copies for each.
Observability for the Whole Path
One additional requirement is observability. If a query feels slow, the team should be able to tell whether the delay came from catalog lookup, authorization, planning, scanning, exchange, result transfer, or client rendering. Without that visibility, teams argue from anecdotes.
For agentic workloads, observability is even more important. An agent may run several small queries while working through a task. A two-second delay in one place may look harmless, but five delays inside one reasoning loop can make the whole workflow feel unreliable. The platform should capture timing across metadata calls, execution steps, and columnar transfer. It should also connect those timings to the user or agent identity, the semantic asset, and the table snapshot involved.
That kind of trace turns performance work into engineering. It also helps governance teams understand how agentic systems are using shared data services.
The Direction of Travel
The lakehouse is becoming more modular and more demanding at the same time. Teams want open tables, but they also want managed operations. They want multiple engines, but they need consistent governance. They want fast interactive analytics, but they do not want uncontrolled extracts. They want AI agents, but they need those agents to respect policy and semantics.
Apache Iceberg REST Catalog and Apache Arrow Flight are part of the answer because they standardize important boundaries. One helps with catalog interaction. The other helps with columnar movement. Together, they support an architecture where clients, engines, catalogs, and storage can cooperate through clearer contracts.
That is why this topic matters beyond protocol mechanics. It points toward a lakehouse that can serve humans and agents without collapsing everything into one proprietary stack. It also points toward why the Dremio Lakehouse approach is attractive for this moment. Open table formats, Arrow-native execution, query federation, semantic access, and acceleration are not separate ideas. They form a practical foundation for analytical systems that need to be fast, governed, and open.
The future of analytics will not be defined only by where data is stored. It will be defined by how confidently systems can find it, understand it, govern it, move it, and use it. REST catalogs and Arrow Flight both help with that larger goal.
For more of my thinking on data lakehouse and AI architecture, explore my books at books.alexmerced.com. To try a modern Agentic Lakehouse experience, visit dremio.com/get-started.