Scala 如何将spark列中的特定单词大写?

Scala 如何将spark列中的特定单词大写?,scala,apache-spark,Scala,Apache Spark,我试图在spark数据框中的列中大写一些单词。单词都在一个列表中 val wrds=[“美国”、“英国”] 似乎我必须对列进行字符串拆分,然后根据值中是否存在字符串的这一部分进行大写。我主要是在第3行中挣扎,我不想将ogb大写,即使它确实包含gb。有人能给我指出正确的方向吗?import org.apache.spark.sql.functions_ val字=数组(“美国”、“gb”) val df=列表( (1,“z”,3,“鲍勃住在美国”), (4,“t”,2,“gb是Beth居住的地方”

我试图在spark数据框中的列中大写一些单词。单词都在一个列表中

val wrds=[“美国”、“英国”]

似乎我必须对列进行字符串拆分,然后根据值中是否存在字符串的这一部分进行大写。我主要是在第3行中挣扎,我不想将ogb大写,即使它确实包含gb。有人能给我指出正确的方向吗?

import org.apache.spark.sql.functions_
val字=数组(“美国”、“gb”)
val df=列表(
(1,“z”,3,“鲍勃住在美国”),
(4,“t”,2,“gb是Beth居住的地方”),
(5,“t”,2,“ogb”)
).toDF(“身份证”、“姓名”、“物品”、“国家”)
val replaced=words.foldLeft(df){
大小写(adf,word)=>
adf.withColumn(“country”,regexp_替换($“country”,“(\\b”+word+“\\b)”,word.toUpperCase))
}
替换。显示
输出:

+---+----+-----+--------------------+
| id|name|thing|             country|
+---+----+-----+--------------------+
|  1|   z|    3|Bob lives in the USA|
|  4|   t|    2|GB is where Beth ...|
|  5|   t|    2|                 ogb|
+---+----+-----+--------------------+
+---+----+-----+--------------------+
| id|name|thing|             country|
+---+----+-----+--------------------+
|  1|   z|    3|Bob lives in the USA|
|  4|   t|    2|GB is where Beth ...|
|  5|   t|    2|                 ogb|
+---+----+-----+--------------------+