如何在scala中使用filter来使用muliple条件?

jm2pwxwz  于 2021-07-14  发布在  Spark
关注(0)|答案(2)|浏览(424)

我有一个有两个字段的数据框。其中一个字段名是tag,它包含与电影相关的所有单词。我在Dataframe中使用和条件过滤器。我想得到标签,其中包含这些词(幽默,有趣,搞笑,英国,保龄球)。我尝试下面的语句,但没有工作。

val DF =dfAfterDrop.filter($"Tag like '%humor%'"&&
                           $"Tag like '%funny%'"&&
                           $"Tag like '%hilarious%'"&&
                           $"Tag like '%british%'"&&
                           $"Tag like '%bowling%'")

如何解决?

pexxcrt2

pexxcrt21#

你需要把这些表达式 Package 起来 expr ,不在 $ (这是 col ,而不是你想要的)。我也觉得你想用 OR ,不是 AND ,因为您要获取包含任何一个单词的行。

val DF = dfAfterDrop.filter(expr("Tag like '%humor%'") ||
                            expr("Tag like '%funny%'") ||
                            expr("Tag like '%hilarious%'") ||
                            expr("Tag like '%british%'") ||
                            expr("Tag like '%bowling%'")
                           )
jtw3ybtb

jtw3ybtb2#

你可以试试 contains 方法:

val words = Seq("humor", "funny", "hilarious", "british", "bowling")

val DF = dfAfterDrop.filter(words.map($"Tag".contains(_)).reduce(_ or _))

相关问题