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探究