簡體   English   中英

無法刪除Spark Scala數據幀中的尾隨空間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM