Je sais que count
appelé sur un RDD ou un DataFrame est une action. Mais en manipulant le shell spark, j'ai observé ce qui suit
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|
+----------+-----+
Quand j'ai appelé count
sur GroupedData ( empDF.groupBy("department")
), j'ai obtenu un autre DataFrame comme résultat (res1). Ceci m'amène à penser que count
dans ce cas, était une transformation. Cela est également confirmé par le fait qu'aucun calcul n'a été déclenché lorsque j'ai appelé count
Au lieu de cela, ils ont commencé quand j'ai lancé res1.show
.
Je n'ai pas été en mesure de trouver une documentation qui suggère count
pourrait aussi être une transformation. Quelqu'un pourrait-il m'éclairer à ce sujet ?