对于每个客户ID,我需要使用spark / pyspark找出首个航班来源和最后一个航班目的地
cid --〉客户ID
fid --〉航班ID --它是随机的
输入数据框:
| 苹果汁|叉|原点|目的地|
| - ------|- ------|- ------|- ------|
| 1个|十二层|得克萨斯|纽约|
| 1个|f21|纽约|德里|
| 1个|第八代|德里|日本|
德克萨斯州-〉纽约-〉日本
输出 Dataframe :
| 苹果汁|原点|目的地|
| - ------|- ------|- ------|
| 1个|得克萨斯|日本|
我试着用连接来做,但是不知道如何合并连接后的结果集,以便只过滤起始航班源和最后航班目的地
2条答案
按热度按时间hgqdbh6s1#
输出:
本质上,首先,将所有起点和终点收集为数组。
如您所见,停靠点(即除起点和最后目的地之外的点)将在两个数组中共用。
如果秩序是确定的,那么这也是可行的:
输出:
尽管如果行的顺序被打乱了,这就不起作用了。
kyks70gy2#
假设乘客从来不乘坐一架以上的飞机,因此有一个唯一的路径为他们旅行
(假设起始位置
start
)1.运行查询
SELECT * FROM df where origin = start
,这样您就可以获得所有可到达的目的地1.将目的地存储在列表中
1.在下一步中,使用
start = destinations
运行上述查询这将发现上述路径。
如果没有给定start,你可以做一些更复杂的事情,比如选择一个随机记录,到达前面解释过的alo目的地,然后往回走,到达所有的源,然后加入这两条路径,你就成功地重建了遍历。