用两个单词过滤行Spark Streaming

Jea*_*ean 2 scala apache-spark spark-streaming

有没有一种方法可以用一个表达式过滤包含单词“ word1”或另一个“ word2”的行,例如:

val res = lines.filter(line => line.contains("word1" or "word2"))
Run Code Online (Sandbox Code Playgroud)

因为此表达式不起作用。

先感谢您

zer*_*323 5

如果line是String最佳选择,则将使用regexp:

val pattern = "word1|word2".r

lines.filter(line => pattern.findFirstIn(line).isDefined)
Run Code Online (Sandbox Code Playgroud)

否则(其他序列类型),您可以使用Seq.exists

lines.filter(line => Seq("foo", "bar").exists(s => line.contains(s)))
Run Code Online (Sandbox Code Playgroud)

它需要一个从element映射到boolean的单个对象(此处为(String) ? Boolean),并且:

测试谓词是否对这个可迭代集合的至少一个元素成立。