Apache Iceberg C++
https://github.com/apache/iceberg-cpp.git
C++ implementation of Apache Icebergβ’.
If you experience network issues when downloading dependencies, you can customize the download URLs using environment variables.
The following environment variables can be set to customize dependency URLs:
ICEBERG_ARROW_URL: Apache Arrow tarball URLICEBERG_AVRO_URL: Apache Avro tarball URLICEBERG_AVRO_GIT_URL: Apache Avro git repository URLICEBERG_NANOARROW_URL: Nanoarrow tarball URLICEBERG_CROARING_URL: CRoaring tarball URLICEBERG_NLOHMANN_JSON_URL: nlohmann-json tarball URLICEBERG_CPR_URL: cpr tarball URLexport ICEBERG_ARROW_URL="https://your-mirror.com/apache-arrow-22.0.0.tar.gz"
cmake -S . -B build
cd iceberg-cpp
cmake -S . -B build -G Ninja -DCMAKE_INSTALL_PREFIX=/path/to/install -DICEBERG_BUILD_STATIC=ON -DICEBERG_BUILD_SHARED=ON
cmake --build build
ctest --test-dir build --output-on-failure
cmake --install build
cmake -S . -B build -G Ninja -DCMAKE_INSTALL_PREFIX=/path/to/install -DICEBERG_BUILD_BUNDLE=ON
cmake --build build
ctest --test-dir build --output-on-failure
cmake --install build
cmake -S . -B build -G Ninja -DCMAKE_INSTALL_PREFIX=/path/to/install -DCMAKE_PREFIX_PATH=/path/to/arrow -DICEBERG_BUILD_BUNDLE=ON
cmake --build build
ctest --test-dir build --output-on-failure
cmake --install build
After installing the core libraries, you can build the examples:
cd iceberg-cpp/example
cmake -S . -B build -G Ninja -DCMAKE_PREFIX_PATH=/path/to/install
cmake --build build
If you are using provided Apache Arrow, you need to include /path/to/arrow in CMAKE_PREFIX_PATH as below.
cmake -S . -B build -G Ninja -DCMAKE_PREFIX_PATH="/path/to/install;/path/to/arrow"
Apache Iceberg is an active open-source project, governed under the Apache Software Foundation (ASF). Iceberg-cpp is open to people who want to contribute to it. Here are some ways to get involved:
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.
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.
Licensed under the Apache License, Version 2.0