Я знаю, что count
, вызываемый на RDD или DataFrame, является действием.Но, возясь с оболочкой искры, я заметил следующее
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
может быть и трансформацией.Может ли кто-нибудь пролить свет на это?