【发布时间】:2020-04-21 14:52:30
【问题描述】:
我有每个设备的会话数据,如下所示
time-started:设备连接时的时间戳
持续时间(秒):连接的时间
packets:发送了多少包
现在我需要按 24 小时汇总(总和)每个设备分区的持续时间和数据包。
例如:
对于第一个记录,
设备 A,时间从 4 月 8 日凌晨 1:53 开始,因此需要汇总所有设备 (A),有效期为 24 小时,即 4 月 9 日凌晨 1:53。
那么设备 A 的下一条记录应该从 4 月 9 日凌晨 4 点 27 分开始,因此需要汇总所有 24 小时有效的设备 (A),直到 4 月 10 日凌晨 4 点 27 分。
和
每个设备都如此。
预期输出
测试数据:
dftest = sc.parallelize([['A','2020-04-08T01:53:54.932000','Org1','wifi',60,372717],
['A','2020-04-08T02:40:38.661000','Org1','wifi',194,819040],
['A','2020-04-08T21:45:10.207000','Org1','wifi',8885,3449150],
['A','2020-04-09T00:15:28.838000','Org1','wifi',14770,3572589],
['A','2020-04-09T04:27:33.424000','Org1','remote',0,0],
['A','2020-04-09T04:29:25.189000','Org1','wifi',60,7495],
['A','2020-04-09T04:44:21.397000','Org1','remote',60,553356],
['A','2020-04-09T04:50:40.406000','Org1','wifi',60,662467],
['A','2020-04-10T00:00:50.636000','Org1','remote',0,72],
['A','2020-04-10T04:20:28.831000','Org1','remote',6,497],
['A','2020-04-10T04:31:35.336000','Org1','remote',0,22],
['B','2020-04-08T21:56:58.502000','Org2','remote',0,0],
['B','2020-04-08T22:01:19.534000','Org2','wifi',0,0],
['B','2020-04-08T22:10:15.891000','Org2','wifi',60,187891],
['B','2020-04-08T22:16:41.499000','Org2','wifi',1620,207674],
['B','2020-04-09T01:55:02.772000','Org2','wifi',360,426232],
['B','2020-04-09T02:03:32.735000','Org2','wifi',60,374827],
['B','2020-04-09T02:06:16.509000','Org2','wifi',60,386518],
['B','2020-04-09T02:13:33.497000','Org2','remote',60,373609],
['B','2020-04-09T02:17:19.176000','Org2','wifi',133,400417],
['B','2020-04-10T23:10:15.654000','Org2','remote',0,212],
['B','2020-04-10T23:10:41.749000','Org2','remote',1,285]
]).toDF(("deviceId","time-started","OrgId","type","duration","packet"))
dftest.show()
【问题讨论】:
-
partition device by 24 hours 意味着第一个
A从8thApril 1:53 AM开始,第二个在2020-04-09T04:27,3rd在2020-04-10T04:20而不是4:31因为第一次出现来自8th 1:53-9th 1:53,第二个来自下一个值,即9th 4:27 untill 10th 1:53,第三个来自下一个值,即10th 4:27,,,.....否? -
@raviteja 我认为你的 24 小时窗口对于 spark 窗口函数来说有点动态,因为它取决于最后一个的结束来计算下一个,建议使用 spark 窗口函数和组合熊猫 udaf。
-
@MohammadMurtazaHashmi 你能详细说明一下
-
@RaviTeja 我刚刚发布,如果有帮助,请 lmk
标签: pandas apache-spark pyspark apache-spark-sql pandas-groupby