无法删除 spark scala 数据框中的尾随 space
unable to remove trailing space in spark scala dataframe
我有一个 DataFrame
并且我应用了不同的函数来替换尾随 space 但是没有运气
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|
+----+------+
我有一个 DataFrame
并且我应用了不同的函数来替换尾随 space 但是没有运气
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|
+----+------+