【问题标题】:Which is better among RDD, Dataframe, Dataset for doing avro columnar operations in spark?在 RDD、Dataframe、Dataset 中哪个更好用于在 spark 中进行 avro 列操作?
【发布时间】:2020-08-26 07:14:51
【问题描述】:
我们有一个用例,需要对 avro 数据集进行一些列转换。我们以前一直运行 MR 作业,现在想探索 spark。我正在阅读一些教程,但不确定我们应该使用 RDD 还是 Dataframe/Dataset。由于 Dataframes 是按列存储的,因此使用 Dataframes 是否是正确的选择,因为我所有的转换本质上都是列式的?还是因为内部一切都基于 RDD,所以没有太大区别?
【问题讨论】:
标签:
dataframe
apache-spark
apache-spark-sql
rdd
apache-spark-dataset
【解决方案1】:
为了回答您的问题,我在所有三种数据结构之间遇到了comprehensive comparison。
每种特定情况的答案取决于转换的性质,而不是特定的序列化格式。一般来说,使用更高级别的 API 会更方便,但使用低级 API (RDD) 的灵活性和控制力更强。
【解决方案2】:
从性能的角度来看,您的数据格式不会对您用来描述转换的 API 产生任何影响。
我建议尽可能使用最高级别的 API(DataFrames),并且仅当您需要的某些操作无法以任何其他方式实现时才切换到 RDD。