我有一个这样的spark DataFrame:
+---------+---------+---------------------------------------------------+
|which_one| matchID| information|
+---------+---------+---------------------------------------------------+
| First| 123|[[1.2, 4.5, 837], [1.4, 4.8, 123], [4.1, 4.7, 143]]|
| First| 234|[[4.8, 8.9, 234], [1.1, 4.2, 321], [3.9, 5.7, 521]]|
| Second| 345|[[7.7, 8.1, 457], [4.5, 4.9, 345], [1.9, 2.8, 776]]|
+---------+---------+---------------------------------------------------+
对于每个matchID,我需要找到相应的信息列表。然后,使用"which_one“来提取我需要的信息。
例如,对于matchID = 123,它对应于1.4,4.8,123。然后,which_one = " first“意味着我需要第一个val 1.4。
对于matchID = 234,它对应于4.8,8.9,234。然后,which_one = " first“意味着我需要第一个val 4.8。
对于matchID = 345,它对应于4.5,4.9,345。然后,which_one = " second“意味着我需要第二个val 4.9。
我想要的结果表是在末尾添加一个新列:
+---------+---------+---------------------------------------------------+---+
|which_one| matchID| information|res|
+---------+---------+---------------------------------------------------+---+
| First| 123|[[1.2, 4.5, 837], [1.4, 4.8, 123], [4.1, 4.7, 143]]|1.4|
| First| 234|[[4.8, 8.9, 234], [1.1, 4.2, 321], [3.9, 5.7, 521]]|4.8|
| Second| 345|[[7.7, 8.1, 457], [4.5, 4.9, 345], [1.9, 2.8, 776]]|4.9|
+---------+---------+---------------------------------------------------+---+
我尝试使用foreach和rdd遍历每一行。然而,它似乎是无能为力的,因为我找不到在信息栏中搜索matchID的方法。我在网上搜索了几个小时,还没有找到有用的资源。如有任何建议或提示,欢迎光临。
https://stackoverflow.com/questions/56348380
复制相似问题