nanoarrow#
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 绑定可从 PyPI 和 conda-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