gpt4 book ai didi

Spark 2.x 数据集的 Kryo 序列化

转载 作者:行者123 更新时间:2023-12-04 12:57:20 24 4
gpt4 key购买 nike

使用 Dataset API 时是否仍需要 Kryo 序列化?

因为数据集使用 Encoders用于或序列化和反序列化:

  • Kyro 序列化甚至适用于数据集吗? (前提是将正确的配置传递给 Spark,并且正确注册了类)
  • 如果它有效,它将提供多少性能改进?
    谢谢。
  • 最佳答案

    如果您在范围内有一个可以序列化数据集类型的编码器(如 ExpressionEncoder 或 RowEncoder),则您不需要将 Kryo 用于数据集。这些可以进行字段级序列化,因此您可以在不解压整个对象的情况下对数据集中的列进行过滤等操作。编码器还有其他优化,例如“运行时代码生成以构建自定义字节码以进行序列化和反序列化”,并且可以比 Kryo 快许多倍。

    但是,如果您尝试将类型放入数据集中,而 Spark 找不到适合它的编码器,您将在编译时或运行时收到错误消息(如果不可序列化的类型嵌套在 case 类或其他内容中)。例如,假设您想使用 fastutil 库中的 DoubleRBTreeSet。在这种情况下,你需要为它定义一个编码器,一个快速的解决方法通常是使用 Kryo:

    implicit val rbTreeEncoder = Encoders.kryo[DoubleRBTreeSet]

    关于Spark 2.x 数据集的 Kryo 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44734537/

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