我在French
上有一个csv文件,其中包含一个特殊字符(é, à, è, ç)
。我通过spark 2 - scala 2.11
将此csv文件放在hdfs中。
我进行了数据转换,然后将我的数据帧转移到Elasticsearch 5.6。
这些特殊字符在仪表板kibana中看起来像一个奇怪的角色。
我希望用普通字母替换这些空格字符,例如:
é = e
è = e
à = a
我做到了,使用了两种可能的方法:
val urlCleaner = (joined_df2:String) => {
if (s == null) null else s.replaceAll("é","e")
}
和
val newsjoined_df2=My_Dataframe.withColumn('nom_equipe', when(col('nom_equipe').equalTo('é'), 'e').otherwise(col('nom_equipe'))
但是,它不起作用。 有人可以建议我一个解决方案吗?
答案 0 :(得分:1)
你可以创建一个UDF
import org.apache.spark.sql.functions
import spark.implicits._
val removeChars = functions.udf((s:String) => {
s.replaceAll("è","e")
.replaceAll("é","e")
.replaceAll("à","a")
.replaceAll("ç","c")
})
然后在您的DF中调用withColumn
,UDF
向其发送列名:
df.withColumn("nom_equipe", removeChars($"nom_equipe"))
这是一个快速测试:
输入:
+------------+
| nom_equipe|
+------------+
| héllo|
| chénene|
+------------+
输出:
+------------+
| nom_equipe|
+------------+
| hello|
| chenene|
+------------+