问题标签 [scalapb]

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.

0 投票
1 回答
166 浏览

scala - 如何在 sbt 多项目中定义编译设置?

我正在尝试使用sbt multi-project配置新的 Scala 构建。我想使用sbt- protoc,特别是需要此配置设置的 ScalaPB:

现在的问题是如何sbt.librarymanagement.Configurations.Compile在多项目中正确应用该配置。我正在使用 Scala 2.13 和 sbt 1.4.7。

我的当前build.sbt

当我尝试编译我的项目时,编译器会说:

0 投票
1 回答
158 浏览

scala - Spark将原始字节解组为可读格式

我的 Spark 应用程序从 Kafka 接收二进制数据。数据作为字节原始消息发送到 Kafka。原型消息是:

使用 ScalaPB 库,我可以将 Any 消息反序列化为其原始格式。如何将值从字节反序列化为可读格式?SerializationUtils 不起作用。这就是 Any 消息在反序列化后的样子。

该值仍为其字节格式。使用 SerializationUtils 对其进行反序列化后,数据不正确。

还有其他选择吗?有没有办法将字节反序列化为字符串、结构或字符串 Json?

我使用带有 udf 的 ScalaPBs 示例将字节反序列化为 Any 消息。

带有 SerializationUtils 字节值的 udf 如下所示。

0 投票
1 回答
128 浏览

scala - 将文件级选项设置为 scalapb 项目

我正在使用 ScalaPB(0.11.1 版)和插件 sbt-protoc(1.0.3 版)尝试在 Scala 2.12 中使用 ProtocolBuffers 编译一个旧项目。阅读文档,我想将文件属性设置preserve_unknown_fieldsfalse. 但我的问题是,在哪里?我需要在哪里设置这个标志?在 .proto 文件上?

我还尝试通过在我的另一个 .proto 文件旁边创建一个 package.proto 文件来包含该标志作为包范围选项,该文件具有以下内容(如此处指定

但是在尝试编译时,出现以下错误:

syntax = "proto3";一开始也尝试过,但它不起作用。

任何帮助将不胜感激。

0 投票
1 回答
116 浏览

apache-spark - 将 Scalapb 与 spark 结构化流和 java 生成的 protobuf 类一起使用

我正在从事的项目处于规划/原型设计阶段,我们希望使用 Kafka 中的 protobuf 编码消息和结构化流将我们的数据流式传输到 spark 3 中。我们已经使用火花流(与结构化流)进行原型设计,我们可以在其中指定 Kafka 将使用的 serde 类,但对于结构化流,它显然不同。

从我到目前为止所读到的,似乎最干净的方法是使用 scalapb。它的文档看起来很简单(谢谢!)但是我无法确定它是否可以与现有的生成的 Java protobuf 类一起使用,或者我是否还必须生成这些相同 .proto 文件的 Scala 版本。

使用文档@ https://scalapb.github.io/docs/sparksql中的示例, Person 类可以是 Java 还是 Scala?

0 投票
1 回答
240 浏览

scala - 如何在运行时使用 ScalaPB 在 Spark 上一般解压缩 google.protobuf.Any?

我有以下 protobuf 设置:

whereEntityEnvelope.entity可以是任何类型打包为google.protobuf.Any. 每个 protobuf 消息都存储在编码为 Base64 的磁盘中。

阅读这些消息时,如果我在解包时在编译类型中使用特定的实体类型,它会完美运行:

但我想使用相同的代码在运行时读取任何类型的实体,而无需指定其类型。我得到的“更接近”是(但甚至没有编译):

由于Any包含typeUrl, 是否可以找到正确的描述符并在运行时自动解包,而无需在编译时指定类型?

0 投票
1 回答
55 浏览

scala - ScalaPB:compilePlugin 生成不合适的类

我正在尝试使用协议缓冲区来生成 Scala 案例类。

基本设置是: 1.在 project/plugins.sbt 中:

2.在 build.sbt 中:

.proto 文件的内容:

但是在目标目录中它会生成非常奇怪的类“GeoPoint”(这个“短”类的一部分):

0 投票
1 回答
103 浏览

scala - Scala scalapb GeneratedMessageCompanion- 不符合 trait GeneratedMessageCompanion's

我正在尝试使用 Scalapb ( https://scalapb.github.io/docs/scalapbc/ ) 生成 Scala proto buff 类。我能够生成 scala 文件,但出现以下错误。

类型参数 [com.huawei.utility.protobuff.embedtoRedis.embedtoRedis] 不符合 trait GeneratedMessageCompanion 的类型参数界限 [A <: scalapb.GeneratedMessage with scalapb.Message[A]]

样例.proto

使用以下命令编译后,我得到了两个 scala 类。 ScalaPbc\scalapbc-0.11.1\bin>scalapbc.bat -v3.5.1 --scala_out=C:\Users\satheesh\Documents\ScalaPbc\new sample.proto

Scala 类:EmbedtoRedis.scala SampleProto.scala

我在以下几行中面临 embedToRedis.scala 中的问题。

错误: 类型参数 [com.huawei.utility.protobuff.embedtoRedis.embedtoRedis] 不符合 trait GeneratedMessageCompanion 的类型参数边界 [A <: scalapb.GeneratedMessage with scalapb.Message[A]]

如果我遗漏了什么,你能帮忙吗?

0 投票
2 回答
151 浏览

scala - 如何更改 protobuf 文件的 scalaPB 默认路径?

我有一个 build.sbt 用于同一个项目中的几个包。当我进行 sbt 编译时,我的 protobuf 文件位于 [packagename]/src/main/protobuf/* 下,因此它不会扫描这些文件,因为它们在路径中有额外的包名称。如何更改默认的 protobuf 文件路径?

0 投票
1 回答
60 浏览

scala - 如何使用 scalapb 在 proto 中描述 Option[FiniteDuration]

我正在尝试使用 proto3 和 scalapb,但我无法映射FiniteDuration也无法将其用作Option. 任何人都可以请同样的建议

0 投票
1 回答
82 浏览

scala - 对象不是包的成员

我正在尝试使用 scalaPB 的官方示例来实现简单的服务器客户端应用程序。scala 代码可以在他们的gitHub上找到

但是,当我尝试运行它时,object helloworld is not a member of package io.grpc.examples.helloworld当我尝试使用import io.grpc.examples.helloworld.helloworld.{foo}.

我的 build.sbt 文件:

我的文件如下所示: