gpt4 book ai didi

apache-spark - Spark Dataset 相对于 DataFrame 的劣势

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

我知道Dataset的优点(类型安全等),但我找不到任何相关文档 Spark 数据集限制 .

Spark Dataset有什么具体场景吗?是 不推荐 更好地使用 DataFrame .

目前我们所有的数据工程流程都使用 Spark (Scala) DataFrame .
我们想利用Dataset ,对于我们所有的新流。所以知道Dataset的所有限制/缺点会帮助我们。

编辑:这与 Spark 2.0 Dataset vs DataFrame 不一样,其中解释了对 Dataframe/Dataset 的一些操作。或其他问题,其中大多数解释了 rdd、数据框和数据集之间的差异以及它们是如何演变的。这是有针对性的知道,何时不使用数据集

最佳答案

在某些情况下,我发现 Dataframe(或 Dataset[Row])比类型化数据集更有用。

例如,当我使用没有固定模式的数据时,例如 JSON 文件包含具有不同字段的不同类型的记录。使用 Dataframe,我可以轻松地“选择”出我需要的字段,而无需知道整个架构,甚至可以使用运行时配置来指定我将访问的字段。

另一个考虑是 Spark 可以比 UDAF 和自定义 lambda 更好地优化内置的 Spark SQL 操作和聚合。因此,如果您想获得列中值的平方根,那是 Spark SQL 中的内置函数 ( df.withColumn("rootX", sqrt("X")) ),但在 lambda ( ds.map(X => Math.sqrt(X)) ) 中执行此操作效率会较低,因为 Spark 不能有效地优化您的 lambda 函数。

还有许多非类型化的 Dataframe 函数(如统计函数)是为 Dataframes 而不是类型化的 Datasets 实现的,你经常会发现,即使你从一个 Dataset 开始,当你完成聚合时剩下一个 Dataframe,因为这些函数通过创建新列、修改数据集的架构来工作。

一般来说,除非您有充分的理由,否则我认为您不应该从工作数据帧代码迁移到类型化数据集。从 Spark 2.4.0 开始,许多 Dataset 功能仍被标记为“实验性”,并且如上所述,并非所有 Dataframe 功能都具有 Dataset 等效项。

关于apache-spark - Spark Dataset 相对于 DataFrame 的劣势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55268125/

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