Python 为什么在DatumReader中有一个指定writers模式的选项?

Python 为什么在DatumReader中有一个指定writers模式的选项?,python,schema,avro,Python,Schema,Avro,读取Avro文件时,有一个选项可以指定读取器的模式,以代替已嵌入该文件的模式 reader=DataFileReader(数据,DatumReader(readers\u schema=readers\u schema)) 我感到困惑的是,还有一个选项可以指定编写器的模式,即 reader=DataFileReader(数据,DatumReader(writers\u schema=writers\u schema,readers\u schema=readers\u schema)) 如果wr

读取Avro文件时,有一个选项可以指定读取器的模式,以代替已嵌入该文件的模式

reader=DataFileReader(数据,DatumReader(readers\u schema=readers\u schema))

我感到困惑的是,还有一个选项可以指定编写器的模式,即

reader=DataFileReader(数据,DatumReader(writers\u schema=writers\u schema,readers\u schema=readers\u schema))


如果writers模式已经嵌入到文件中,为什么需要这样做?如果嵌入式模式与传入的writers模式不同,我们会看到什么样的行为?

如果您指的是参考python实现,
DatumReader
的writer模式(如果有)。似乎有一个
TODO
来使用它来指定预期的模式,但这似乎还没有实现


但是,使用
DatumReader
指定写入程序的架构通常很有用(例如,如果您正在读取用不同架构序列化的容器文件之外的二进制数据)。

因此,指定写入程序的架构主要是为了验证文件是否用预期架构序列化?看起来是这样的(尽管该功能尚未实现)。