将许多带有分隔符的字符串转换为Scala中的数组

时间:2019-02-15 09:16:36

标签: scala apache-spark dataframe

我有一个像这样的数据框:

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

我想将数据转换为VarA和varB转换为String数组

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

1 个答案:

答案 0 :(得分:3)

非常简单。您可以使用sql split函数。

 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]|
+------+----------+----------+------------+