Scala 从列表中搜索一个数据帧,并添加一个冒号,表示已找到或未找到
这是我的df,有两列: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
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,我需要打印找到的名字。我们如何做到这一点?还有可能找到多个名字。在这种情况下,名字应该分开。比如尼特什·莫汉。你能帮我吗?我问了另一个问题。你能帮我吗