Мне не очень ясно об этом, и это может быть не ответ.
У меня сложилось впечатление, что
diter = datafile.DataFileReader(..)
возвращает итератор, чтобы вы могли сделать следующее
for data in diter:
....
Поправь меня, если я здесь не прав.
Возвращаясь к моему ответу:
Вы правы, datafile.DataFileReader не очень хорошо работает с ридером, поиск которого не удался.
он использует avro.io.BinaryDecoder, который принимает читателя.
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
Что вы можете сделать, это создать свой собственный класс считывателя, который предоставляет эти функции - чтение, поиск и передача, но для чтения данных внутренне использует библиотеку boto S3.