Avro schema and data converters supporting storing arbitrary nested python data structures.
Project description
rec-avro:
Avro support for JSON and other nested data structures.
Rec-avro provides a generic Avro schema and converter functions that allow for storing nested python data structures in avro.
Tested in Python 3 only.
Installation:
$ pip3 install rec-avro
Usage:
With fastavro:
from fastavro import writer, reader, schema
from rec_avro import to_rec_avro_destructive, from_rec_avro_destructive, rec_avro_schema
def json_objects():
return [{'a': 'a'}, {'b':'b'}]
# For efficiency, to_rec_avro_destructive() destroys rec, and reuses it's
# data structures to construct avro_objects
avro_objects = (to_rec_avro_destructive(rec) for rec in json_objects())
# store records in avro
with open('json_in_avro.avro', 'wb') as f_out:
writer(f_out, schema.parse_schema(rec_avro_schema()), avro_objects)
#load records from avro
with open('json_in_avro.avro', 'rb') as f_in:
# For efficiency, from_rec_avro_destructive(rec) destroys rec, and
# reuses it's data structures to construct it's output
loaded_json = [from_rec_avro_destructive(rec) for rec in reader(f_in)]
assert loaded_json == json_objects()
Development:
# Running all tests:
$ python setup.py pytest
# Running tests manually
$ pip3 install fastavro pytest
$ python setup.py develop
$ pytest tests/test_rec_avro.py
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
rec-avro-0.0.3.tar.gz
(3.0 kB
view details)
File details
Details for the file rec-avro-0.0.3.tar.gz
.
File metadata
- Download URL: rec-avro-0.0.3.tar.gz
- Upload date:
- Size: 3.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e4b96f67cebba541cb02553f543abd3c73165655afbc814956941686cb57c7c1 |
|
MD5 | 51b81a60df7de897038a2c5132035830 |
|
BLAKE2b-256 | eb437114b51f8eaae4d568b961dca1b9da5dd8537f4346ccda7f79bfc3d69d99 |