我们有一个用例,需要对avro数据集进行一些列式转换。我们曾经经营乔布斯先生直到现在,现在想探索Spark。我正在学习一些教程,不确定是应该使用rdd还是dataframe/dataset。既然dataframes是以列形式存储的,那么使用dataframes是正确的选择吗?因为我的所有转换本质上都是列形式的?或者它没有太大的区别,因为在内部所有的东西都是基于RDD的?
我们有一个用例,需要对avro数据集进行一些列式转换。我们曾经经营乔布斯先生直到现在,现在想探索Spark。我正在学习一些教程,不确定是应该使用rdd还是dataframe/dataset。既然dataframes是以列形式存储的,那么使用dataframes是正确的选择吗?因为我的所有转换本质上都是列形式的?或者它没有太大的区别,因为在内部所有的东西都是基于RDD的?
2条答案
按热度按时间1tu0hz3e1#
为了回答您的问题,我对这三种数据结构进行了全面的比较。
每个特定情况下的答案取决于转换的性质,而不是特定的序列化格式。一般来说,使用更高级别的api提供了更多的便利,但是低级别api(rdd)提供了更多的灵活性和控制。
yptwkmov2#
从性能的Angular 来看,数据格式不会对用于描述转换的api产生任何影响。
我建议尽可能使用最高级的api(dataframes),如果您需要的某些操作无法以任何其他方式实现,则只切换到rdds。