快速读写avro文件
fastavro的Python项目详细描述
#法斯塔夫罗 [![生成状态](https://travis-ci.org/fastavro/fastavro.svg?branch=master)](https://travis-ci.org/fastavro/fastavro) [![文档状态](https://readthedocs.org/projects/fastavro/badge/?version=latest)](http://fastavro.readthedocs.io/en/latest/?徽章=最新) [![codecov](https://codecov.io/gh/fastavro/fastavro/branch/master/graph/badge.svg)](https://codecov.io/gh/fastavro/fastavro)
因为apache pythonavro包是用纯python编写的,所以 相对缓慢。在一个测试用例中,迭代大约需要14秒 有10000条记录的档案。相比之下,javaavrosdk在 1.9秒。
fastavro库的编写目的是提供与java相当的性能 图书馆。对于常规的cpython,fastavro使用c扩展,允许它 在1.7秒内重复相同的10000个记录文件。用pypy,这个下降到1.5 秒(公平地说,java基准测试正在做一些额外的json 编码/解码)。
fastavro支持以下python版本:
- python 2.7版
- Python3.5
- python 3.6
- Python3.7
- 皮比
- PYPY3
##支持的功能
- 文件编写器
- 文件读取器(通过记录或块迭代)
- 无模式作家
- 无模式读取器
- JSON编写器
- json阅读器
- 编解码器(snappy、deflate、zstandard、bzip2)
- 模式解析
- 别名
- 逻辑类型
##缺少功能
- 任何涉及avro的rpc功能的内容
- 将模式解析为规范形式
- 模式指纹识别
[cython]:http://cython.org/
#文档
文档可在http://fastavro.readthedocs.io/en/latest/
#安装 fastavro在[pypi](http://pypi.python.org/pypi)上都可用
pip install fastavro
在[conda forge](https://conda-forge.github.io)conda频道。
conda install -c conda-forge fastavro
#贡献
- bug和新特性请求通常以github问题开始,在这里可以讨论它们。我试图在时间允许的情况下解决这些问题,但所有人都欢迎减贫战略。
- 在打开拉取请求之前,先获得对github问题讨论的批准
- 必须通过测试才能考虑拉取请求
开发者需求可以通过pip install-r developer_requirements.txt安装。 如果安装了这些程序,则可以使用/run tests.sh运行测试。如果你有麻烦 安装这些依赖项后,您可以运行Docker Build。运行内部测试 码头集装箱。这不会在所有版本的python或pypy上进行测试,因此有可能 在发出拉取请求后仍然会得到ci失败,但我们可以解决这些错误 如果/当它们发生时。
###释放
我们同时向[PYPI][PYPI]和[Conda Forge][Conda Forge]发布。
我们假设您已经安装了[绳线][绳线],并且您已经创建了自己的 [Fastavro原料][原料]叉。
- 确保测试通过
- 运行标记
- 从中复制新版本的Windows生成项目 https://ci.appveyor.com/project/scottbelden/fastavro发送到dist文件夹
- 从 https://github.com/fastavro/fastavro/releases/tag/发送到dist文件夹
- 运行“发布”
- 注意上面发出的SHA签名
- 切换到原料目录并编辑recipe/meta.yaml
- 更新文件顶部的变量
- 运行python recipe/test_recipe.py
- 提交[pr][pr]
[康达锻造]:https://conda-forge.org/ [原料]:https://github.com/conda-forge/fastavro-feedstock [公关]:https://conda-forge.org/#update_recipe [pypi]:https://pypi.python.org/pypi [绳线]:https://pypi.python.org/pypi/twine
#更改
请参阅[ChangeLog]
[变更日志]:https://github.com/fastavro/fastavro/blob/master/ChangeLog
#联系人
[项目主页](https://github.com/fastavro/fastavro)