Paimon C++ is a high-performance C++ implementation of Apache Paimon. Paimon C++ aims to provide a native, high-performance and extensible implementation that allows native engines to access the Paimon datalake format with maximum efficiency.
Commit: Paimon append table commit. (Note: Limited support — only works for simple append-only tables; table with compaction, index, changelog, and stats are not supported.)
Scan: Paimon append and primary key table batch and stream scan (without changelog).
Read: Paimon append table read and primary key table with deletion vector read (raw read) and primary key table with merge on read (merge read).
IO interfaces to file system and built-in local and jindo file system implementation.
File format interfaces to customize different format and built-in orc, parquet and lance format implementation.
Memory pool interfaces and a default implementation.
Thread pool executor interfaces and a default implementation.
Compatible with Java Paimon format and communication protocol (e.g., commit message, data splits, manifests).
Note: The current implementation only supports the x86_64 architecture.
Write And Commit Example
The writing is divided into two stages:
Write records: write records in distributed tasks, generate commit messages.
Commit/Abort: collect all commit messages, commit them in a global node (‘Coordinator’, or named ‘Driver’, or named ‘Committer’). When the commit fails for certain reason, abort unsuccessful commit via commit messages.
Paimon-cpp is an active open-source project and we welcome people who want to contribute or share good ideas!
Before contributing, please read the Contributing Guide and the Code Style Guide. You are encouraged to check out our documentation.
If you have suggestions, feedback, want to report a bug or request a feature, please open an issue.
Pull requests are also very welcome!
We value respectful and open collaboration, and appreciate everyone who helps make paimon-cpp better. Thank you for your support!
Linting
Install the python package pre-commit and run once pre-commit install.
pip install pre-commit
pre-commit install
This will setup a git pre-commit-hook that is executed on each commit and will report the linting problems. To run all hooks on all files use pre-commit run -a.
Dev Containers
We provide Dev Container configuration file templates.
To use a Dev Container as your development environment, follow the steps below, then select Dev Containers: Reopen in Container from VS Code’s Command Palette.
cd .devcontainer
cp Dockerfile.template Dockerfile
cp devcontainer.json.template devcontainer.json
If you make improvements that could benefit all developers, please update the template files and submit a pull request.
This project is maintained by a core team from the Storage Service team at Alibaba, including lxy-9602 (maintainer), lucasfang, lszskye, and zjw1111. We sincerely appreciate contributions from the community — your feedback and patches are welcome and highly valued. For any questions, feature proposals, or code reviews, please feel free to reach out to us directly.
Paimon C++
Paimon C++ is a high-performance C++ implementation of Apache Paimon. Paimon C++ aims to provide a native, high-performance and extensible implementation that allows native engines to access the Paimon datalake format with maximum efficiency.
What’s in the Paimon C++ library
Write And Commit Example
The writing is divided into two stages:
Scan and Read Example
The reading is divided into two stages:
Getting Started
Development
Clone the Repository
If you don’t have
git-lfsinstalled, please install it first.CMake
Contributing
Paimon-cpp is an active open-source project and we welcome people who want to contribute or share good ideas! Before contributing, please read the Contributing Guide and the Code Style Guide. You are encouraged to check out our documentation.
If you have suggestions, feedback, want to report a bug or request a feature, please open an issue. Pull requests are also very welcome!
We value respectful and open collaboration, and appreciate everyone who helps make paimon-cpp better. Thank you for your support!
Linting
Install the python package
pre-commitand run oncepre-commit install.This will setup a git pre-commit-hook that is executed on each commit and will report the linting problems. To run all hooks on all files use
pre-commit run -a.Dev Containers
We provide Dev Container configuration file templates.
To use a Dev Container as your development environment, follow the steps below, then select
Dev Containers: Reopen in Containerfrom VS Code’s Command Palette.If you make improvements that could benefit all developers, please update the template files and submit a pull request.
License
Licensed under the Apache License, Version 2.0
Maintainership and Contributions
This project is maintained by a core team from the Storage Service team at Alibaba, including lxy-9602 (maintainer), lucasfang, lszskye, and zjw1111. We sincerely appreciate contributions from the community — your feedback and patches are welcome and highly valued. For any questions, feature proposals, or code reviews, please feel free to reach out to us directly.