首页 > 解决方案 > 在scala中将许多带有分隔符的字符串转换为数组

问题描述

我有一个这样的数据框:

userId    someString      varA     varB
   1      "example1"    0,2,5     1,2,9
   2      "example2"    1,20,5   9,null,6

我想将数据转换为 VarA 和 varB 为字符串数组

userId    someString      varA     varB
   1      "example1"    [0,2,5]   [1,2,9]
   2      "example2"    [1,20,5]  [9,null,6]

标签: scalaapache-sparkdataframe

解决方案


它相当简单。您可以使用 sql 拆分功能。

 import org.apache.spark.sql.functions.split
df.withColumn("varA", split($"varA",",")).withColumn("varB", split($"varB",",")).show()

输出

+------+----------+----------+------------+
|userId|someString|      varA|        varB|
+------+----------+----------+------------+
|     1|  example1| [0, 2, 5]|   [1, 2, 9]|
|     2|  example2|[1, 20, 5]|[9, null, 6]|
+------+----------+----------+------------+

推荐阅读