如何规范spark(scala)中列中的全宽字符

如何规范spark(scala)中列中的全宽字符,scala,apache-spark,apache-spark-sql,azure-databricks,Scala,Apache Spark,Apache Spark Sql,Azure Databricks,我在数据框中有一列,它有全宽和半宽字符。我想将列标准化为半宽度字符,但我不确定如何实现 我正在尝试这样做: var normalized = df.withColumn("DomainNormalized",col(Normalizer.normalize($"Domain".toString(), Normalizer.Form.NFKC))) 我希望这会改变这个域名:@nlb.com(注意b 是一个全宽字符),但创建的列未规范化 如何使用java n

我在数据框中有一列,它有全宽和半宽字符。我想将列标准化为半宽度字符,但我不确定如何实现

我正在尝试这样做:

var normalized = df.withColumn("DomainNormalized",col(Normalizer.normalize($"Domain".toString(), Normalizer.Form.NFKC)))
我希望这会改变这个域名:@nlb.com(注意b 是一个全宽字符),但创建的列未规范化

如何使用java normalizer更改列内容或在数据帧上派生新列?

像这样使用udf

....
val rdd = sc.makeRDD(List("@nl 1.com")) 
import sparkSession.implicits._
val df = rdd.toDF("domain") 
val norm = (arg:String) => {
  val s = Normalizer.normalize(arg,Normalizer.Form.NFKC)
  s
}
val normalizer = udf(norm)
val df2 = df.withColumn("domain2",normalizer(df.col("domain")))
df2.select("domain2").show()
像这样使用udf

....
val rdd = sc.makeRDD(List("@nl 1.com")) 
import sparkSession.implicits._
val df = rdd.toDF("domain") 
val norm = (arg:String) => {
  val s = Normalizer.normalize(arg,Normalizer.Form.NFKC)
  s
}
val normalizer = udf(norm)
val df2 = df.withColumn("domain2",normalizer(df.col("domain")))
df2.select("domain2").show()