使用 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 的计划优化。
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 的计划优化。