如何规范化 spark (scala) 中的列中的全角字符
Posted
技术标签:
【中文标题】如何规范化 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)))
我希望这会改变这个域:@nllb.com(注意 b 是全角字符)到@nlb.com,但创建的列未标准化。
如何使用 java 规范化器更改列内容或在数据框上派生新列?
【问题讨论】:
【参考方案1】:像这样使用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()
【讨论】:
以上是关于如何规范化 spark (scala) 中的列中的全角字符的主要内容,如果未能解决你的问题,请参考以下文章
过滤包含Scala Spark数据帧中数组的列中的数组长度[重复]
如何将行数据转置/旋转到 Spark Scala 中的列? [复制]