输入分钟输出小时python_输出键,值对如何使1小时内的时间在使用Python的MapReduce中的reducer中结束?...
這是一個(gè)策略:
來自Mapper的
:發(fā)出每個(gè)記錄的三個(gè)副本并使用二級排序:
((復(fù)合鍵),值)=
((消息小時(shí) - 一小時(shí),當(dāng)前消息的精確時(shí)間),消息)
((消息小時(shí),消息的準(zhǔn)確時(shí)間),消息)
((消息小時(shí)1小時(shí),消息的準(zhǔn)確時(shí)間),消息)
現(xiàn)在:您需要標(biāo)準(zhǔn)的二級排序:
setPartitioner只到密鑰的前半部分(消息的小時(shí))
setGroupingComparator只到鍵的前半部分(消息的小時(shí))
setSortingComparator to(消息小時(shí),消息的準(zhǔn)確時(shí)間)
在reducer中:每個(gè)reducer組接收消息精確時(shí)間內(nèi)/ - 60到120分鐘內(nèi)的所有消息 . reducer以排序順序查看"precise time of message"的所有內(nèi)容 . 因此,您可以在每個(gè)減速器中保留過去60分鐘內(nèi)查看的所有消息的滑動窗口
NOTE 以上假設(shè)60分鐘消息的數(shù)據(jù)可以放在單個(gè)reducer任務(wù)的內(nèi)存中 . 否則,您將需要求助于將數(shù)據(jù)寫入磁盤作為窗口函數(shù)的一部分 .
Update OP要求進(jìn)一步澄清窗口,所以我們走了 .
從Mapper發(fā)出的密鑰的角度考慮:每個(gè)輸入記錄有三個(gè)密鑰 . 現(xiàn)在在Reducer上,這意味著每個(gè)輸入記錄都出現(xiàn)在三個(gè)不同的組中 . 原因是我們需要針對每個(gè)輸入記錄考慮前導(dǎo)和滯后記錄 . 因此,現(xiàn)在我們讓每個(gè)組都可以訪問所有輸入記錄,這些記錄可能在最早記錄的60分鐘內(nèi)以及最新記錄的60分鐘內(nèi) . 由于記錄按每小時(shí)最早的秒數(shù)分組:這意味著-60(分鐘)到120(最大)對比屬于給定小時(shí)組的任何記錄 .
總結(jié)
以上是生活随笔為你收集整理的输入分钟输出小时python_输出键,值对如何使1小时内的时间在使用Python的MapReduce中的reducer中结束?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吃什么饭都反酸为什么?
- 下一篇: 如何防止冰箱里的食物变质?