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/nanoarrow-0.5.0/apache-arrow-0.5.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 目前需要 Arrow C++。如果通过系统包管理器(如 aptdnfbrew)安装,则可以使用以下命令构建测试:

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

可以使用 ctest 运行测试。

使用 Meson 构建#

CMake 是 nanoarrow 的官方支持构建系统。但是,Meson 后端是一个实验性功能,您可能也希望尝试。

meson setup builddir
cd builddir

在设置项目后,请务必启用所需的选项

meson configure -Dtests=true -Dbenchmarks=true

如果 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

内容#