gpt4 book ai didi

java - Spark编码器: when to use beans()

转载 作者:行者123 更新时间:2023-11-30 06:05:49 25 4
gpt4 key购买 nike

我在使用Spark的缓存机制时遇到了内存管理问题。我目前正在将 Encoder 与 Kryo 结合使用,想知道切换到 beans 是否可以帮助我减少缓存数据集的大小。

基本上,在使用 Encoder 时,使用 beans 相对于 Kryo 序列化有何优缺点?有任何性能改进吗?除了使用 SER 选项进行缓存之外,还有其他方法可以压缩缓存的数据集吗?

根据记录,我发现了类似的 topic这解决了两者之间的比较。但是,它没有详细讨论此比较。

最佳答案

只要有可能。与使用通用二进制序列化并将整个对象存储为不透明 blob 的通用二进制 Encoder 不同,Encoders.bean[T] 利用对象的结构来提供特定于类的存储布局。

当您比较使用 Encoders.beanEncoders.kryo 创建的架构时,这种差异就变得很明显。

为什么这很重要?

  • 您可以使用 SQL API 进行高效的字段访问,无需反序列化,并且完全支持所有数据集转换。
  • 通过透明字段序列化,您可以充分利用列式存储,包括内置压缩。

那么什么时候使用kryo Encoder?一般来说,当其他方法都不起作用时。就我个人而言,我会完全避免它进行数据序列化。我能想到的唯一真正有用的应用程序是聚合缓冲区的序列化(例如检查 How to find mean of grouped Vector columns in Spark SQL? )。

关于java - Spark编码器: when to use beans(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51370288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com