[英]unable to remove trailing space in spark scala dataframe
我有一個DataFrame
,我已經應用了不同的功能來替換尾隨空格,但是沒有運氣
df.select(col("e_no"),regexp_replace(col("e_no"),"//s+$",""),rtrim(col("e_no")),length(col("e_no"))).show()
e_no | regexp_replace(e_no),//s+$, )| rtrim(e_no)| length(e_no)
525071 | 525071 | 525071 | 7
512938| 512938| 512938| 6
522783 | 522783 | 522783 | 7
請您指教。
rtrim函數應該起作用。 至於正則表達式替換,正確的正則表達式將是
“ \\ s + $”
使用spark的工作代碼:2.2.1
import spark.implicits._
import org.apache.spark.sql.functions._
val list = Seq("525071 ", "512938", "522783 ")
val df = list.toDF("e_no")
df.select(
col("e_no"),
regexp_replace(col("e_no"), "\\s+$", ""),
rtrim(col("e_no")),
length(col("e_no"))
).show()
withColumn
方法是我理解的最簡單方法:
import org.apache.spark.sql.functions._
val newDF = rawDF.withColumn("e_no", rtrim(col("e_no")))
newDF.show()
您也可以使用UDF,但這可能會導致問題解決過度。 無論如何,習慣於使用UDF都是有用的,它們非常有用
val removeTrailingWhitespaces = (s:String) => {
s.trim
}
val removeTrailingWhitespacesUdf = functions.udf(removeTrailingWhitespaces)
val newDF = rawDF
.withColumn("e_no", removeTrailingWhitespacesUdf(rawDF("e_no")))
newDF.show()
我對這兩個選項都進行了一些測試:
輸入:
H ,173
M,161
輸出量
+----+------+
| H| 173|
| M| 161|
+----+------+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.