Scala数据帧数组中的计数
我有两列spark Scala数据帧。第一个是一个变量,第二个是一个字母数组。我想做的是找到一种方法来编码数组中变量的计数(不使用for循环) 例如,这就是我所拥有的(很抱歉它没有那么整洁,这是我的第一篇文章)。你有5台电脑,每个人用一个字母表示。我想找到一种方法来找出一个人(a,B,C,D,E)使用了多少台电脑Scala数据帧数组中的计数,scala,apache-spark,dataframe,apache-spark-sql,Scala,Apache Spark,Dataframe,Apache Spark Sql,我有两列spark Scala数据帧。第一个是一个变量,第二个是一个字母数组。我想做的是找到一种方法来编码数组中变量的计数(不使用for循环) 例如,这就是我所拥有的(很抱歉它没有那么整洁,这是我的第一篇文章)。你有5台电脑,每个人用一个字母表示。我想找到一种方法来找出一个人(a,B,C,D,E)使用了多少台电脑 +-----------------+--------------+ | id | [person] | +-----------------+---
+-----------------+--------------+
| id | [person] |
+-----------------+--------------+
| Computer 1 | [A,B,C,D] |
| Computer 2 | [A,B] |
| Computer 3 | [A,B,E] |
| Computer 4 | [A,C,D] |
| Computer 5 | [A,B,C,D,E] |
+-----------------+--------------+
我想编写代码或询问是否有人有解决方案,如下所示:
+---------+-----------+
| Person | [Count] |
+---------+-----------+
| A | 5 |
| B | 4 |
| C | 3 |
| D | 3 |
| E | 2 |
+---------+-----------+
以某种方式计算数据帧中数组中的人数 有一个名为
explode
的函数,它将每个项目的数组展开为一行:
| id | person
+-----------------+------------------------+
| Computer 1| A |
| Computer 1| B |
| Computer 1| C |
| Computer 1| D |
....
+---+----+----+----+----+
然后你可以按人分组并计数。比如:
val df2 = df.select(explode($"person").as("person"))
val result = df2.groupBy($"person").count