【发布时间】:2021-09-23 14:45:19
【问题描述】:
我还有一个与拆分功能有关的问题。 我是 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...|
+-----------------------+
但我想为大型数据集自动拉出分隔符。
【问题讨论】:
-
请在问题中添加您尝试过的内容和失败的内容。您应该为您的问题提供一个可重复的最小示例。
-
我知道可以根据上面的示例数据框手动完成 - ``` dept.select(split(col("VALUES"),"#|@|\\$|\ \^").show() ``` 和输出匹配,但我不想手动放置分隔符。
-
额外列的逻辑是什么?
-
@dsk 我已经编辑了这个问题。到目前为止,我不确定额外列的逻辑。我主要关心的是自动获取大型数据集的分隔符。
-
@Shashwat - 请参阅下面的答案 - 如果您对答案感到满意,请不要犹豫接受并投票 :)
标签: scala apache-spark apache-spark-sql