gpt4 book ai didi

scala - Spark : Dataset Serialization

转载 作者:行者123 更新时间:2023-12-01 23:09:40 24 4
gpt4 key购买 nike

如果我有一个数据集,其中每个记录都是一个案例类,并且我会按如下所示保留该数据集,以便使用序列化:

myDS.persist(StorageLevel.MERORY_ONLY_SER)

Spark 是否使用 java/kyro 序列化来序列化数据集?或者就像数据帧一样,Spark 有自己的方式将数据存储在数据集中?

最佳答案

Spark Dataset不使用标准序列化程序。相反,它使用 Encoders ,它“理解”数据的内部结构,可以有效地将对象(任何具有 Encoder 的对象,包括 Row )转换为内部二进制存储。
使用 Kryo 或 Java 序列化的唯一情况是您 explicitly apply Encoders.kryo[_]Encoders.java[_] .在任何其他情况下,Spark 将解构对象表示并尝试应用标准编码器(原子编码器、Product 编码器等)。与 Row 相比的唯一区别是它的 Encoder - RowEncoder (在某种意义上 Encoders 类似于镜头)。
Databricks 明确放置 Encoder/Dataset序列化与 Java 和 Kryo 序列化器的对比,在其 Introducing Apache Spark Datasets 中(特别注意使用编码器进行闪电般的快速序列化部分)
enter image description here
enter image description here
图片来源

  • 迈克尔·阿姆布鲁斯特、范文臣、Reynold Xin 和 Matei Zaharia。 Apache Spark 数据集简介,https://databricks.com/blog/2016/01/04/introducing-apache-spark-datasets.html
  • 关于scala - Spark : Dataset Serialization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47983465/

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