我有一个这样的spark数据框:
+------+--------+--------------+--------------------+
| dbn| boro|total_students| sBus|
+------+--------+--------------+--------------------+
|17K548|Brooklyn| 399|[B41, B43, B44-SB...|
|09X543| Bronx| 378|[Bx13, Bx15, Bx17...|
|09X327| Bronx| 543|[Bx1, Bx11, Bx13,...|
+------+--------+--------------+--------------------+
如何使它更平坦,以便为sBus中的每个元素复制每一行,并且sBus将是一个普通的字符串列?
结果会是这样的:
+------+--------+--------------+--------------------+
| dbn| boro|total_students| sBus|
+------+--------+--------------+--------------------+
|17K548|Brooklyn| 399| B41 |
|17K548|Brooklyn| 399| B43 |
|17K548|Brooklyn| 399| B44-SB |
+------+--------+--------------+--------------------+
等等。。。
我想不出不把它变成RDD的方法。
棘手的部分是将其他列与新展平的值放在一起。为此,我将每一行映射到一个} 。这将把值列表的每个元素分割成一个单独的行,但是保持键的附加,即
(dict of other columns, list to flatten)
元组,然后调用^{变成
然后,我将展平值移回其他列的字典中,并将其重新转换回数据帧。
相关问题 更多 >
编程相关推荐