Spark Dataframe 与传统对象映射器

问题描述 投票:0回答:1

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

我希望了解除了 Spark 数据框之外对象映射器的重要性。

dataframe apache-spark objectmapper apache-spark-dataset
1个回答
0
投票

如果必须转换为对象(而不是直接使用DataFrame / Row),那么Spark提供了Encoders。出于性能原因,您通常希望保留尽可能多的使用 Spark Column api(或直接 sql)的转换代码。每当您必须使用自己的类时,从 Sparks 自己的 InternalRow 格式序列化和反序列化对象都会产生成本。

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

Spark 中没有与自动联接到其他表相同的功能,您必须自己从各种数据集中连接它,这可能也不值得。

© www.soinside.com 2019 - 2024. All rights reserved.