Scala 基于数据帧选择行将检查数据帧的多个列

Scala 基于数据帧选择行将检查数据帧的多个列,scala,apache-spark,Scala,Apache Spark,我有以下数据帧 ID Names Marks1 Marks2 Marks3 1 A 50 102 87 2 B 54 75 83 3 C 5 175 43 4 D 35 75 80 5 E 87 75 B 6 F 93 75 83 我有一个列列表val colsForCheck=ListMarks1、Marks2、Marks3 和支票,如 5

我有以下数据帧

ID Names Marks1 Marks2 Marks3
1  A     50     102    87
2  B     54     75     83
3  C     5      175    43
4  D     35     75     80
5  E     87     75     B
6  F     93     75     83
我有一个列列表val colsForCheck=ListMarks1、Marks2、Marks3

和支票,如

50检查下面的代码

scala> df.show(false)
+---+-----+------+------+------+
|id |names|marks1|marks2|marks3|
+---+-----+------+------+------+
|1  |A    |50    |102   |87    |
|2  |B    |54    |75    |83    |
|3  |C    |5     | 175  |43    |
|4  |D    |35    |75    |80    |
|5  |E    |87    |75    |B     |
|6  |F    |93    |75    |83    |
+---+-----+------+------+------+
过滤条件


你试过什么?到目前为止,Scala代码在哪里?我的意思是,它基本上只是使用过滤和选择,不是吗?还是仅仅是好的老SQL?@UninformedUser,我在一个基于所需列的直接筛选器中逐个使用它。如何修改过滤器,使条件自动放置在列表中提到的所有列上?我已添加解决方案,请检查并进行投票,如果有帮助,请接受..:
scala> df.show(false)
+---+-----+------+------+------+
|id |names|marks1|marks2|marks3|
+---+-----+------+------+------+
|1  |A    |50    |102   |87    |
|2  |B    |54    |75    |83    |
|3  |C    |5     | 175  |43    |
|4  |D    |35    |75    |80    |
|5  |E    |87    |75    |B     |
|6  |F    |93    |75    |83    |
+---+-----+------+------+------+
scala> val colsForCheck = Seq("marks1","marks2","marks3")
.map(c => !(
    col(c).cast("int").isNotNull && 
    col(c) >= 50 && col(c) <= 100)
)
.reduce(_ || _)

scala> df.filter(colsForCheck).show(false)
+---+-----+------+------+------+
|id |names|marks1|marks2|marks3|
+---+-----+------+------+------+
|1  |A    |50    |102   |87    |
|3  |C    |5     | 175  |43    |
|4  |D    |35    |75    |80    |
|5  |E    |87    |75    |B     |
+---+-----+------+------+------+