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)) ...
}
当我运行此代码时,出现编译时错误:
没有TypeTag可用于String
此错误是我定义udf函数的地方。我不知道为什么会这样。我之前使用过udf函数,但是这个函数出现了这个错误。我使用Spark 2.1.1,就是这样。
代码的目的是删除我的一个StringType字段中的所有新行,我只是希望它没有任何换行符
答案 0 :(得分:1)
您是否有使用UDF而不是内置replace_regexp
的原因?
val fixed_dblogs_df = df.withColumn("qp_new", replace_regexp('qp, "[\\r\\n]", "") ...)
UDF打破了Spark的计划优化。