参与其中#
目前 Apache Arrow 的主要受众是数据系统的开发者;大多数人将通过使用 Arrow 进行内部数据处理以及与其他支持 Arrow 的系统进行互操作的系统间接使用 Apache Arrow。
即使您不打算为 Apache Arrow 本身或 Arrow 在其他项目中的集成做出贡献,我们也欢迎您的参与
加入邮件列表:发送电子邮件至 dev-subscribe@arrow.apache.org。分享您对项目的想法和用例,或阅读存档。
在 GitHub 上关注我们的活动
了解 格式 / 规范
PyArrow 架构#
PyArrow 在很大程度上是 Arrow C++ 实现所提供的功能的包装器。该库试图利用 C++ 中可用的功能,并通过更具 Pythonic 特性且使用起来不太复杂的用户体验将其暴露出来。因此,虽然在某些情况下将 C++ 中的内容映射到 Python 中可能很容易,但在许多情况下,C++ 类和方法被用作构建更易于使用的实体的基础。
pyarrow 包中的
*.py文件通常是声明暴露给用户的实体的地方。在某些情况下,如果这些文件想要原样暴露实体而无需修改,它们可能会直接从内部实现导入实体。lib.pyx文件是大多数核心 C++ libarrow 功能暴露给 Python 的地方。该模块的大部分实现依赖于包含的*.pxi文件,其中构建了具体的片段。虽然它以pyarrow.lib的形式暴露给 Python,但其内容应被视为内部的。公共类随后通过从pyarrow.lib导入它们而直接暴露在其他模块中(例如pyarrow本身)。_*.pyx文件通常是创建粘合代码的地方,它将 C++ 功能组合在一起,将其转换为 Python 类和方法。它们可以被认为是*.py文件所暴露功能的内部实现。includes/*.pxd文件是为 Cython 使用而声明原始 C++ 库 API 的地方。在这里,C++ 类和方法按原样声明,以便在其他.pyx文件中,可以使用它们来实现 Python 类、函数和帮助程序。除了 Arrow C++ 库(其依赖性在前一行中提到)之外,PyArrow 还基于 PyArrow C++,这些专用代码片段位于
python/pyarrow/src/arrow/python目录中,并提供低级代码,用于实现诸如与 numpy 或 pandas 相互转换以及允许在 C++ 中使用 Python 对象和回调的类等功能。