我需要为spark数据框中的一些数据找到最上面的父id。
我确实有两列,如下所示,分别是object id和parent object id。
对象id 123的父对象id为456,也是父id为789的对象id……以此类推。
要求是为每个对象id找到最顶层的父对象。
预期输出如下所示。
我尝试创建temp表并用while循环重写该表。但这似乎是不正常的工作。
有没有办法达到这个要求?任何线索感谢!
使用下面问题中提供的解决方案进行了尝试,但它持续执行了很长一段时间,好像在一个无限循环中的某个地方!sparkDataframe:查找并设置子级的主根
1条答案
按热度按时间jtoj6r0c1#
如果知道层次结构的“深度”,可以使用
foldLeft
把一系列的self-join
s、 如下图所示:请注意,即使提供的“depth”值大于实际的层次深度,它也可以正常工作,尽管在这种情况下,一些后续转换是多余的。