您的位置:首页 > 其它

scala中使用protobuf

2016-05-31 20:11 756 查看
     最近一个项目中,需要在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.运行测试

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: