scala中使用protobuf

     最近一个项目中,需要在spark中解析protobuf编码过的数据。

     针对这个问题,我首先试了一下在scala中解析protobuf编码后数据的功能,下面记录了详细过程

     1.书写proto文件

    2.编译proto文件,获取java类文件


    3.把刚刚得到java类文件拷贝maven工程目录下,注意目录结果和package一致

     4.修改maven配置文件,加入对protobuf的依赖

    

      5.编写读写protobuf的scala代码

package hello

import scala.collection.JavaConversions._
import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
import myproto._

object helloword {
  def main(args: Array[String]) {
    println("start  .......")
    1.构建对象
    val personBuilder = PersonMsg.Person.newBuilder()
    personBuilder.setId(1)
    personBuilder.setName("老王")
    personBuilder.setEmail("laowang@163.com")
    personBuilder.addFriends("zhangsan")
    personBuilder.addFriends("lisi")
    val person1 = personBuilder.build()

    2.序列化
    val output = new ByteArrayOutputStream()
    person1.writeTo(output)

    val byteArray = output.toByteArray
    反序列化
    val input = new ByteArrayInputStream(byteArray)
    val person2 = PersonMsg.Person.parseFrom(input)

    打印对象
    println("ID:" + person2.getId)
    println("name:" + person2.getName)
    println("email:" + person2.getEmail)
    person2.getFriendsList.toList.toArray.map(item=>println("-----",item,"-------"))

  }

}
      6.运行测试


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值