题
我正在使用AVRO 1.4.0通过Python Avro绑定和BOTO S3库来读取S3的一些数据。当我在文件上打开一个avro.datafile.datafiledereader时,就像boto返回的对象一样,它在尝试搜索时立即失败()。目前,我正在通过将S3对象读为临时文件来解决此问题。
我希望能够通过任何支持read()的Python对象进行流式传输。有人可以提供建议吗?
解决方案
我对此并不十分清楚,这可能不是答案。我的印象是
diter = datafile.DataFileReader(..)
返回迭代器,以便您可以执行以下操作
for data in diter:
....
纠正我,如果我在这里错了。
重新审视我的答案:
您是对的,datafile.datafilereader与Seek会失败的读者的表现不佳。
它使用接受读者的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库来阅读数据。
不隶属于 StackOverflow