Scala 当列中不存在所有值时,是否可以按Spark的数据帧分组?

Scala 当列中不存在所有值时,是否可以按Spark的数据帧分组?,scala,apache-spark,dataframe,group-by,missing-data,Scala,Apache Spark,Dataframe,Group By,Missing Data,例如,如果我有以下数据帧 val tempDF=Seq(("a",2),("b",1),("a",3)).toDF("letter","value") scala> tempDF.show() +------+-----+ |letter|value| +------+-----+ | a| 2| | b| 1| | a| 3| +------+-----+ 我想对列字母执行groupBy操作,但知道列字母中可能不存在另一个字母c。通常我会 t

例如,如果我有以下数据帧

val tempDF=Seq(("a",2),("b",1),("a",3)).toDF("letter","value")

scala> tempDF.show()
+------+-----+
|letter|value|
+------+-----+
|     a|    2|
|     b|    1|
|     a|    3|
+------+-----+
我想对列字母执行groupBy操作,但知道列字母中可能不存在另一个字母c。通常我会

tempDF.groupBy("letter").sum()

scala> tempDF.groupBy("letter").sum().show()
+------+----------+                                                               
|letter|sum(value)|
+------+----------+
|     a|         5|
|     b|         1|
+------+----------+
但我想要这样的东西:

+------+----------+                                                             
|letter|sum(value)|
+------+----------+
|     a|         5|
|     b|         1|
|     c|         0|
+------+----------+

是否可以在不向数据帧添加字母c的情况下执行此操作?我的意思是,我可以在一个列表中有许多数据帧,但我不知道每个数据帧缺少哪些字母(如果有),相反,我知道应该为每个字母显示的整个字母列表。

如果您已经知道所有可能的值,请创建一个单独的通用数据集,其中“value”为0。 然后将其与任何tempDF连接以添加缺少的字母。 然后对最终数据集执行groupBy