Skip to main content

Fast read/write of AVRO files

Project description

# fastavro [![Build Status](https://travis-ci.org/fastavro/fastavro.svg?branch=master)](https://travis-ci.org/fastavro/fastavro) [![Documentation Status](https://readthedocs.org/projects/fastavro/badge/?version=latest)](http://fastavro.readthedocs.io/en/latest/?badge=latest) [![codecov](https://codecov.io/gh/fastavro/fastavro/branch/master/graph/badge.svg)](https://codecov.io/gh/fastavro/fastavro)

Because the Apache Python avro package is written in pure Python, it is relatively slow. In one test case, it takes about 14 seconds to iterate through a file of 10,000 records. By comparison, the JAVA avro SDK reads the same file in 1.9 seconds.

The fastavro library was written to offer performance comparable to the Java library. With regular CPython, fastavro uses C extensions which allow it to iterate the same 10,000 record file in 1.7 seconds. With PyPy, this drops to 1.5 seconds (to be fair, the JAVA benchmark is doing some extra JSON encoding/decoding).

fastavro supports the following Python versions:

  • Python 2.7

  • Python 3.4

  • Python 3.5

  • Python 3.6

  • Python 3.7

  • PyPy

  • PyPy3

## Supported Features

  • File Writer

  • File Reader (iterating via records or blocks)

  • Schemaless Writer

  • Schemaless Reader

  • Snappy and Deflate codecs

  • Schema resolution

  • Logical Types

## Missing Features

  • Anything involving Avro’s RPC features

  • Parsing schemas into the canonical form

  • Schema fingerprinting

[Cython]: http://cython.org/

# Documentation

Documentation is available at http://fastavro.readthedocs.io/en/latest/

# Installing fastavro is available both on [PyPi](http://pypi.python.org/pypi)

pip install fastavro

and on [conda-forge](https://conda-forge.github.io) conda channel.

conda install -c conda-forge fastavro

# Contributing

  • Bugs and new feature requests typically start as github issues where they can be discussed. I try to resolve these as time affords, but PRs are welcome from all.

  • Get approval from discussing on the github issue before opening the pull request

  • Tests must be passing for pull request to be considered

Developer requirements can be installed with pip install -r developer_requirements.txt. If those are installed, you can run the tests with ./run-tests.sh. If you have trouble installing those dependencies, you can run docker build . to run the tests inside a docker container. This won’t test on all versions of python or on pypy, so it’s possible to still get CI failures after making a pull request, but we can work through those errors if/when they happen.

### Releasing

We release both to [pypi][pypi] and to [conda-forge][conda-forge].

We assume you have [twine][twine] installed and that you’ve created your own fork of [fastavro-feedstock][feedstock].

  • Make sure the tests pass

  • Run make tag

  • Copy the windows build artifacts for the new version from https://ci.appveyor.com/project/scottbelden/fastavro to the dist folder

  • Copy the linux build artifacts for the new version from https://github.com/fastavro/fastavro/releases/tag/ to the dist folder

  • Run make publish

  • Note the sha signature emitted at the above

  • Switch to feedstock directory and edit recipe/meta.yaml
    • Update version and sha256 variables at the top of the file

    • Run python recipe/test_recipe.py

    • Submit a [PR][pr]

[conda-forge]: https://conda-forge.org/ [feedstock]: https://github.com/conda-forge/fastavro-feedstock [pr]: https://conda-forge.org/#update_recipe [pypi]: https://pypi-hypernode.com/pypi [twine]: https://pypi-hypernode.com/pypi/twine

# Changes

See the [ChangeLog]

[ChangeLog]: https://github.com/fastavro/fastavro/blob/master/ChangeLog

# Contact

[Project Home](https://github.com/fastavro/fastavro)

Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastavro-0.21.3.tar.gz (451.3 kB view details)

Uploaded Source

Built Distributions

fastavro-0.21.3-cp37-cp37m-win_amd64.whl (282.2 kB view details)

Uploaded CPython 3.7m Windows x86-64

fastavro-0.21.3-cp37-cp37m-manylinux1_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.7m

fastavro-0.21.3-cp36-cp36m-win_amd64.whl (282.1 kB view details)

Uploaded CPython 3.6m Windows x86-64

fastavro-0.21.3-cp36-cp36m-manylinux1_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.6m

fastavro-0.21.3-cp35-cp35m-win_amd64.whl (274.9 kB view details)

Uploaded CPython 3.5m Windows x86-64

fastavro-0.21.3-cp35-cp35m-manylinux1_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.5m

fastavro-0.21.3-cp34-cp34m-manylinux1_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.4m

fastavro-0.21.3-cp27-cp27m-win_amd64.whl (277.6 kB view details)

Uploaded CPython 2.7m Windows x86-64

fastavro-0.21.3-cp27-cp27m-manylinux1_x86_64.whl (1.0 MB view details)

Uploaded CPython 2.7m

File details

Details for the file fastavro-0.21.3.tar.gz.

File metadata

  • Download URL: fastavro-0.21.3.tar.gz
  • Upload date:
  • Size: 451.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for fastavro-0.21.3.tar.gz
Algorithm Hash digest
SHA256 910cbd2b001d928b5d5ceb690ab44cb77445488a1c9c2050bf5acb90571d99bc
MD5 4bad586a59802b954b4db1566112662e
BLAKE2b-256 eafe156463ec870b6f393832f59617c85d3e70af7c3699590ed9c435eecd898e

See more details on using hashes here.

File details

Details for the file fastavro-0.21.3-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for fastavro-0.21.3-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 bbb57f696a6f1c507fefa34cdc6073025a9ababf9c1fa054b689bbf292281627
MD5 bcb685161e1e540ce732cc61e63f0a4c
BLAKE2b-256 acf7711b6163c81204ad0733b3b149f1b6d0763d62bb31706243831a65034cb3

See more details on using hashes here.

File details

Details for the file fastavro-0.21.3-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for fastavro-0.21.3-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 7f34ac676307af1cc5532d7deae96f27ddff9658ebc0d73f9634c3eb135d35a6
MD5 5f0566792d7eca38007f9f00cd68940a
BLAKE2b-256 e52c0a1c5d7b0d53c45936c91e7853ae7422240174f710de41d23d8559e2e2ae

See more details on using hashes here.

File details

Details for the file fastavro-0.21.3-cp36-cp36m-win_amd64.whl.

File metadata

File hashes

Hashes for fastavro-0.21.3-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 33fa1737f772d4b5778f72b19cd0b96652fca25bc15cf190601493e48cdd6ce8
MD5 d28dfdf96a943776973661df40838e67
BLAKE2b-256 6034c2100acabf17ad0246b6af7493bc5812d83924f54a6bc433e53ea2677ac1

See more details on using hashes here.

File details

Details for the file fastavro-0.21.3-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for fastavro-0.21.3-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 6d62a391259bbcf98947dab8bbacc209adafcff29f1a70bb3090951546e9047f
MD5 76abd28e6dff97e9ac92ed301b2bccb4
BLAKE2b-256 3ce2dbe75d256fb5a9c7bf7aba713cc8d98ffe97a9f9c4cf5cbe2862889ab25a

See more details on using hashes here.

File details

Details for the file fastavro-0.21.3-cp35-cp35m-win_amd64.whl.

File metadata

File hashes

Hashes for fastavro-0.21.3-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 e125d9c1fd5cec73ba880f29afc5bc3e29d5a70435cb2f143d0e827acf59f815
MD5 bfdf97bc115f04e391d2363c27132c36
BLAKE2b-256 160e41c454f62f2aa0046e2e692adc8e5dd24f94e903d1871eefa85db03db144

See more details on using hashes here.

File details

Details for the file fastavro-0.21.3-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for fastavro-0.21.3-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ed7559541f8d6da2d9caa8150fbd432a3929fd204bec122bf323959482235afe
MD5 c8c71dd62efb4e23e82a0103a2ecdadf
BLAKE2b-256 711e9e52e1d2dcf565eb8626a0b5b0600ece5ce29544604a0a73366a68bd76cb

See more details on using hashes here.

File details

Details for the file fastavro-0.21.3-cp34-cp34m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for fastavro-0.21.3-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 4a3e756a4d69deabfe9e4947f998d2ef9939d5b0cc3d81f4f93658d27ce89b6b
MD5 02f7b57db0de943bfac4be1afb7427cb
BLAKE2b-256 21848d9a3b3e5f608b5f18d77373313b07dcd5f6d4fb22d074c8ec838c2d3451

See more details on using hashes here.

File details

Details for the file fastavro-0.21.3-cp27-cp27m-win_amd64.whl.

File metadata

File hashes

Hashes for fastavro-0.21.3-cp27-cp27m-win_amd64.whl
Algorithm Hash digest
SHA256 f52c9e6e471df28ec6adebb8a11fae4e7a2e8bd199a87ffc583fb0801f2beb3c
MD5 7bcf9180076fdb9caded4bec23b57add
BLAKE2b-256 5f346751f5edce782478ac4a88cf2808f148fe169a86dbf5427f412f417880f1

See more details on using hashes here.

File details

Details for the file fastavro-0.21.3-cp27-cp27m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for fastavro-0.21.3-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 fb1bb4da38da6923624dbea403fba85f30eeadeb3a58abc7641afd305630c06a
MD5 bc483c73aa312c34aae29a5f4da41a41
BLAKE2b-256 9b898eebd1bca67e1d5d7d044b7486b61f3f3cec4c76514fad4043148b8f1d5d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page