gpt4 book ai didi

java - proto3, com.google.protobuf.CodedInputStream.readStringRequireUtf8()Ljava/lang/String;

转载 作者:行者123 更新时间:2023-11-29 08:39:45 40 4
gpt4 key购买 nike

我正在使用我最新项目中的 Protocol Buffer (proto3)。但是我遇到以下问题。从 python 生成的编码消息,我正在尝试从 Scala 解码它(我正在使用 SPARK)。您可以看到来自“值”的实际消息及其长度 227,如控制台中所述。

错误字段只是典型的字符串类型字段。我也曾尝试将字符串字段解码为“UTF-8”,但没有成功。它看起来编码/解码问题。有没有其他人遇到类似的问题?

控制台输出

...

value:
U
$a5a9c2bb-efd2-4ea3-ae0e-7479925a7807"kafka_producer.py*2016-12-18 10:37:25.075614*
data{"url": "some url 0", "title": "some title", "_id": "5815a37c43cfd44120e50538", "content": "some content", "tags": ["football"]}
value length: 227
Exception in thread "streaming-job-executor-0" java.lang.NoSuchMethodError: com.google.protobuf.CodedInputStream.readStringRequireUtf8()Ljava/lang/String;
at org.libero.messages.Messages$Event.<init>(Messages.java:160)
at org.libero.messages.Messages$Event.<init>(Messages.java:117)
at org.libero.messages.Messages$Event$1.parsePartialFrom(Messages.java:1564)
at org.libero.messages.Messages$Event$1.parsePartialFrom(Messages.java:1559)
at com.google.protobuf.CodedInputStream.readMessage(CodedInputStream.java:309)
at org.libero.messages.Messages$EventDataProduced.<init>(Messages.java:1742)
at org.libero.messages.Messages$EventDataProduced.<init>(Messages.java:1697)
at org.libero.messages.Messages$EventDataProduced$1.parsePartialFrom(Me

...

代码片段

 ....

nonEmptyMsgs.foreachRDD { msgsRDD =>
println("Trying to print each RDD: " + msgsRDD)
println("Count: " + msgsRDD.count())
val elems = msgsRDD.collect()
println("Elems: " + elems)
for (v <- elems) {
println("key: " + v._1)
println("value: " + v._2)
println("value length: " + v._2.length())
val bytes = new String(v._2).getBytes()
val event = EventDataProduced.parseFrom(ByteString.copyFrom(bytes))
println("event: " + event)
}
}

...

最佳答案

How can I use proto3 with Hadoop/Spark?

如上链接,我修复了它。

只需重新定位原型(prototype)缓冲区,VerifyError 就会消失:

      <relocations>
<relocation>
<pattern>com.google.protobuf</pattern>
<shadedPattern>shaded.com.google.protobuf</shadedPattern>
</relocation>
</relocations>

关于java - proto3, com.google.protobuf.CodedInputStream.readStringRequireUtf8()Ljava/lang/String;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41205239/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com