фильтруйте строки по двум словам Spark Streaming


Есть ли способ фильтровать одним выражением строки, содержащие слово "word1" или другое " word2" что-то вроде :

val res = lines.filter(line => line.contains("word1" or "word2"))

Потому что это выражение не работает.

Заранее благодарю вас

1 2

1 ответ:

Если строка является String оптимальным выбором будет регулярное выражение:

val pattern = "word1|word2".r

lines.filter(line => pattern.findFirstIn(line).isDefined)

В противном случае (другой тип последовательности) вы можете использовать Seq.exists:

lines.filter(line => Seq("foo", "bar").exists(s => line.contains(s)))

, который принимает один, который отображает из элемента в булево (здесь (String) ⇒ Boolean) и:

Проверяет, выполняется ли предикат хотя бы для одного