scala中使用protobuf

原创 2016年05月31日 20:11:46

     最近一个项目中,需要在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.运行测试


在VC2015里使用protobuf协议

-
  • 1970年01月01日 08:00

Akka和ProtoBuf的简单实例

Akka是什么? 可扩展的实时事务处理 我们相信编写出正确的具有容错性和可扩展性的并发程序太困难了。这多数是因为我们使用了错误的工具和错误的抽象级别。Akka就是为了改变这种状况而...
  • yangfanchao
  • yangfanchao
  • 2012-07-19 18:38:06
  • 3551

protobuf 学习笔记

初次接触protobuf,在此整理一下自己的一些学习过程及问题,作为笔记或者分享来互相学习...
  • abudexiatian
  • abudexiatian
  • 2016-04-28 15:28:24
  • 3582

spark程序读写protobuf格式数据(java语言)

在spark上,用protobuf替代json格式作为数据序列化存储谷歌的protobuf一般用来将复杂数据结构序列化为二进制数组,非常适合网络传输等领域,其效率和空间占用都优于json格式。这一次,...
  • miangangzhen
  • miangangzhen
  • 2017-04-20 10:27:45
  • 1641

Protobuf与JSON互相转换

Java http://code.google.com/p/protobuf-java-format/ maven com.googlecode.protobuf-java-format pr...
  • kobejayandy
  • kobejayandy
  • 2015-03-14 16:14:32
  • 10159

在scala和spark-shell里粘贴代码块

先输入:paste,然后粘贴代码块,之后按ctrl+D结束输入。注意必须输入大小的D,如果当前不是大写模式,则需要多按一个shift键,把d转成大写。 示例如下: scala> :paste ...
  • houzhizhen
  • houzhizhen
  • 2017-02-09 17:33:16
  • 2152

scala spark编程常见问题总结

问题:ERROR ActorSystemImpl: Uncaught fatal error from thread [sparkDriver-akka.remote.default-remote-d...
  • sivolin
  • sivolin
  • 2015-07-28 16:50:36
  • 3706

protobuf repeated类型的使用

转载地址:http://www.cppblog.com/API/archive/2014/12/09/209070.aspx        protobuf是Google开发的一个序列化...
  • stpeace
  • stpeace
  • 2017-01-11 22:20:23
  • 3169

AKKA序列化

序列化 Akka有内置的序列化扩展,你可以使用内置的序列化器,也可以自定义。 序列化机制可以在Akka内部用于序列化消息,也可以用于专门序列化。 用法 配置 Akka要想知道那个序列化器用于...
  • wusandi
  • wusandi
  • 2017-10-18 21:44:56
  • 429

java中使用akka手记一

什么是actor? Actor模型在并发编程中是比较常见的一种模型。很多开发语言都提供了原生的Actor模型。例如erlang,scala等。它由Carl Hewitt于上世纪70年代早期提出,...
  • zhousenshan
  • zhousenshan
  • 2017-03-12 15:18:43
  • 733
收藏助手
不良信息举报
您举报文章:scala中使用protobuf
举报原因:
原因补充:

(最多只允许输入30个字)