Что такое col3?
Все, что вам нужно, это считать, я бы подумал
df2 = df.groupBy($"col1",$"col2").count
И многие исполнители, возможно,
Вот пример из данных, которые выопубликовано
scala> val df = Seq(
| ("a", "p1"),
| ("a", "p1"),
| ("a", "p2"),
| ("a", "p2"),
| ("a", "p3"),
| ("a", "p3"),
| ("b", "p1"),
| ("b", "p3"),
| ("b", "p3"),
| ("b", "p2"),
| ("b", "p2"),
| ("b", "p2")).toDF("col1", "col2")
df: org.apache.spark.sql.DataFrame = [col1: string, col2: string]
scala> val df2 = df.groupBy($"col1",$"col2").count
df2: org.apache.spark.sql.DataFrame = [col1: string, col2: string, count: bigint]
scala> df2.show
+----+----+-----+
|col1|col2|count|
+----+----+-----+
| a| p1| 2|
| a| p2| 2|
| a| p3| 2|
| b| p1| 1|
| b| p2| 3|
| b| p3| 2|
+----+----+-----+