本發(fā)明涉及大數(shù)據(jù)領(lǐng)域,具體為一種基于大數(shù)據(jù)的配送匹配方法及系統(tǒng)。
背景技術(shù):
1、電子商務(wù)、外賣、快遞給人們的生活帶來了很多便利,已經(jīng)成為人們?nèi)粘I钪胁豢苫蛉钡囊徊糠?。這些服務(wù)的普及極大地便利了人們的生活,使得商品和餐飲能夠迅速到達(dá)消費者手中。隨著需求的不斷增長,配送訂單數(shù)量也呈現(xiàn)出井噴式爆發(fā),這對物流和配送系統(tǒng)提出了更高的要求,又快又好的將商品配送到消費者手里是配送服務(wù)的關(guān)鍵。傳統(tǒng)的配送匹配大多依據(jù)一些規(guī)則設(shè)置,例如距離最近等,這些配送方式首先沒有考慮交通信息,例如擁堵情況,也沒有考慮天氣情況,難免不會出現(xiàn)配送效率低、客戶滿意度低等問題。
2、隨著大數(shù)據(jù)技術(shù)的迅速發(fā)展,海量的訂單數(shù)據(jù)、交通數(shù)據(jù)、用戶行為數(shù)據(jù)等可以被實時采集和分析,為配送匹配提供了新的可能?;诖髷?shù)據(jù)的配送匹配系統(tǒng)可以充分利用這些數(shù)據(jù),構(gòu)建更為精準(zhǔn)和高效的配送方案,提升資源利用效率和客戶體驗。但是對海量數(shù)據(jù)的實時分析對算力的要求較高,如何提高大數(shù)據(jù)分析速度成為了精準(zhǔn)配送以及提高配送服務(wù)體驗的關(guān)鍵。
技術(shù)實現(xiàn)思路
1、為了解決上述問題,本發(fā)明提供了一種基于大數(shù)據(jù)的配送匹配方法,所述方法包括以下步驟:
2、獲取用戶提交的配送請求,同時啟動配送匹配程序,識別配送匹配程序中發(fā)送到大數(shù)據(jù)平臺的作業(yè),從作業(yè)中得到多個區(qū)間,每個區(qū)間中相鄰算子之間為窄依賴;
3、對于區(qū)間中的每個算子,按照算子的時間復(fù)雜度和要處理的數(shù)據(jù)量以及并行度對算子賦予執(zhí)行用時,確定每個區(qū)間的輕量算子,基于輕量算子的前后算子的執(zhí)行用時確定將輕量算子劃分到的子任務(wù);
4、將一個任務(wù)槽中的子任務(wù)按照子任務(wù)所屬作業(yè)進(jìn)行分組,根據(jù)分組中子任務(wù)在作業(yè)的距離以及兩個子任務(wù)之間算子確定每個分組中子任務(wù)的間隔,利用子任務(wù)的執(zhí)行用時和分組中子任務(wù)的間隔調(diào)整子任務(wù)所在協(xié)程執(zhí)行順序;
5、將大數(shù)據(jù)平臺的作業(yè)運(yùn)行結(jié)果返回給配送匹配程序,由配送匹配程序完成配送匹配。
6、優(yōu)選地,所述確定每個區(qū)間的輕量算子,基于輕量算子的前后算子的執(zhí)行用時確定將輕量算子劃分到的子任務(wù),具體為:
7、若一個算子的執(zhí)行用時和創(chuàng)建一個協(xié)程的用時的比值小于閾值,則將算子作為輕量算子;
8、將輕量算子和前后算子中執(zhí)行用時最小值劃分到一個子任務(wù)中。
9、優(yōu)選地,所述根據(jù)分組中子任務(wù)在作業(yè)的距離以及兩個子任務(wù)之間算子確定每個分組中子任務(wù)的間隔,具體為:
10、按照同一個分組中子任務(wù)先后順序?qū)ψ尤蝿?wù)排序,并計算排序后相鄰兩個子任務(wù)中前一個子任務(wù)的最后一個算子以及后一個子任務(wù)的第一個算子之間的所有算子;
11、將所述所有算子的執(zhí)行時間的總和作為相鄰兩個子任務(wù)的間隔。
12、優(yōu)選地,所述利用子任務(wù)的執(zhí)行用時和分組中子任務(wù)的間隔調(diào)整子任務(wù)所在協(xié)程執(zhí)行順序,具體為:
13、將子任務(wù)中算子的執(zhí)行用時總和作為子任務(wù)的執(zhí)行時間;
14、根據(jù)分組所屬作業(yè)的優(yōu)先級對分組排序,按照分組中子任務(wù)的間隔和子任務(wù)執(zhí)行時間將后一分組中的子任務(wù)插入到前一任務(wù)分組中,不斷重復(fù)直到最后一個任務(wù)分組;
15、按照子任務(wù)排序結(jié)果對子任務(wù)所在的協(xié)程排序并執(zhí)行。
16、優(yōu)選地,所述按照分組中子任務(wù)的間隔和子任務(wù)執(zhí)行時間循環(huán)將后一分組中的子任務(wù)插入到前一任務(wù)分組中,不斷重復(fù)直到最后一個任務(wù)分組,具體為:
17、從前一任務(wù)分組中找到第一個能夠放下后一任務(wù)分組中第一個子任務(wù)的間隔,將后一任務(wù)分組的第一個子任務(wù)添加到前一任務(wù)分組,在后一個任務(wù)分組中第一個子任務(wù)所在前一任務(wù)分組間隔內(nèi)從前往后移動新添加的子任務(wù),保持后一任務(wù)分組中第一個子任務(wù)和第二個子任務(wù)的間隔不變,直到后一任務(wù)分組中的第二個子任務(wù)添加到前一任務(wù)分組后不和前一任務(wù)分組的所有子任務(wù)存在重疊部分;如果不存在,則增大后一個任務(wù)分組中第一個子任務(wù)和第二個子任務(wù)的間隔,直到后一任務(wù)分組中的第二個子任務(wù)添加到前一任務(wù)分組后不和前一任務(wù)分組的所有子任務(wù)存在重疊部分;以此類推,直到后一分組中的子任務(wù)全部添加到前一分組,并更新前一分組為添加了后一分組中全部子任務(wù);
18、重復(fù)上述過程,直到最后一個任務(wù)分組添加到前一分組。
19、另外一方面,本發(fā)明提供了一種基于大數(shù)據(jù)的配送匹配系統(tǒng),所述系統(tǒng)包括以下模塊:
20、作業(yè)區(qū)間劃分模塊,用于獲取用戶提交的配送請求,同時啟動配送匹配程序,識別配送匹配程序中發(fā)送到大數(shù)據(jù)平臺的作業(yè),從作業(yè)中得到多個區(qū)間,每個區(qū)間中相鄰算子之間為窄依賴;
21、子任務(wù)劃分模塊,用于對于區(qū)間中的每個算子,按照算子的時間復(fù)雜度和要處理的數(shù)據(jù)量以及并行度對算子賦予執(zhí)行用時,確定每個區(qū)間的輕量算子,基于輕量算子的前后算子的執(zhí)行用時確定將輕量算子劃分到的子任務(wù);
22、協(xié)程排序模塊,用于將一個任務(wù)槽中的子任務(wù)按照子任務(wù)所屬作業(yè)進(jìn)行分組,根據(jù)分組中子任務(wù)在作業(yè)的距離以及兩個子任務(wù)之間算子確定每個分組中子任務(wù)的間隔,利用子任務(wù)的執(zhí)行用時和分組中子任務(wù)的間隔調(diào)整子任務(wù)所在協(xié)程執(zhí)行順序;
23、配送匹配模塊,用于將大數(shù)據(jù)平臺的作業(yè)運(yùn)行結(jié)果返回給配送匹配程序,由配送匹配程序完成配送匹配。
24、優(yōu)選地,所述確定每個區(qū)間的輕量算子,基于輕量算子的前后算子的執(zhí)行用時確定將輕量算子劃分到的子任務(wù),具體為:
25、若一個算子的執(zhí)行用時和創(chuàng)建一個協(xié)程的用時的比值小于閾值,則將算子作為輕量算子;
26、將輕量算子和前后算子中執(zhí)行用時最小值劃分到一個子任務(wù)中。
27、優(yōu)選地,所述根據(jù)分組中子任務(wù)在作業(yè)的距離以及兩個子任務(wù)之間算子確定每個分組中子任務(wù)的間隔,具體為:
28、按照同一個分組中子任務(wù)先后順序?qū)ψ尤蝿?wù)排序,并計算排序后相鄰兩個子任務(wù)中前一個子任務(wù)的最后一個算子以及后一個子任務(wù)的第一個算子之間的所有算子;
29、將所述所有算子的執(zhí)行時間的總和作為相鄰兩個子任務(wù)的間隔。
30、優(yōu)選地,所述利用子任務(wù)的執(zhí)行用時和分組中子任務(wù)的間隔調(diào)整子任務(wù)所在協(xié)程執(zhí)行順序,具體為:
31、將子任務(wù)中算子的執(zhí)行用時總和作為子任務(wù)的執(zhí)行時間;
32、根據(jù)分組所屬作業(yè)的優(yōu)先級對分組排序,按照分組中子任務(wù)的間隔和子任務(wù)執(zhí)行時間將后一分組中的子任務(wù)插入到前一任務(wù)分組中,不斷重復(fù)直到最后一個任務(wù)分組;
33、按照子任務(wù)排序結(jié)果對子任務(wù)所在的協(xié)程排序并執(zhí)行。
34、優(yōu)選地,所述按照分組中子任務(wù)的間隔和子任務(wù)執(zhí)行時間循環(huán)將后一分組中的子任務(wù)插入到前一任務(wù)分組中,不斷重復(fù)直到最后一個任務(wù)分組,具體為:
35、從前一任務(wù)分組中找到第一個能夠放下后一任務(wù)分組中第一個子任務(wù)的間隔,將后一任務(wù)分組的第一個子任務(wù)添加到前一任務(wù)分組,在后一個任務(wù)分組中第一個子任務(wù)所在前一任務(wù)分組間隔內(nèi)從前往后移動新添加的子任務(wù),保持后一任務(wù)分組中第一個子任務(wù)和第二個子任務(wù)的間隔不變,直到后一任務(wù)分組中的第二個子任務(wù)添加到前一任務(wù)分組后不和前一任務(wù)分組的所有子任務(wù)存在重疊部分;如果不存在,則增大后一個任務(wù)分組中第一個子任務(wù)和第二個子任務(wù)的間隔,直到后一任務(wù)分組中的第二個子任務(wù)添加到前一任務(wù)分組后不和前一任務(wù)分組的所有子任務(wù)存在重疊部分;以此類推,直到后一分組中的子任務(wù)全部添加到前一分組,并更新前一分組為添加了后一分組中全部子任務(wù);
36、重復(fù)上述過程,直到最后一個任務(wù)分組添加到前一分組。
37、此外,本發(fā)明還提供了一種計算機(jī)可讀存儲介質(zhì),所述可讀存儲介質(zhì)上存儲有計算機(jī)程序,所述計算機(jī)程序在被處理器執(zhí)行時實現(xiàn)如上所述的方法。
38、針對在進(jìn)行配送匹配中,對于匹配程序中調(diào)用大數(shù)據(jù)平臺完成實時數(shù)據(jù)分析中耗時長的問題,本發(fā)明一方面將簡單的算子合并為任務(wù)槽中的一個任務(wù),另外一方面,對任務(wù)槽中的子任務(wù)進(jìn)行排序,實現(xiàn)對子任務(wù)所在協(xié)程的調(diào)度,提高子任務(wù)執(zhí)行之間的協(xié)同,避免協(xié)程的頻繁切換,提高大數(shù)據(jù)平臺的執(zhí)行效率,進(jìn)而提高配送匹配過程的速度。