【发布时间】:2018-07-11 13:17:34
【问题描述】:
我有一组类似于以下的数据,我正试图找到一种方法来减少在 python 中使用 spark 数据帧。
uuid if_id start_time end_time ip_addr
1 03 2018/07/01 13:00:00 2018/07/01 13:00:01 1.1.1.1
1 03 2018/07/01 13:01:05 2018/07/01 13:02:00 1.1.1.1
1 03 2018/07/01 15:00:00 2018/07/01 15:00:30 1.1.1.1
1 03 2018/07/02 01:00:00 2018/07/02 01:00:07 1.2.3.4
1 03 2018/07/02 08:30:00 2018/07/02 08:32:04 1.2.3.4
1 03 2018/07/02 12:00:00 2018/07/02 12:01:00 1.1.1.1
1 05 2018/07/01 15:00:02 2018/07/01 15:00:35 2.2.2.2
1 05 2018/07/01 13:45:23 2018/07/01 13:45:40 2.2.2.2
我需要将上述数据减少到以下:
uuid if_id start_time end_time ip_addr
1 03 2018/07/01 13:00:00 2018/07/01 15:00:30 1.1.1.1
1 03 2018/07/02 01:00:00 2018/07/02 08:32:04 1.2.3.4
1 03 2018/07/02 12:00:00 2018/07/02 12:01:00 1.1.1.1
1 05 2018/07/01 13:45:23 2018/07/01 15:00:35 2.2.2.2
最终数据集应表示一个表格,显示在给定时间段(start_time 到 end_time)内,哪个 IP 地址被分配给由 uuid 标识的特定主机的接口 (if_id)。
如果给定接口不可能随时间改变 IP 地址,例如 uuid=1 和 if_id=3,则可以使用 groupBy 和窗口规范来处理,以提取最小 start_time 和最大时间结束。但是,鉴于地址可以更改,我不确定如何在不多次传递数据的情况下解决此问题。
任何建议的方法将不胜感激。
【问题讨论】:
标签: python apache-spark dataframe pyspark