我有两个数据帧,每个数据帧都有大约一百万条记录,我希望根据与另一df中的列部分匹配的列,在df1的每一行上追加True或false。
我已经考虑过编写UDF,然后比较两列中的字符串,但这不起作用
var df1 = spark.read.format("csv").option("header", "true").option("delimiter", "\t").load("hdfs://XXXXX.txt")
var df2 = spark.read.format("csv").option("header", "true").option("delimiter", "\t").load("YYYYYYY.txt")
var desc =df2.select("SHORT_DESC").map(_.getString(0)).collect.toList
var desc_str = desc.mkString(" ")
def matchBoth(s:String ,s1: String) : Boolean ={
if(s1.contains(s)) true
else false
}
var contains = udf(matchBoth _)
var df3=df1.withColumn("flag",contains(lower($"Col45"),lit(desc_str.toLowerCase)))