Warm tip: This article is reproduced from serverfault.com, please click

其他-如何标准化Spark(Scala)列中的全角字符

(其他 - How can I normalize full-width characters in column in spark (scala))

发布于 2020-12-02 05:52:46

我在具有全角和半角字符的数据框中有一列。我想将列标准化为半角字符,但不确定如何完成。

我正在尝试这样做:

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

我希望这会将以下域更改为@ nlb.com(请注意,b是全角字符),但创建的列未标准化。

如何使用Java Normalizer更改列内容或在数据框上派生新列?

Questioner
Samuel Lopez
Viewed
0
Wu.dior 2020-12-02 18:40:49

像这样使用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()