【发布时间】:2019-11-20 04:59:47
【问题描述】:
在spark中,java序列化是默认的,如果kryo那么高效,那么为什么不将它设置为默认值。使用 kryo 是否有一些缺点,或者在什么情况下我们应该使用 kryo 或 java 序列化?
【问题讨论】:
标签: apache-spark serialization kryo
在spark中,java序列化是默认的,如果kryo那么高效,那么为什么不将它设置为默认值。使用 kryo 是否有一些缺点,或者在什么情况下我们应该使用 kryo 或 java 序列化?
【问题讨论】:
标签: apache-spark serialization kryo
这是来自documentation的评论:
Kryo 比 Java 序列化更快、更紧凑 (通常高达 10 倍),但不支持所有 Serializable 类型 并要求您注册您将在程序中使用的类 前进以获得最佳性能。
所以默认不使用,因为:
java.io.Serializable 都支持开箱即用 - 如果您有扩展Serializable 的自定义类,它仍然无法使用 Kryo 序列化,除非已注册。根据documentation备注:
Spark 自动包含 Kryo 序列化器,适用于许多 AllScalaRegistrar 中涵盖的常用核心 Scala 类 Twitter chill 库。
【讨论】:
克里奥 优点:内存消耗低
kryo 没有像我处理 google protobufs 时那样为我工作。那是我必须首先注册 proto 类的时候
https://mvnrepository.com/artifact/de.javakaffee/kryo-serializers/0.45
【讨论】: