gpt4 book ai didi

apache-spark - 如何为每行使用带有可变分隔符的拆分函数?

转载 作者:行者123 更新时间:2023-12-03 23:05:42 24 4
gpt4 key购买 nike

Input DF:
+-------------------+---------+
|VALUES |Delimiter|
+-------------------+---------+
|50000.0#0#0# |# |
|0@1000.0@ |@ |
|1$ |$ |
|1000.00^Test_string|^ |
+-------------------+---------+

Expected Output DF:
+-------------------+---------+----------------------+
|VALUES |Delimiter|SPLITED_VALUES |
+-------------------+---------+----------------------+
|50000.0#0#0# |# |[50000.0, 0, 0] |
|0@1000.0@ |@ |[0, 1000.0] |
|1$ |$ |[1] |
|1000.00^Test_string|^ |[1000.00, Test_string]|
+-------------------+---------+----------------------+


代码:
import sparkSession.sqlContext.implicits._
val dept = Seq(("50000.0#0#0#", "#"),("0@1000.0@", "@"),("1$", "$"),("1000.00^Test_string", "^")).toDF("VALUES", "Delimiter")
我对 Spark 非常陌生,试图通过使用另一列中的分隔符来拆分“VALUES”列的值。
尝试使用 Spark 分割功能作为
val dept2 = dept.withColumn("SPLITED_VALUES", split(col("VALUES"), "#"))
但是这里拆分函数将分隔符作为常量值,我无法将其作为
val dept2 = dept.withColumn("SPLITED_VALUES", split(col("VALUES"), col("Delimiter")))
任何人都可以为此提出更好的方法吗?

最佳答案

检查下面的代码。

scala> df
.withColumn("delimiter",concat(lit("\\"),$"delimiter"))
.withColumn("split_values",expr("split(values,delimiter)"))
.show(false)
+-------------------+---------+----------------------+
|values |delimiter|split_value |
+-------------------+---------+----------------------+
|50000.0#0#0# |\# |[50000.0, 0, 0, ] |
|0@1000.0@ |\@ |[0, 1000.0, ] |
|1$ |\$ |[1, ] |
|1000.00^Test_string|\^ |[1000.00, Test_string]|
+-------------------+---------+----------------------+
更新
scala> df
.withColumn("delimiter",concat(lit("\\"),$"delimiter"))
.withColumn("data",expr("array_remove(split(trim(values),delimiter),'')"))
.show(false)

+-------------------+---------+----------------------+
|values |delimiter|data |
+-------------------+---------+----------------------+
|50000.0#0#0# |\# |[50000.0, 0, 0] |
|0@1000.0@ |\@ |[0, 1000.0] |
|1$ |\$ |[1] |
|1000.00^Test_string|\^ |[1000.00, Test_string]|
+-------------------+---------+----------------------+

关于apache-spark - 如何为每行使用带有可变分隔符的拆分函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62874723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com