val empDF = Seq((1,"J-6ren">
gpt4 book ai didi

scala - Spark : Is "count" on Grouped Data a Transformation or an Action?

转载 作者:行者123 更新时间:2023-12-04 06:30:43 25 4
gpt4 key购买 nike

我知道 count 在 RDD 或 DataFrame 上调用是一个 Action 。但是在摆弄 Spark shell 时,我观察到以下情况

scala> val empDF = Seq((1,"James Gordon", 30, "Homicide"),(2,"Harvey Bullock", 35, "Homicide"),(3,"Kristen Kringle", 28, "Records"),(4,"Edward Nygma", 30, "Forensics"),(5,"Leslie Thompkins", 31, "Forensics")).toDF("id", "name", "age", "department")
empDF: org.apache.spark.sql.DataFrame = [id: int, name: string, age: int, department: string]

scala> empDF.show
+---+----------------+---+----------+
| id| name|age|department|
+---+----------------+---+----------+
| 1| James Gordon| 30| Homicide|
| 2| Harvey Bullock| 35| Homicide|
| 3| Kristen Kringle| 28| Records|
| 4| Edward Nygma| 30| Forensics|
| 5|Leslie Thompkins| 31| Forensics|
+---+----------------+---+----------+

scala> empDF.groupBy("department").count //count returned a DataFrame
res1: org.apache.spark.sql.DataFrame = [department: string, count: bigint]

scala> res1.show
+----------+-----+
|department|count|
+----------+-----+
| Homicide| 2|
| Records| 1|
| Forensics| 2|
+----------+-----+

当我调用 count在 GroupedData ( empDF.groupBy("department") ) 上,我得到了另一个 DataFrame 作为结果 (res1)。这让我相信 count在这种情况下是一个转变。当我调用 count 时没有触发任何计算的事实进一步支持了这一点。 ,相反,当我运行 res1.show 时它们就开始了.

我找不到任何建议 count 的文档也可能是一种转变。有人可以对此有所了解吗?

最佳答案

.count()您在代码中使用的内容已结束 RelationalGroupedDataset ,这将创建一个包含分组数据集中元素计数的新列。这是一个 转型 .引用:
https://spark.apache.org/docs/1.6.0/api/scala/index.html#org.apache.spark.sql.GroupedDataset
.count()您通常在 RDD/DataFrame/Dataset 上使用的完全不同于上面和这个.count()行动 .引用:https://spark.apache.org/docs/1.6.0/api/scala/index.html#org.apache.spark.rdd.RDD

编辑:

始终使用 .count().agg()在对 groupedDataSet 进行操作时,以避免将来混淆:

empDF.groupBy($"department").agg(count($"department") as "countDepartment").show

关于scala - Spark : Is "count" on Grouped Data a Transformation or an Action?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52966347/

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