跳转到主要内容

快速读写AVRO文件

项目描述

fastavro

Build Status Documentation Status codecov

由于Apache Python avro包是用纯Python编写的,因此相对较慢。在一个测试案例中,遍历包含10,000条记录的文件需要约14秒。相比之下,JAVA avro SDK读取相同的文件只需要1.9秒。

fastavro库被编写来提供与Java库相当的性能。在常规CPython中,fastavro使用C扩展,允许它在1.7秒内遍历相同的10,000条记录的文件。在PyPy中,这降低到1.5秒(为了公平起见,JAVA基准正在执行一些额外的JSON编码/解码)。

fastavro支持以下Python版本

  • Python 3.8
  • Python 3.9
  • Python 3.10
  • Python 3.11
  • Python 3.12
  • PyPy3

支持的功能

  • 文件写入器
  • 文件读取器(通过记录或块迭代)
  • 无模式写入器
  • 无模式读取器
  • JSON 写入器
  • JSON 读取器
  • 编解码器(Snappy、Deflate、Zstandard、Bzip2、LZ4、XZ)
  • 模式解析
  • 别名
  • 逻辑类型
  • 将模式解析为规范形式
  • 模式指纹

缺失的功能

  • 涉及 Avro RPC 功能的任何内容

文档

文档可在 http://fastavro.readthedocs.io/en/latest/ 找到

安装

fastavro 可在 PyPI 上找到

pip install fastavro

conda-forge conda 通道上。

conda install -c conda-forge fastavro

贡献

  • 错误和新功能请求通常从 GitHub 问题开始,在那里可以讨论。我尽量在有时间的情况下解决这些问题,但欢迎所有人提交 PR。
  • 在提交 PR 之前,请先在 GitHub 问题中进行讨论以获得批准
  • 测试必须通过才能考虑 PR

开发者需求可以通过 pip install -r developer_requirements.txt 安装。如果已安装,您可以使用 ./run-tests.sh 运行测试。如果您在安装这些依赖项时遇到困难,您可以通过运行 docker build . 在 Docker 容器中运行测试。这不会在所有 Python 版本或 PyPy 上进行测试,因此即使在提交 PR 后,仍有可能出现 CI 失败,但我们可以处理这些错误(如果发生)。 .run-tests.sh 只涵盖 Cython 测试。为了测试纯 Python 实现,请注释掉 python setup.py build_ext --inplace 并重新运行。

注意:在本地运行测试时,某些测试可能会失败。例如,这是编解码器测试。如果支持的编解码器库不可用,则测试将失败。这些失败可以忽略,因为测试将在 PR 上运行,并且将在具有正确设置的依赖项的正确环境中运行。

发布

我们同时发布到 PyPIconda-forge

我们假设您已安装 twine 并已创建 fastavro-feedstock 的自己的分支。

  • 确保测试通过
  • 运行 make tag
  • 等待所有工件构建并发布到 Github 发布版
  • 运行 make publish
  • conda-forge PR 应该会自动创建和合并

更改

请参阅 变更日志

联系

项目主页

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适用于您的平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。

源分布

fastavro-1.9.7.tar.gz (987.8 kB 查看哈希值)

上传时间

构建分布

fastavro-1.9.7-cp312-cp312-win_amd64.whl (487.8 kB 查看哈希值)

上传时间 CPython 3.12 Windows x86-64

fastavro-1.9.7-cp312-cp312-musllinux_1_2_x86_64.whl (3.4 MB 查看哈希值)

上传时间 CPython 3.12 musllinux: musl 1.2+ x86-64

fastavro-1.9.7-cp312-cp312-musllinux_1_2_aarch64.whl (3.3 MB 查看哈希值)

上传时间 CPython 3.12 musllinux: musl 1.2+ ARM64

fastavro-1.9.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ x86-64

fastavro-1.9.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.3 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ ARM64

fastavro-1.9.7-cp312-cp312-macosx_10_9_universal2.whl (1.0 MB 查看哈希值)

上传时间 CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64)

fastavro-1.9.7-cp311-cp311-win_amd64.whl (500.1 kB 查看哈希值)

上传时间 CPython 3.11 Windows x86-64

fastavro-1.9.7-cp311-cp311-musllinux_1_2_x86_64.whl (3.4 MB 查看哈希值)

上传时间 CPython 3.11 musllinux: musl 1.2+ x86-64

fastavro-1.9.7-cp311-cp311-musllinux_1_2_aarch64.whl (3.3 MB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.2+ ARM64

fastavro-1.9.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

fastavro-1.9.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.3 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

fastavro-1.9.7-cp311-cp311-macosx_10_9_universal2.whl (1.0 MB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

fastavro-1.9.7-cp310-cp310-win_amd64.whl (497.2 kB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

fastavro-1.9.7-cp310-cp310-musllinux_1_2_x86_64.whl (3.1 MB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.2+ x86-64

fastavro-1.9.7-cp310-cp310-musllinux_1_2_aarch64.whl (3.0 MB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.2+ ARM64

fastavro-1.9.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

fastavro-1.9.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.0 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

fastavro-1.9.7-cp310-cp310-macosx_10_9_universal2.whl (1.0 MB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

fastavro-1.9.7-cp39-cp39-win_amd64.whl (546.2 kB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

fastavro-1.9.7-cp39-cp39-musllinux_1_2_x86_64.whl (3.1 MB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.2+ x86-64

fastavro-1.9.7-cp39-cp39-musllinux_1_2_aarch64.whl (3.0 MB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.2+ ARM64

fastavro-1.9.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

fastavro-1.9.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.0 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

fastavro-1.9.7-cp39-cp39-macosx_10_9_universal2.whl (1.0 MB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

fastavro-1.9.7-cp38-cp38-win_amd64.whl (550.3 kB 查看哈希值)

上传于 CPython 3.8 Windows x86-64

fastavro-1.9.7-cp38-cp38-musllinux_1_2_x86_64.whl (3.2 MB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.2+ x86-64

fastavro-1.9.7-cp38-cp38-musllinux_1_2_aarch64.whl (3.1 MB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.2+ ARM64

fastavro-1.9.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

fastavro-1.9.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.1 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

fastavro-1.9.7-cp38-cp38-macosx_11_0_universal2.whl (1.0 MB 查看哈希值)

上传于 CPython 3.8 macOS 11.0+ universal2 (ARM64, x86-64)

支持者