Program API
Use Paimon's program APIs to manage catalogs, embed table reads and writes in an application, or build a connector for a processing engine. Start with the interface that matches your application.
Choose an API
| What you want to do | Start here |
|---|---|
| Read and write tables in a standalone Java application | Java API |
| Create databases and tables, or change schemas | Catalog API |
| Build a Flink DataStream job or ingest records with schema evolution | Flink API |
| Call a REST catalog from a lightweight Java client | REST Java Client |
| Integrate a native C++ engine | C++ API |
| Access Paimon from Rust | Rust API |
| Work with Python, Arrow, or AI datasets | PyPaimon |
| Reduce repeated file reads | Local Cache |
For SQL applications, start with Flink or Spark. These integrations handle execution, data distribution, and recovery for you.
Follow the Java workflow
- Set up the client. Add the dependency and create a catalog.
- Create or load a table. Define its schema through the Catalog API.
- Read or write data. Follow Java Reads or Java Writes for batch and streaming examples.
- Integrate with your runtime. Distribute splits and writer input, close resources, and coordinate checkpoints and commits. Use types and predicates to convert records and construct filters.
Understand the boundaries
A catalog resolves table names and manages metadata. A table supplies builders for reads and writes. A scan plans splits; readers consume those splits. Writers prepare file changes; a committer publishes them in snapshots.
The low-level Java API exposes these building blocks. A custom distributed application must provide scheduling, writer routing, and recovery. The Flink builders connect Paimon to Flink's runtime. The REST Java client handles catalog requests; use a table API to read or write rows.