nanoarrow#

Codecov test coverage Documentation nanoarrow on GitHub

nanoarrow 库是一组辅助工具,用于生产和消费 Arrow 数据,包括 Arrow C 数据Arrow C 流Arrow C 设备 接口结构,以及序列化的 Arrow IPC 格式。nanoarrow 的愿景是让各个库能够轻松地生产和消费 Arrow 数据:它通过提供高质量、易于采用的辅助工具来生产、消费和测试 Arrow 数据类型和数组,帮助实现这一愿景。

nanoarrow 库的构建目标是:

  • 小巧:nanoarrow 的 C 运行时编译后只有几百 KB,其 R 和 Python 绑定的安装大小约为 1 MB。

  • 易于依赖:nanoarrow 的 C 库以两个文件(nanoarrow.c 和 nanoarrow.h)的形式分发,其 R 和 Python 绑定没有任何依赖。

  • 实用:Arrow 列式格式包含广泛的数据类型和数据编码选项。在最大可行范围内,nanoarrow 努力支持整个 Arrow 列式规范(实现状态请参见 Arrow 实现状态页面)。

入门指南#

nanoarrow 的 Python 绑定可从 PyPIconda-forge 获取。

pip install nanoarrow
conda install nanoarrow -c conda-forge

nanoarrow 的 R 包可从 CRAN 获取。

install.packages("nanoarrow")

C 库可以通过生成核心库及其组件的捆绑版本来使用。这是 R 和 Python 绑定内部使用的版本。

python ci/scripts/bundle.py \
  --source-output-dir=dist \
  --include-output-dir=dist \
  --header-namespace= \
  --with-device \
  --with-ipc \
  --with-testing \
  --with-flatcc

CMake 也支持通过 find_package() 进行构建/安装,或使用 FetchContent

fetchcontent_declare(nanoarrow
                     URL "https://apache.org/dyn/closer.lua?action=download&filename=arrow/apache-arrow-nanoarrow-0.6.0/apache-arrow-nanoarrow-0.6.0.tar.gz")

fetchcontent_makeavailable(nanoarrow)

C 库也可以作为 Meson 子项目使用,通过以下方式安装:

mkdir subprojects
meson wrap install nanoarrow

…并通过以下方式声明为依赖项:

nanoarrow_dep = dependency('nanoarrow')
example_exec = executable('example_meson_minimal_app',
                          'src/app.cc',
                          dependencies: [nanoarrow_dep])

有关 C、C++、Python 和 R 库的扩展教程和 API 参考,请参阅 nanoarrow 文档

nanoarrow GitHub 仓库 还提供了许多示例,涵盖了如何在各种构建配置中使用 nanoarrow。

开发#

使用 CMake 构建#

CMake 是用于开发和测试 nanoarrow C 库的主要构建系统。你可以使用以下命令构建 nanoarrow:

mkdir build && cd build
cmake ..
cmake --build .

要构建 nanoarrow 并运行测试,请执行:

mkdir build && cd build
cmake .. -DNANOARROW_BUILD_TESTS=ON
cmake --build .

如果你能够安装 Arrow C++,可以启用更多测试:

mkdir build && cd build
cmake .. -DNANOARROW_BUILD_TESTS=ON -DNANOARROW_BUILD_TESTS_WITH_ARROW=ON
cmake --build .

可以使用 ctest 运行测试。

使用 Meson 构建#

CMake 是 nanoarrow 官方支持的构建系统。然而,Meson 后端是一个实验性功能,你可能也想尝试一下。

meson setup builddir
cd builddir

设置好项目后,请确保启用你想要的选项:

meson configure -Dtests=enabled -Dbenchmarks=enabled

如果你的系统上安装了 Apache Arrow,可以使用 -Dtest_with_arrow=enabled 来获得更好的测试覆盖率。根据你安装 Apache Arrow 的方式,你可能还需要传递 --pkg-config-path <path to directory with arrow.pc>

完成上述步骤后,compile 命令应该会处理剩下的事情:

meson compile

构建成功后,你可以使用以下命令执行测试套件和基准测试:

meson test nanoarrow:  # default test run
meson test nanoarrow: --wrap valgrind  # run tests under valgrind
meson test nanoarrow: --benchmark --verbose # run benchmarks

目录#