Spark-Kryo序列化框架

Posted Mr.zhou_Zxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark-Kryo序列化框架相关的知识,希望对你有一定的参考价值。

Spark-Kryo序列化框架

Java的序列化可以序列化任何的类。但是字节多,序列化后,对象提交的也比较大,在后期读取序列化文件的时候就相应的处理速度慢
Spark出于性能的考虑,Spark2.0开始支持另一种叫Kyro的序列化机制。
据说Kyro的速度是Java序列化速度的十倍,但是Kyro支持的类型少
当RDD在进行shuffle数据的时候,简单数据类型、数组和字符型类型已经在Spark内部使用Kyro序列化了。

使用Kyro序列化接口需要注册

  • Code
package com.zxy.spark.Streaming.day005

import org.apache.spark.SparkConf
import org.apache.spark.sql.{DataFrame, SparkSession}

object demo1 {
    def main(args: Array[String]): Unit = {
        val conf: SparkConf = new SparkConf()
            .setAppName("demo1")
            .setMaster("local[*]")
            .set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
            .registerKryoClasses(Array(classOf[Man], classOf[Woman], classOf[People]))
        val spark: SparkSession = SparkSession.builder().config(conf).getOrCreate()
        val df: DataFrame = spark.createDataFrame(Seq(new People(new Man("z"),new Woman("x"))))
        df.show()
        spark.close()
    }
    case class Man(name:String)
    case class Woman(name:String)
    case class People(man:Man,woman:Woman)
}
  • 测试结果
+---+-----+
|man|woman|
+---+-----+
|[z]|  [x]|
+---+-----+

在这里插入图片描述

以上是关于Spark-Kryo序列化框架的主要内容,如果未能解决你的问题,请参考以下文章

text 来自Codyhouse框架的Browserlist片段源代码

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

Combine框架中两个相近操作符scan和reduce探究

Combine框架中两个相近操作符scan和reduce探究

常用Javascript代码片段集锦

Spark闭包与序列化