找出成员满足条件的整个分组
某 csv 文件由学生姓名和学生的多次成绩组成。
Name,Score A,17 A,19 A,22 B,17 B,15 C,22 D,19 E,22 E,22 |
要求:用 Java 找出至少有一次成绩大于等于 20 的学生的所有记录。
Name |
Score |
A |
17 |
A |
19 |
A |
22 |
C |
22 |
E |
22 |
E |
22 |
编写SPL语句:
=T(""d:\\data.csv"").group(Name).select(~.count(Score>=20)>0).conj()
函数T将文件解析为二维表,group分组并保持每组数据,~表示当前组,count算出符合条件的记录的数量。
Java 集成 SPL 可参考 Java 如何调用 SPL 脚本
问题来源:https://stackoverflow.com/questions/75799714/spark-java-group-by-and-filter-on-custom-condition
用 cor() 能少敲几个字😄
xxx.select(~.cor(Score>=20))
英文版 https://c.scudata.com/article/1724826881247