Scala Dataframe筛选出包含指定单词的行(字符串)

Scala Dataframe筛选出包含指定单词的行(字符串),scala,Scala,这是我在Scala中的问题。我有一个数据框,其中一列的数据类型是string。例如,该列有4个值 "Abc", "dfea", "skjod", "aaa" 和 我需要过滤掉列表中包含任何值的行。对于上面的数据,我将得到第二行和第四行 这是我的密码: val del_blk=(arg:String)=>{ 为了(字) 我怀疑你是有意这样做的 def containsForbiddenWord(word: Strin

这是我在Scala中的问题。我有一个数据框,其中一列的数据类型是string。例如,该列有4个值

"Abc", "dfea", "skjod", "aaa"

我需要过滤掉列表中包含任何值的行。对于上面的数据,我将得到第二行和第四行

这是我的密码:

val del_blk=(arg:String)=>{
为了(字)
我怀疑你是有意这样做的

def containsForbiddenWord(word: String): Boolean =
  list.exists(forbidden => word.contains(forbidden))

最好不要在spark中使用UDF,因为它们未经优化且速度较慢。您可以使用spark SQL执行此操作,如下所示:

df.withColumn("blk", col("col").isin(list :_*))
  .filter(col("blk") === false)

我是scala新手,你能详细解释一下吗?如果在你的定义
filter(col(“col”)、udf(containsForbiddenWord)
之后加上一个add val blkUDF=udf(containsForbiddenWord())就不起作用了。它不起作用。【错误】你可以通过编写
containsForbiddenWord
containsForbiddenWord(o)来明确地进行转换
而不是
containsForbiddenWord
事实上,由于所需的重载,
containsForbiddenWord
containsForbiddenWord()
而不是
containsForbiddenWord
我尝试了containsForbiddenWord.[error]无法应用于(org.apache.spark.sql.Column,org.apache.spark.sql.expressions.UserDefinedFunction)您好,它不起作用。无法筛选列表中包含值的行。抱歉,我误读了您的原始问题,我将更新我的答案
val del_blk = (arg: String) => {
  list.foreach(word => if (arg.contains(word)) 1)
  0
}
def containsForbiddenWord(word: String): Boolean =
  list.exists(forbidden => word.contains(forbidden))
df.withColumn("blk", col("col").isin(list :_*))
  .filter(col("blk") === false)