问题标签 [avro4s]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - 找不到 FromRecord 的隐含值
我正在尝试开始使用 avro 和 avro4s,但在让一个愚蠢的示例正常工作时遇到了麻烦。
我什至无法在源代码库中找到我自己的测试版本来编译 - https://github.com/sksamuel/avro4s/blob/master/avro4s-core/src/test/scala/com/sksamuel/ avro4s/AvroJsonInputTest.scala#L14-L20
我收到标题中提到的错误could not find implicit value for parameter fromRecord: com.sksamuel.avro4s.FromRecord[Foo]
。
我正在使用 Scala 2.11.8 和 avro 1.7.0。我究竟做错了什么?
java - 从具有超过 254 个字段的模式 avro 生成平面案例类
我正在研究一个平面模式,里面没有嵌套类型,它有超过 254 个字段。
目标:我想做的是通过特定的生成器自动将这种模式转换为平面案例类
问题:JVM 中参数列表的长度不能超过 254
我试过的 => 使用插件sbt-avrohugger和sbt-avro4s,但它们的效果并不好。
问:有没有办法实现目标?
scala - 如何在二进制序列化数据中向 avro4s 添加进化
我有这样的课程:
我用这个在DAO中将它序列化为二进制文件。
现在我将文件二进制文件保存到硬盘。一切都好。现在我想用像“dummy:String”这样的新字段来改变 SurveyTemplate
如果我现在加载文件并尝试反序列化,我会得到一个 java.util.NoSuchElementException,这意味着它们没有可以反序列化的文件。如果我删除附加字段一切正常。
这是列表方法:
我怎样才能增加进化的可能性?
谢谢你。
补充:打印结果
我的新调查模板:
现在是最小的
我的sbt:
scala - 具有泛型类型问题的 Avro 序列化
我需要在 Scala 中编写一个函数,该函数返回一个用 AvroOutputStream 序列化的字节数组,但是在 scala 中我无法获取我在输入中传递的通用对象的类。这是我的实用程序类:
如您所见,如果您测试此代码是 AvroOutputStream 无法识别 T 类,因此它无法为其生成模式。希望你能帮忙!谢谢
PS:已经尝试过使用 TypeTag 和 ClassTag,没有任何效果。
apache-kafka - AVRO 模式更新的问题
我有一个简单的案例类:
我添加字段“名称”
然后在 avro 模式(user.avsc)中添加此字段
此类用于其他案例类:
化学(auth_request.avsc)
在那之后改变我的消费者开始抛出异常
java.util.NoSuchElementException:在 scala.collection.immutable.Stream$Empty$.head(Stream.scala:1104) 在 scala.collection.immutable.Stream$Empty$.head(Stream.scala:1102) 的空流的头在 test.consumers.AuthRequestListener.$anonfun$new$2(AuthRequestListener.scala:39) 在 scala.util.Try$.apply(Try.scala:209) 在 test.consumers.AuthRequestListener.$anonfun$new$1(AuthRequestListener. scala:36) at test.consumers.AuthRequestListener.$anonfun$new$1$adapted(AuthRequestListener.scala:35) at akka.stream.impl.fusing.Map$$anon$9.onPush(Ops.scala:51) at akka .stream.impl.fusing.GraphInterpreter.processPush(GraphInterpreter.scala:519) at akka.stream.impl.fusing.GraphInterpreter.processEvent(GraphInterpreter.scala:482) at akka.stream.impl.fusing.GraphInterpreter.execute(GraphInterpreter .scala:378) 在 akka。stream.impl.fusing.GraphInterpreterShell.runBatch(ActorGraphInterpreter.scala:588) at akka.stream.impl.fusing.GraphInterpreterShell$AsyncInput.execute(ActorGraphInterpreter.scala:472) at akka.stream.impl.fusing.GraphInterpreterShell.processEvent( ActorGraphInterpreter.scala:563) at akka.stream.impl.fusing.ActorGraphInterpreter.akka$stream$impl$fusing$ActorGraphInterpreter$$processEvent(ActorGraphInterpreter.scala:745) at akka.stream.impl.fusing.ActorGraphInterpreter$$anonfun$在 akka.actor.Actor.aroundReceive$(Actor.scala:515) 在 akka.actor.Actor.aroundReceive(Actor.scala:517) 在 akka.stream.impl.fuses 处接收 $1.applyOrElse(ActorGraphInterpreter.scala:760) .ActorGraphInterpreter.aroundReceive(ActorGraphInterpreter.scala:670) 在 akka.actor.ActorCell.receiveMessage(ActorCell.scala:588) 在 akka.actor。ActorCell.invoke(ActorCell.scala:557) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:258) at akka.dispatch.Mailbox.run(Mailbox.scala:225) at akka.dispatch.Mailbox.exec(Mailbox .scala:235) 在 akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) 在 akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) 在 akka.dispatch.forkjoin.ForkJoinPool。在 akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) 运行Worker(ForkJoinPool.java:1979)运行任务(ForkJoinPool.java:1339)在akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)在akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)运行任务(ForkJoinPool.java:1339)在akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)在akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
我试图清理构建并使缓存无效 - 我似乎在某些地方缓存了以前版本的架构,请帮助!
scala - 如何检查 avro 模式注册表使用情况
我正在通过 avro4s 使用 avro。这是我对消费者/生产者的配置
我怀疑寄存器是否被使用。当我的应用程序运行时,它在模式注册表日志中是静默的。
如何检查我的应用程序是否使用注册表?
如果不是 - 如何解决?
apache - Avro 消息中的模式
我看到 Avro 消息嵌入了架构,然后是二进制格式的数据。如果发送了多条消息并且为每条消息创建了新的 avro 文件,那么 Schema 不是嵌入开销吗?那么,这是否意味着,生产者对消息进行批处理然后写入总是很重要的,所以将多条消息写入一个 avro 文件,只携带一个模式?另一方面,是否有一个选项可以在使用 Generic/SpecificDatum 编写器进行序列化时消除模式嵌入?
scala - Avro4s 通用 toByteArray / fromByteArray
我对 Avro4s 的通用版本 toByteArray / fromByteArray 函数有疑问
我发现这个带有泛型类型问题的 Avro 序列化
这是有效的:
但这不是!
它抛出编译异常:
错误:(48, 44) 找不到 com.sksamuel.avro4s.ToRecord[T] 类型的证据参数的隐式值 val output = AvroOutputStream.binaryT 错误:(48, 44) 方法二进制的参数不足:(隐式证据23 美元:com.sksamuel.avro4s.SchemaFor[T],隐含证据 24 美元:com.sksamuel.avro4s.ToRecord[T])com.sksamuel.avro4s.AvroBinaryOutputStream[T]。未指定值参数证据 $24。val 输出 = AvroOutputStream.binaryT
我做错了什么?
upd 愚蠢的错误
一定是
:D
关于尚未解决的问题
如果类的字段之一是 AnyRef
编译失败:找不到隐式 SchemaFor ...
scala - avro4s 无法反序列化 AnyRef
我有一个简单的案例类
然后我想通过制作人将此发送到kafka主题我这样做
这运作良好
然后我尝试消费这个
这适用于有效载荷中的任何类。
但!如果是任何参考。消费者代码失败
错误:(38, 96) 找不到类型为 com.sksamuel.avro4s.FromRecord[test.messages.KafkaContainer] val 输入的证据参数的隐式值:AvroBinaryInputStream[KafkaContainer] = AvroInputStream.binaryKafkaContainer
错误:(38, 96) 二进制方法的参数不足:(隐含证据 $21:com.sksamuel.avro4s.SchemaFor[test.messages.KafkaContainer],隐含证据 $22:com.sksamuel.avro4s.FromRecord[test.messages. KafkaContainer])com.sksamuel.avro4s.AvroBinaryInputStream[test.messages.KafkaContainer]。未指定值参数证据 $22。val 输入:AvroBinaryInputStream[KafkaContainer] = AvroInputStream.binaryKafkaContainer
如果我声明隐含
它无法编译
错误:(58, 71) 找不到类型为 com.sksamuel.avro4s.FromValue[Object] 隐式值的惰性隐式值 fromRecord: FromRecord[KafkaContainer] = FromRecord[KafkaContainer]
错误:(58, 71) 方法lazyConverter 的参数不足:(隐式 fromValue: shapeless.Lazy[com.sksamuel.avro4s.FromValue[Object]])shapeless.Lazy[com.sksamuel.avro4s.FromValue[Object]]。未指定值参数 fromValue。隐式验证 fromRecord:FromRecord[KafkaContainer] = FromRecord[KafkaContainer]
如果添加每个隐含的编译器是必需的
编译失败并出现错误
宏扩展期间出现错误:(58, 69) 异常:java.lang.IllegalArgumentException:要求失败:需要一个案例类,但 Object 不在 com.sksamuel.avro4s 的 scala.Predef$.require(Predef.scala:277) 处。 FromRecord$.applyImpl(FromRecord.scala:283) 隐式验证 fromRecordObject: FromRecord[Object] = FromRecord[Object]
但是如果我为某个类替换 AnyRef - 不需要隐式,一切都会再次正常