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