Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 有没有办法支持avro4s中的模式演化_Scala_Schema_Avro_Avro4s - Fatal编程技术网

Scala 有没有办法支持avro4s中的模式演化

Scala 有没有办法支持avro4s中的模式演化,scala,schema,avro,avro4s,Scala,Schema,Avro,Avro4s,有没有办法通过AvroInputStream.binaryapi读取字节数组 以某种方式指定编写器版本 val in = new ByteArrayInputStream(bytesFromFile) val input = AvroInputStream.binary[newClass](in)// old ? val result = input.iterator.toSeq 换句话说,avro4s支持二进制记录的模式演化吗 avro4s支持二进制记录的模式演化吗 不支持。Avro通常支持

有没有办法通过
AvroInputStream.binary
api读取字节数组 以某种方式指定编写器版本

val in = new ByteArrayInputStream(bytesFromFile)
val input = AvroInputStream.binary[newClass](in)// old ?
val result = input.iterator.toSeq
换句话说,avro4s支持二进制记录的模式演化吗

avro4s支持二进制记录的模式演化吗


不支持。Avro通常支持模式演化。当您为其提供模式时,它可以与属性的名称及其类型相匹配。当没有模式时,它依赖于序列化和反序列化端的声明顺序。如果修改类,则会破坏兼容性。

Avro DatumReader还有一个api,用于获取编写器架构
GenericData。createDatumReader(架构编写器,架构读取器)
,因此理论上您可以始终提供架构。。我正在avro4s中寻找类似的功能。。将inputStream(datumReader)指定给编写器的一种方法schema@NetanelRabinowitz没错,
DatumReader
确实有这个API,但是
avro4s
通过编译时宏提供了模式,因此对它进行了抽象。不幸的是,没有提供“较低级别”的API。此外,如果您的avro blob没有架构,那么无论您是否提供了一个
DatumReader
,它都没有什么可匹配的。我想我应该打开一个功能请求,而不是..:)谢谢@NetanelRabinowitz甚至更好,一个pull请求:)。不客气。@NetanelRabinowitz我现在在打电话,明天再看。