美文网首页
spark 的kyro序列化问题与感想

spark 的kyro序列化问题与感想

作者: 早点起床晒太阳 | 来源:发表于2020-07-07 15:51 被阅读0次

参考资料:https://spark.apache.org/docs/2.4.1/tuning.html (官网地址)

前言

一直都在说kyro序列化,这一块对于spark在序列化这块性能提升比较大,今天研究下

spark的序列化机制

spark提供2个序列化库

  • 1、Java serialization

java 序列化库很灵活但是很慢,序列化对象占用的空间大。

  • 2、Kryo serialization

kyro序列化更块更紧凑,但是不支持所有的Serializable 类型,需要去预先注册

更改序列化库

可以使用这个配置来修改序列化库

spark.serializer

默认为 org.apache.spark.serializer.JavaSerializer
如果打算替换Kryo为 org.apache.spark.serializer.KryoSerializer

替换为Kryo序列化库存在的问题

kyro预先注册需要手动注册,通过类似于这种方式

conf.registerKryoClasses(Array(classOf[Info], classOf[scala.collection.mutable.WrappedArray.ofRef[_]]))

kyro有相应的配置

spark.kryo.registrationRequired

默认为false。如果修改为true的话,如果有类没有注册kyro类的话,会抛出异常。如果为false则会写入未注册的类名和对象一起,显著增大性能开销。

个人感觉:如果项目稳定的话,代码修改量小的时候,可以使用kryo这种方式,可以加上spark.kryo.registrationRequired 配置,来检测哪个类没有被注册。在频繁变动的场景的话,并且对性能要求不高,java序列化就足够。

相关文章

网友评论

      本文标题:spark 的kyro序列化问题与感想

      本文链接:https://www.haomeiwen.com/subject/shzaqktx.html