Как использовать фильтр в динамически в scala? - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть файл строки файла журналов около 1 ТБ. Как показано ниже.

Test X1 SET WARN CATALOG MAP1,MAP2
INFO X2 SET WARN CATALOG MAPX,MAP2,MAP3

Я читаю файл журналов, используя spark scala scala, и создаю rdd файла журналов.

Мне нужно отфильтровать только те строки, которые содержат

1.SET 
2.INFO 
3. CATALOG

Я пишу фильтр таким образом

Val filterRdd = rdd.filter(f =>f.contains("SET")).filter(f => f.contains("INFO")).filter(f =>f.contains("CATALOG"))

мы можем сделать то же самое, если эти параметры назначены список. и на основе этого мы можем фильтровать динамически, не записывая большую часть строки; здесь в качестве примера я беру только три ограничения, но на самом деле доходит до 15 ключевых слов ограничения. мы можем сделать это динамически.

1 Ответ

3 голосов
/ 07 февраля 2020

Примерно так может сработать, если вы хотите, чтобы все слова отображались в строке:

val words = Seq("SET", "INFO", "CATALOG")
val filterRdd = rdd.filter(f => words.forall(w => f.contains(w)))

и, если вы хотите, чтобы:

val filterRdd = rdd.filter(f => words.exists(w => f.contains(w)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...