在Spark DataFrame和单词列表之间使用类似ORACLE的功能-Scala

在Spark DataFrame和单词列表之间使用类似ORACLE的功能-Scala,scala,apache-spark,Scala,Apache Spark,我的要求类似于: 我需要的不是直接匹配,而是列表上的类似类型匹配。i、 我们想喜欢将评论与列表匹配 ID,COMMENTS 1,bad is he 2,hell thats good 3,sick !thats hell 4,That was good List = ('good','horrible','hell') 我想得到像这样的输出 ID, COMMENTS,MATCHED_WORD,NUM_OF_MATCHES 1,bad is he,, 2,hell t

我的要求类似于:

我需要的不是直接匹配,而是列表上的类似类型匹配。i、 我们想喜欢评论与列表匹配

ID,COMMENTS
1,bad is he
2,hell thats good
3,sick !thats hell
4,That was good

List = ('good','horrible','hell')
我想得到像这样的输出

    ID, COMMENTS,MATCHED_WORD,NUM_OF_MATCHES
    1,bad is he,,
    2,hell thats good,(hell,good),2
    3,sick !thats hell,hell,1
    4,That was good,good,1
简单地说,我需要:(据我所知,rlike不匹配列表中的值,而是需要一个字符串)

我尝试了isin,它有效,但只匹配整个单词

file.select($"COMMENTS",$"ID").filter($"COMMENTS".isin(List_ :_*)).show()

请帮助或请重新直接给我任何链接,因为我尝试了很多搜索

简单地说,我会用另一种方式:

val xs = Seq("good", "horrible", "hell")
df.filter($"COMMENTS".rlike(xs.mkString("|"))
否则:

df.filter(xs.foldLeft(lit(false))((acc, x) => acc || $"COMMENTS".rlike(x)))

这是可行的,但在使用rlike时,像“预期”这样的词很少与像“意外”这样的词匹配。有没有其他方法来匹配整个单词?谢谢上面的样品。这适用于大多数情况!
df.filter(xs.foldLeft(lit(false))((acc, x) => acc || $"COMMENTS".rlike(x)))