Поиск по фрейму данных из списка и всех элементов, найденных в новом столбце в Scala - PullRequest
0 голосов
/ 31 мая 2018

У меня есть df, и мне нужно искать, есть ли какой-либо набор элементов из списка ключевых слов или нет .. если да, мне нужно поместить все эти ключевые слова @ в новый столбец с именем found или нет.

Мой df похож на

utid | description
123  | my name is harry and I live in newyork
234  | my neighbour is daniel and he plays hockey

Список довольно большой, например, list = {harry, daniel, hockey, newyork}

вывод должен быть как

utid | description                                | foundornot
123  | my name is harry and I live in newyork     | harry@newyork
234  | my neighbour is daniel and he plays hockey | daniel@hockey

Список довольно большой, как некоторые ключевые слова 20k .. Также в случае, если не найден, напечатайте NF

1 Ответ

0 голосов
/ 31 мая 2018

Вы можете проверить наличие элементов в list, если существует каждая строка столбца description в функции udf, и составить список элементов в виде строки, разделенной @ для возвратаэто или еще NF строка как

val list = List("harry","daniel","hockey","newyork")

import org.apache.spark.sql.functions._
def checkUdf = udf((strCol: String) => if (list.exists(strCol.contains)) list.filter(strCol.contains(_)).mkString("@") else "NF")

df.withColumn("foundornot", checkUdf(col("description"))).show(false)

, которая должна дать вам

+----+------------------------------------------+-------------+
|utid|description                               |foundornot   |
+----+------------------------------------------+-------------+
|123 |my name is harry and i live in newyork    |harry@newyork|
|234 |my neighbour is daniel and he plays hockey|daniel@hockey|
+----+------------------------------------------+-------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...