gpt4 book ai didi

scala - df.select() 和 df.agg() 有什么区别?

转载 作者:行者123 更新时间:2023-12-02 20:45:29 25 4
gpt4 key购买 nike

我有一个数据框,我想从中提取最大值、最小值并计算其中的记录数。

数据框是:

scala> val df = spark.range(10000)
df: org.apache.spark.sql.Dataset[Long] = [id: bigint]

为了获取所需的值,我使用df.select(),如下所示:

scala> df.select(min("id"), max("id"), count("id")).show
+-------+-------+---------+
|min(id)|max(id)|count(id)|
+-------+-------+---------+
| 0| 9999| 10000|
+-------+-------+---------+

这给了我正确的结果,但是当我尝试df.agg()时,它也给了我相同的答案。

scala> df.agg(min("id"), max("id"), count("id")).show
+-------+-------+---------+
|min(id)|max(id)|count(id)|
+-------+-------+---------+
| 0| 9999| 10000|
+-------+-------+---------+

所以,我的问题是,如果 df.select()df.agg() 提供相同的结果,它们之间有什么区别,我应该使用哪一个为了更好的性能?

最佳答案

select 用于从 dataframe 中选择所需的列,而 agg 用于聚合 dataframe 组在该组上应用一些函数

在您的情况下,minmaxcount 对整个数据集 和两个 执行selectagg 正在执行相同的任务,即将聚合的 dataframe 转换为新的 dataframe

当我们必须对数据组执行聚合时,真正的差异将会很明显。您可以对分组的dataframe执行agg,但不能对分组的dataframe执行select。可以对指针指向的整个数据集执行select查询。

如果您结账 grouped dataframe ,你可以看到定义为“一组用于在DataFrame上聚合的方法,由DataFrame.groupBy创建。主要方法是agg函数,它有多个变体。此类还包含一些方便的一阶统计数据,例如意思是,为了方便而求和。”

我希望答案是明确的

关于scala - df.select() 和 df.agg() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44622380/

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