scala: Как удалить строку из нескольких столбцов DataFrame со значениями Array [String] - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть DataFrame, где несколько столбцов содержат значения типа Array [String] (до X столбцов).

| col1          | col2          | col3          |
| ----------------------------------------------|
| Array[String] | Array[String] | Array[String] |
| ...                                           |

У меня есть еще один список строк (не входящих в DataFrame), которые являются словами, которые я абсолютно ненавижу и не хочу использовать в своем DataFrame.

val bad_words = Array("doctor","saint")

Я хочу выполнить поиск в каждом столбце с массивом [String] в качестве его типа и удалить отдельные строки в массиве, содержимое которого соответствует одному из слов в списке плохих слов, т.е.

До:

| col1: Array[String]                      | col2: Array[String]                        |
| -----------------------------------------|--------------------------------------------|
| ["donut","Frisbee","phone","doctor"]     | ["I don't like the doctor","Bob Swagga"]   |
| ["Dorothy M. is a saint","I'm a banana"] | ["eenie","meenie","miney","Moe"]           |

После того, как:

| col1: Array[String]                      | col2: Array[String]                        |
| -----------------------------------------|--------------------------------------------|
| ["donut","Frisbee","phone"]              | ["Bob Swagga"]                             |
| ["I'm a banana"]                         | ["eenie","meenie","miney","Moe"]           |

Как показано, я также хочу проверить, являются ли bad_words подстрокой каких-либо строк в массиве.

1 Ответ

0 голосов
/ 16 ноября 2018

Один из способов сделать это - определить UDF.

def removeBadWords(input: Seq[String]): Seq[String] = {

   val badWords: Seq[String] = ???

   input.filter{ // Logic to filter strings containing bad words}
}

val badWordsUdf = udf(removeBadWords(_: Seq[String]))

def.select(badWordsUdf($"col1"), badWordsUdf($"col2"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...