将一列的值替换为spark数据帧中的另一列

时间:2018-05-24 22:04:12

标签: scala apache-spark apache-spark-sql

我有一个如下的数据框

Set

我想循环遍历arrayString并将第一个元素作为索引,将第二个元素作为String。然后使用与arrayString中的索引对应的String替换索引。我想要一个如下所示的输出。

+---+------------+----------------------------------------------------------------------+
|id |indexes     |arrayString                                                           |
+---+------------+----------------------------------------------------------------------+
|2  |1,3         |[WrappedArray(3, Str3), WrappedArray(1, Str1)]                        |
|1  |2,4,3       |[WrappedArray(2, Str2), WrappedArray(3, Str3), WrappedArray(4, Str4)] |
|0  |1,2,3       |[WrappedArray(1, Str1), WrappedArray(2, Str2), WrappedArray(3, Str3)] |
+---+------------+----------------------------------------------------------------------+

我尝试使用下面的udf函数。

+---+---------------+
|id |replacedString |
+---+---------------+
|2  |Str1,Str3      |
|1  |Str2,Str4,Str3 |
|0  |Str1,Str2,Str3 |
+---+---------------+

这给了我错误,我没有得到我想要的输出。有没有其他方法来实现这一目标。我不能使用explode和join,因为我希望索引替换为字符串而不会丢失顺序。

0 个答案:

没有答案