Spark Dataframe 与传统对象映射器

Spark Dataframe Vs traditional object mapper

提问人:Sanjeev Kumar 提问时间:11/17/2023 更新时间:11/17/2023 访问量:19

问:

在典型用例中,传统的对象映射器用于抽象代码和数据库。在我的方案中,我使用 spark 从源读取数据并转换为 DataFrame。我的情况的目标是 GCP BQ。在这种情况下,使用传统对象映射器映射到 GCP BQ 表有什么优势吗?或者 spark 的 DataFrame 或任何其他功能解决了对象映射器的目的?

我希望了解对象映射器在拥有 spark 数据帧之上的重要性。

dataframe objectmapper apache-spark-dataset

评论


答:

1赞 Chris 11/17/2023 #1

如果必须转换为对象(而不是直接使用 DataFrame / Row),则 Spark 会提供编码器。出于性能原因,通常希望使用 Spark Column API(或直接使用 sql)保留尽可能多的转换代码。每当您必须使用自己的类时,从 Sparks 自己的 InternalRow 格式序列化和反序列化对象都需要付费。

对于那些你确实需要为JVM使用自己的类的场合,你有Bean编码器(也用于Java),产品编码器(Scala中的case类)或kyro等。如果想要更具体的编码(特定于 Scala),则可以使用 Frameless,但默认的 Spark 产品编码器已经提供了通常需要的大部分内容。

在 Spark 中没有等同于自动联接其他表的功能,您必须从各种数据集中自行连接它,同样,这可能不值得。