gpt4 book ai didi

scala - 如何使用 Spark/Scala 中另一列的分隔符拆分一列

转载 作者:行者123 更新时间:2023-12-04 12:13:55 27 4
gpt4 key购买 nike

我还有一个与 split 函数有关的问题。
我是 Spark/Scala 的新手。
以下是示例数据框 -


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

我希望输出是 -
+-------------------+---------+----------------------+
|VALUES |Delimiter|split_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]|
+-------------------+---------+----------------------+

我试图手动拆分这个 -
dept.select(split(col("VALUES"),"#|@|\\$|\\^").show()
输出是 -
+-----------------------+
|split(VALUES,#|@|\$|\^)|
+-----------------------+
| [50000.0, 0, 0, ]|
| [0, 1000.0, ]|
| [1, ]|
| [1000.00, Test_st...|
+-----------------------+


但我想为大型数据集自动提取分隔符。

最佳答案

您需要使用 expr split() 使分割动态化

df = spark.createDataFrame([("50000.0#0#0#","#"),("0@1000.0@","@")],["VALUES","Delimiter"])
df = df.withColumn("split", F.expr("""split(VALUES, Delimiter)"""))
df.show()

+------------+---------+-----------------+
| VALUES|Delimiter| split|
+------------+---------+-----------------+
|50000.0#0#0#| #|[50000.0, 0, 0, ]|
| 0@1000.0@| @| [0, 1000.0, ]|
+------------+---------+-----------------+

关于scala - 如何使用 Spark/Scala 中另一列的分隔符拆分一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68381159/

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