Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark java序列化与kryo序列化的优缺点是什么?_Apache Spark_Serialization_Kryo - Fatal编程技术网

Apache spark java序列化与kryo序列化的优缺点是什么?

Apache spark java序列化与kryo序列化的优缺点是什么?,apache-spark,serialization,kryo,Apache Spark,Serialization,Kryo,在spark中,java序列化是默认的,如果kryo那么高效,那么为什么不将其设置为默认值呢。使用kryo是否存在一些缺点,或者在什么情况下我们应该使用kryo或java序列化?下面是以下作者的评论: Kryo比Java序列化要快得多、紧凑得多 (通常高达10倍),但不支持所有可序列化类型 并要求您注册将在中的程序中使用的类 为获得最佳性能而前进 因此,默认情况下不使用它,因为: 并非所有java.io.Serializable都支持开箱即用-如果您有扩展Serializable的自定义类,则除

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

下面是以下作者的评论:

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

因此,默认情况下不使用它,因为:

  • 并非所有
    java.io.Serializable
    都支持开箱即用-如果您有扩展
    Serializable
    的自定义类,则除非注册,否则仍无法使用Kryo对其进行序列化
  • 需要注册自定义类
  • 注:根据:

    Spark自动包含许多Kryo序列化程序 中的AllScalareRegistrar中介绍的常用核心Scala类 图书馆

    克鲁约 优点:内存消耗低

    kryo没有像我处理谷歌protobufs时那样为我工作。那是我第一次注册proto类的时候


    并非所有serializable都受支持-不理解这部分@Vladislav Varslavans(你能举个例子吗),不注册该类不使其序列化我已经更新了答案。希望它能带来澄清。注册一个类是一种开销吗?我的意思是,只要我在记忆力和时间上有所提高,我注册10门课就没有问题。还是我误解了什么?我不认为这是一种开销。至少文档中没有提到这方面的内容。