Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.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 3.0.4迁移到4.0.0-RC2?_Scala_Avro_Avro4s - Fatal编程技术网

Scala 如何从avro4s 3.0.4迁移到4.0.0-RC2?

Scala 如何从avro4s 3.0.4迁移到4.0.0-RC2?,scala,avro,avro4s,Scala,Avro,Avro4s,如何从avro4s 3.0.4迁移到4.0.0-RC2? 我有以下编译错误: [error] /Users/nicolae.marasoiu/proj/data-availability-global-topic-conveyor/src/main/scala/com/ovoenergy/globaltopics/serdes/AvroFormatImplicits.scala:8:15: value const is not a member of object com.sksamuel.av

如何从avro4s 3.0.4迁移到4.0.0-RC2? 我有以下编译错误:

[error] /Users/nicolae.marasoiu/proj/data-availability-global-topic-conveyor/src/main/scala/com/ovoenergy/globaltopics/serdes/AvroFormatImplicits.scala:8:15: value const is not a member of object com.sksamuel.avro4s.SchemaFor
[error]     SchemaFor.const(new Schema.Parser().parse(getClass.getResourceAsStream(hasSchema.resourcePath)))
[error]               ^
[error] /Users/nicolae.marasoiu/proj/data-availability-global-topic-conveyor/src/main/scala/com/ovoenergy/globaltopics/serdes/AvroFormatImplicits.scala:11:26: not enough arguments for method apply: (implicit evidence$1: com.sksamuel.avro4s.Encoder[T], implicit evidence$2: com.sksamuel.avro4s.Decoder[T])com.sksamuel.avro4s.RecordFormat[T] in object RecordFormat.
[error] Unspecified value parameter evidence$2.
[error]     RecordFormat.apply[T](AvroSchema[T](readSchema))
[error]                          ^
[error] /Users/nicolae.marasoiu/proj/data-availability-global-topic-conveyor/src/main/scala/com/ovoenergy/globaltopics/serdes/SerdeProvider.scala:29:37: org.apache.avro.Schema does not take parameters
[error]     val schema = SchemaFor[T].schema(DefaultFieldMapper)
[error]                                     ^
[error] /Users/nicolae.marasoiu/proj/data-availability-global-topic-conveyor/src/main/scala/com/ovoenergy/globaltopics/serdes/SerdeProvider.scala:37:70: no arguments allowed for nullary method build: ()com.sksamuel.avro4s.AvroOutputStream[T]
[error]             val os     = AvroOutputStream.binary[T].to(output).build(schema)
[error]                                                                      ^
[error] four errors found
[error] (Compile / compileIncremental) Compilation failed
[error] Total time: 17 s, completed 28-Jul-2020 19:42:21
[IJ]sbt:global-topic-conveyor> 

首先,您可以随时跟踪更改。此外,您可以看到

您没有附加任何源代码,因此我将尝试解决您的失败,因为我可以从您的失败中理解它们

  • SchemaFor.const
    已在3.0.5版中删除。你可以在照片上看到。假设您有
    Schema s
    ,并且您已经启动了
    SchemaFor.const
    ,现在您需要启动它:
    SchemaFor(s)
    。将使用默认的fieldMapper。你可以看到
  • 不再接受争论。因此,假设您有一个应用于
    RecordFormat.apply[T](AvroSchema[T](readSchema))
    的类型T,则需要将其更改为:
    RecordFormat[T]
  • 非常类似于数字1
    SchemaFor.schema
    。相反,您可以只执行以下操作:
    SchemaFor[T].schema
    。不再接受参数,因此不能用括号调用它
  • AvroOutputStream.build
    用于将架构作为参数。再也受不了了。您需要将
    AvroOutputStream.binary[T].to(output).build(schema)
    更改为:
    AvroOutputStream.binary[T].to(output).build()

  • 能否添加一个要迁移的代码段?