Spark-Serialization序列化的2种方式解释对比使用场景

序列化在任何分布式应用程序的性能中都扮演着重要的角色。序列化对象很慢的格式,或者消耗大量字节的格式,将大大降低计算速度。通常情况下,这是优化Spark应用程序时需要优化的第一件事。Spark旨在在方便(允许您在操作中使用任何Java类型)和性能之间取得平衡。它提供了两个序列化库:

~~

一:Java Serialization:

~~
1:默认 2:灵活(可以与任意类)3:慢性能不高体积更大
来自官网:By default, Spark serializes objects using Java’s ObjectOutputStream framework, and can work with any class you create that implements java.io.Serializable. You can also control the performance of your serialization more closely by extending
Java serialization is flexible but often quite slow, and leads to large serialized formats for many classes.
默认情况下,Spark使用Java的ObjectOutputStream框架序列化对象,并且可以与您创建的任何实现Java .io. serializable的类一起工作。还可以通过扩展更紧密地控制序列化的性能
Java序列化是灵活的,但通常很慢,并导致许多类的大型序列化格式。

二:Kryo Serialization:

1:更快 2:体积小3:并不支持所有类4事先要注册(否非更大没有起到很好效果)
来自官网:Spark can also use the Kryo library (version 4) to serialize objects more quickly. Kryo is significantly faster and more compact than Java serialization (often as much as 10x), but does not support all Serializable types and requires you to register the classes you’ll use in the program in advance for best performance.
Spark还可以使用Kryo库(版本4)更快地序列化对象。Kryo比Java序列化快得多,也更紧凑(通常是10倍),但是不支持所有可序列化类型,并且要求您预先注册将在程序中使用的类,以获得最佳性能。
注意:上面说是10倍,其实并没有,要以事实为依据
后期我会带大家一起测试

三:序列化在spark中的使用场景

1:算子里面使用到了外部变量
2:cache缓存
3:shuffle
官网:https://spark.apache.org/docs/latest/tuning.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值