我在使用 Spark 的缓存机制时遇到了内存管理问题。我目前正在Encoder
将 s 与 Kryo 一起使用,并且想知道切换到 bean 是否会帮助我减少缓存数据集的大小。
Encoder
基本上,在使用s时,使用 bean 而不是 Kryo 序列化的优缺点是什么?是否有任何性能改进?Dataset
除了使用 SER 选项进行缓存之外,有没有办法压缩缓存?
作为记录,我发现了一个类似的主题来处理两者之间的比较。但是,它没有详细介绍这种比较。
我在使用 Spark 的缓存机制时遇到了内存管理问题。我目前正在Encoder
将 s 与 Kryo 一起使用,并且想知道切换到 bean 是否会帮助我减少缓存数据集的大小。
Encoder
基本上,在使用s时,使用 bean 而不是 Kryo 序列化的优缺点是什么?是否有任何性能改进?Dataset
除了使用 SER 选项进行缓存之外,有没有办法压缩缓存?
作为记录,我发现了一个类似的主题来处理两者之间的比较。但是,它没有详细介绍这种比较。
随时你可以。与Encoders
使用通用二进制序列化并将整个对象存储为不透明 blob 的通用二进制不同,它利用对象Encoders.bean[T]
的结构来提供特定于类的存储布局。
Encoders.bean
当您比较使用和创建的模式时,这种差异会变得很明显Encoders.kryo
。
为什么这有关系?
Dataset
转换的完全支持。那么什么时候使用kryo
Encoder
呢?一般来说,当没有其他工作时。就我个人而言,我会完全避免它进行数据序列化。我能想到的唯一真正有用的应用是聚合缓冲区的序列化(例如查看如何在 Spark SQL 中找到分组向量列的平均值?)。