Apache spark 如何使用udf函数从数据帧中删除特殊字符
我是spark sql的学习者。有人能帮我解决以下问题吗 包名称:sparksql,类名:custommethod,方法名称:removespecialcharApache spark 如何使用udf函数从数据帧中删除特殊字符,apache-spark,Apache Spark,我是spark sql的学习者。有人能帮我解决以下问题吗 包名称:sparksql,类名:custommethod,方法名称:removespecialchar 在scala中创建自定义方法,该方法将1个字符串作为参数,1个返回类型字符串 方法必须删除所有特殊字符编号0到9-?,/\u()[]使用replaceall函数从dataframe一列开始。 输入:windows-X64(操作系统) 输出:windows x操作系统 我有一个名为df1的数据帧,在另一个名为sparksql2的类中有6列
您不需要UDF,只需使用plain spark并在带有regexp_replace的函数中定义它即可 举个例子:
import org.apache.spark.sql.{SparkSession,DataFrame}
import org.apache.spark.sql.functions.regexp_replace
def removeFromColumn(spark: SparkSession, columnName: String, df: DataFrame) =
df.select(regexp_replace(
df(columnName),
"[0-9]|\\[|\\]|\\-|\\?|\\(|\\)|\\,|_|/",
""
).as(columnName))
使用此功能,您可以在数据帧上使用它,而无需注册UDF:
import spark.implicits._
val df = Seq("2res012-?,/_()[]ult").toDF("columnName")
removeFromColumn(spark, "columnName", df)
输出:
+----------+
|columnName|
+----------+
| result|
+----------+