【问题标题】:What are the pros and cons of java serialization vs kryo serialization?java序列化与kryo序列化的优缺点是什么?
【发布时间】:2019-11-20 04:59:47
【问题描述】:

在spark中,java序列化是默认的,如果kryo那么高效,那么为什么不将它设置为默认值。使用 kryo 是否有一些缺点,或者在什么情况下我们应该使用 kryo 或 java 序列化?

【问题讨论】:

    标签: apache-spark serialization kryo


    【解决方案1】:

    这是来自documentation的评论:

    Kryo 比 Java 序列化更快、更紧凑 (通常高达 10 倍),但不支持所有 Serializable 类型 并要求您注册您将在程序中使用的类 前进以获得最佳性能。

    所以默认不使用,因为:

    1. 并非每个java.io.Serializable 都支持开箱即用 - 如果您有扩展Serializable 的自定义类,它仍然无法使用 Kryo 序列化,除非已注册。
    2. 需要注册自定义类。

    根据documentation备注:

    Spark 自动包含 Kryo 序列化器,适用于许多 AllScalaRegistrar 中涵盖的常用核心 Scala 类 Twitter chill 库。

    【讨论】:

    • 并非每个可序列化都受支持 - 不理解这部分 @Vladislav Varslavans(你能举个例子),不是注册类不会使其可序列化
    • 我已经更新了我的答案。希望它能带来清晰。
    • 注册类是开销吗?我的意思是,只要我的记忆力和时间有所改善,我注册 10 个课程就没有问题。还是我误会了什么?
    • 我不认为这是开销。至少文档没有提到任何相关内容。
    【解决方案2】:

    克里奥 优点:内存消耗低

    kryo 没有像我处理 google protobufs 时那样为我工作。那是我必须首先注册 proto 类的时候

    https://mvnrepository.com/artifact/de.javakaffee/kryo-serializers/0.45

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-26
      • 2023-03-07
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多