使用 udf 函数删除 DataFrame 字段中的换行符会出现 TypeTag 错误

Removing newlines in a DataFrame field with udf function gives TypeTag Error

val trim: String => String = _.trim.replace("[\r\n]", "")

def main(args: Array[String]) {    
    val spark = ...    ...
    import spark.implicits._    
    val trimUDF = udf[String,String](trim)

    val df = spark.read.json(df_path)    ...    
    val fixed_dblogs_df = df.withColumn("qp_new", trimUDF('qp))    ... 
}

当我 运行 这段代码时,我得到一个编译时错误:

No TypeTag available for String

这个错误是我定义udf函数的地方。我不知道为什么会这样。我以前使用过 udf 函数,但是这个函数出现了这个错误。我使用的是 Spark 2.1.1,仅此而已。

该代码的目的是删除我的 StringType 列字段之一中的所有新行,我只希望它没有任何换行符

您使用 UDF 而不是 replace_regexp 内置函数有什么原因吗?

val fixed_dblogs_df = df.withColumn("qp_new", replace_regexp('qp, "[\r\n]", "") ...)

UDF 破坏了 Spark 的计划优化。