Scala 如何将spark列中的特定单词大写?
我试图在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居住的地方”
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|
+---+----+-----+--------------------+