Scala 从列表中搜索一个数据帧,并添加一个冒号,表示已找到或未找到

Scala 从列表中搜索一个数据帧,并添加一个冒号,表示已找到或未找到,scala,dataframe,Scala,Dataframe,这是我的df,有两列: utid|description 12342|my name is 123 amrud and nitesh 2345|my name is anil 2122|my name is 1234 mohan 和一个类似列表的列表{“mohan”,“nitesh”} 需要搜索此列表中的元素是否存在于描述列中。如果是,则在数据帧的不同列中打印“已找到”,否则打印“未找到”。输出df应如下所示: 这个列表远远大于这个约20k个元素的列表。。 输出数据帧应如下所示 utid|de

这是我的df,有两列:

utid|description
12342|my name is 123 amrud and nitesh
2345|my name is anil
2122|my name is 1234 mohan
和一个类似列表的列表
{“mohan”,“nitesh”}
需要搜索此列表中的元素是否存在于描述列中。如果是,则在数据帧的不同列中打印“已找到”,否则打印“未找到”。输出df应如下所示: 这个列表远远大于这个约20k个元素的列表。。 输出数据帧应如下所示

utid|description|foundornot
12342|my name is 123 amrud and nitesh|found
2345|my name is xyz |not found
2122|my name is 1234 mohan|found

欢迎任何帮助

您只需定义一个
udf
函数检查,检查条件并返回
found
not found
字符串

val list = List("mohan","nitesh")

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

df.withColumn("foundornot", checkUdf(col("description"))).show(false)
就这样,你应该

+-----+-------------------------------+----------+
|utid |description                    |foundornot|
+-----+-------------------------------+----------+
|12342|my name is 123 amrud and nitesh|found     |
|2345 |my name is anil                |not found |
|2122 |my name is 1234 mohan          |found     |
+-----+-------------------------------+----------+

我希望答案是有帮助的

如果在foundornot Column,我需要打印找到的名字。我们如何做到这一点?还有可能找到多个名字。在这种情况下,名字应该分开。比如尼特什·莫汉。你能帮我吗?我问了另一个问题。你能帮我吗