在阅读Avro文件时,可以选择指定Reader的架构来代替已嵌入文件的架构。
reader = DataFileReader(data, DatumReader(readers_schema=readers_schema))
我感到困惑的是,还有指定Writer架构的选项,即
reader = DataFileReader(data, DatumReader(writers_schema=writers_schema, readers_schema=readers_schema))
如果编写器架构已嵌入文件,为什么会这样做?如果嵌入式模式与传入的编写器模式不同,我们会看到什么样的行为?
答案 0 :(得分:0)
如果你的意思是参考python实现,那么DatumReader
的编写器模式(如果有的话)gets overwritten with the one embedded in the file。看起来有TODO
使用它来指定预期的架构,但这似乎还没有实现。
使用DatumReader
指定编写器的模式通常很有用(例如,如果您正在读取使用不同模式序列化的容器文件之外的二进制数据)。