Skip to main content

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 doStart here
Read and write tables in a standalone Java applicationJava API
Create databases and tables, or change schemasCatalog API
Build a Flink DataStream job or ingest records with schema evolutionFlink API
Call a REST catalog from a lightweight Java clientREST Java Client
Integrate a native C++ engineC++ API
Access Paimon from RustRust API
Work with Python, Arrow, or AI datasetsPyPaimon
Reduce repeated file readsLocal Cache

For SQL applications, start with Flink or Spark. These integrations handle execution, data distribution, and recovery for you.

Program APIs: catalogs manage metadata, table APIs plan reads and prepare writes, and engines coordinate execution.

Follow the Java workflow​

  1. Set up the client. Add the dependency and create a catalog.
  2. Create or load a table. Define its schema through the Catalog API.
  3. Read or write data. Follow Java Reads or Java Writes for batch and streaming examples.
  4. 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.