【发布时间】:2020-12-13 21:24:17
【问题描述】:
对于使用 RDD 或 Dataset 编写 Spark 项目,是否有任何行业指南?
到目前为止,对我来说显而易见的是:
-
RDD,更多的类型安全,更少的优化(在 Spark SQL 的意义上) -
Dataset,更少的类型安全,更多的优化
在生产代码中推荐哪一个?由于Spark在过去几年很流行,所以目前在stackoverflow中似乎没有找到这样的主题。
我已经预见到大多数社区都支持Dataset :),因此让我先引用this answer 的反对票(请分享反对意见):
就个人而言,我发现静态类型的数据集最没用: 不提供与 Dataset[Row] 相同的优化范围(尽管它们共享存储格式和一些执行计划优化,但它并不能完全受益于代码生成或堆外存储),也不能访问 DataFrame 的所有分析功能.
没有像 RDD 那样灵活,仅原生支持一小部分类型。
当使用 as 方法转换 Dataset 时,编码器的“类型安全”是有争议的。由于数据形状没有使用签名进行编码,因此编译器只能验证 Encoder 的存在。
【问题讨论】: