Apache spark Spark/Scala Rdd的groupBy函数和DataFrame之间的任何工作差异

Apache spark Spark/Scala Rdd的groupBy函数和DataFrame之间的任何工作差异,apache-spark,dataframe,spark-dataframe,rdd,Apache Spark,Dataframe,Spark Dataframe,Rdd,我已经检查过了,有点好奇地想知道RDD和DataFrame的groupBy函数。是否存在性能差异或其他问题? 请建议 想想DataFrame.groupBy和RDD.groupBy之间的区别,RDD的groupBy变量不像DataFrame的groupBy变量那样保留顺序 df.orderBy($"date").groupBy($"id").agg(first($"date") as "start_date") 上述工作与预期一致,即聚合结果将按日期排序。由于RDD和DataFrame的名称听

我已经检查过了,有点好奇地想知道RDD和DataFrame的groupBy函数。是否存在性能差异或其他问题?
请建议

想想
DataFrame.groupBy
RDD.groupBy
之间的区别,RDD的groupBy变量不像DataFrame的groupBy变量那样保留顺序

df.orderBy($"date").groupBy($"id").agg(first($"date") as "start_date")

上述工作与预期一致,即聚合结果将按日期排序。由于RDD和DataFrame的名称听起来都一样,人们可能会认为它在RDD中也会像预期的那样工作,但事实并非如此。原因是RDD的groupBy和DataFrame的groupBy的实现非常不同。RDD的
groupBy
可能会根据键对数据进行洗牌。

我认为这是误导
ORDER BY
将影响执行计划,但没有,而且我不熟悉任何涵盖该行为的测试套件。引用肖恩·欧文(Sean Owen)的话:“问题是,我认为几乎每一种方法都不一定能保持秩序,或者不是为了保证秩序,即使在很多情况下可能会这样。”。我自己的经验表明,这种行为是不稳定的(或者在不同的版本中有缺陷)。您是否有任何权威(JIRA、source、design docs、test)参考资料支持该声明?以及“DataFrame的groupBy非常不同。RDD的groupBy可能会根据密钥洗牌数据。”-这是不正确的。
Dataset
RDD
都将洗牌数据。只要看看执行计划就行了。很有趣。谢谢你,吉拉。。我没有支持文件或任何其他资源。这更像是我在多个案例中经历的一件事。肖恩·欧文的回答确实说明了这一点@Prashant,请删除这篇文章中的“答案”勾号。@user9613318这篇文章是如何重复的,这篇文章完全不同于上下文,永远不要谈论RDD。