kryo序列化方式测试

本文通过测试不同序列化方式(包括kryo和java原生序列化)在Spark中的应用,分析了内存占用、运行时间和持久化效率。结果显示,kryo序列化在注册相关类后,能显著降低内存占用并提高运行速度。
摘要由CSDN通过智能技术生成

kryo序列化测试
测试spark程序运行中对RDD进行操作,添加与不添加序列化在性能上的区别。
区别包括占用内存大小,程序运行时间等。

测试spark流程
随机生成字符串,以空格分割成行,进行多次map遍历。对结果进行持久化,并保存成文件。
case class DataCase(input: Int)  // 一个简单的case class.
val testNew2 = testRDD.flatMap(x => x.split(" "))
            .map(x => DataCase(x))
            .map(x => x)  // map * 10086

testNew2.persist()
testNew2.repartition(1)
    .saveAsTextFile("./test.file")

persist() 方法包含了多种持久化类型。
persist() 默认持久化类型为org.apache.spark.storage.StorageLevel.MEMORY_ONLY
// persist(StorageLevel.MEMORY_ONLY)

持久化类型:
MEMORY_ONLY : 将 RDD 以反序列化 Java 对象的形式存储在 JVM 中。如果内存空间不够,部分数据分区将不再缓存,在每次需要用到这些数据时重新进行计算。这是默认的级别。
MEMORY_AND_DISK : 将 RDD 以反序列化 Java 对象的形式存储在 JVM 中。如果内存空间不够,将未缓存的数据分区存储到磁盘,在需要使用这些分区时从磁盘读取。
MEMORY_ONLY_SER : 将 RDD 以序列化的 Java 对象的形式进行存储(每个分区为一个 byte 数组&#

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值