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