¿Cómo uso Avro para procesar una corriente que no puedo buscar?
Pregunta
Estoy utilizando Avro 1.4.0 para leer algunos datos fuera de S3 a través del pitón Avro fijaciones y la biblioteca de boto S3. Cuando abro una avro.datafile.DataFileReader en el archivo como objetos devueltos por boto falla inmediatamente cuando se trata de buscar (). Por ahora estoy trabajando en todo esto leyendo el S3 objetos en archivos temporales.
I gustaría ser capaz de transmitir a través de cualquier objeto de Python que permite leer (). Alguien puede asesorar?
Solución
No estoy muy claro en esto y esto puede no ser la respuesta. Yo era de la impresión de que
diter = datafile.DataFileReader(..)
devuelve un iterador para que usted podría hacer lo siguiente
for data in diter:
....
Me correcta, si no estoy mal aquí.
Revisando mi respuesta:
Tiene usted razón, datafile.DataFileReader no juega bien con un lector para los que buscan fallaría.
utiliza avro.io.BinaryDecoder que acepta un lector.
class BinaryDecoder(object):
"""Read leaf values."""
def __init__(self, reader):
"""
reader is a Python object on which we can call read, seek, and tell.
"""
self._reader = reader
Lo que puede hacer es crear su propia clase lector que proporciona estas funciones -. Lectura, buscar y contar, pero utiliza internamente boto biblioteca S3 para leer los datos