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

8xiog9wr  于 2021-05-16  发布在  Spark
关注(0)|答案(1)|浏览(364)

我在Dataframe中有一个列,它有全宽和半宽字符。我想规范化列为半宽度字符,但我不知道它是如何做到的。
我试着这么做:

var normalized = df.withColumn("DomainNormalized",col(Normalizer.normalize($"Domain".toString(), Normalizer.Form.NFKC)))

我希望这会改变这个域:@nlb.com(注意b 是一个全角字符)到@nlb.com,但创建的列未规范化。
如何使用java规范化器在dataframe上更改列内容或派生新列?

ma8fv8wu

ma8fv8wu1#

像这样使用自定义项

....
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()

相关问题