Apache Iceberg C++

Clone this repo:

Branches

  1. 29b887d feat: create name mapping from schema (#99) by Gang Wu · 2 days ago main
  2. 27318f5 feat: add metadata columns definition (#98) by Gang Wu · 2 days ago
  3. 6276b8d feat: add json serde to name mapping (#97) by Gang Wu · 2 days ago
  4. a994322 feat: add visit type support (#94) by Junwang Zhao · 3 days ago
  5. 1c2530c feat: add doc attribute to SchemaField (#96) by Gang Wu · 4 days ago

Apache Iceberg™ C++

C++ implementation of Apache Iceberg™.

Requirements

  • CMake 3.25 or higher
  • C++20 compliant compiler

Build

Build, Run Test and Install Core Libraries

cd iceberg-cpp
cmake -S . -B build -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

Build and Install Iceberg Bundle Library

Vendored Apache Arrow (default)

cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/path/to/install -DICEBERG_BUILD_BUNDLE=ON
cmake --build build
ctest --test-dir build --output-on-failure
cmake --install build

Provided Apache Arrow

cmake -S . -B build -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

Build Examples

After installing the core libraries, you can build the examples:

cd iceberg-cpp/example
cmake -S . -B build -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 -DCMAKE_PREFIX_PATH="/path/to/install;/path/to/arrow"

Contribute

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:

The Apache Iceberg community is built on the principles described in the Apache Way and all who engage with the community are expected to be respectful, open, come with the best interests of the community in mind, and abide by the Apache Foundation Code of Conduct.

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.

License

Licensed under the Apache License, Version 2.0