本發明涉及數據處理,尤其涉及一種行程數據排序方法、裝置、電子設備及存儲介質。
背景技術:
1、隨著電信市場迅速發展,用戶實時行程數據量呈指數級增長。而對用戶實時行程數據進行排序是一種常見的需求。現有的基于spark的行程數據排序方法,在進行數據分區時,有一定概率出現一個批次中同一用戶的多條地市行程數據容易分散在不同的分區中,導致用戶行程數據排序不準確。
技術實現思路
1、本發明提供一種行程數據排序方法、裝置、電子設備及存儲介質,用以解決現有技術中在進行數據分區時,有一定概率出現一個批次中同一用戶的多條地市行程數據容易分散在不同的分區中,導致用戶行程數據排序不準確的缺陷,實現將同一用戶的各用戶實時行程數據落入同一分區,能夠提升用戶行程數據排序的準確性的目的。
2、本發明提供一種行程數據排序方法,包括:
3、將當前批次的用戶實時行程數據封裝成一個彈性分布式數據集;
4、基于所述彈性分布式數據集中每條所述用戶實時行程數據中的手機號計算哈希值,并將所述哈希值與預設分區總數進行取余計算,得到余數;
5、基于各所述余數對所述彈性分布式數據集進行初步數據分區,得到多個分區,并調整所述多個分區的邊界,直至所述多個分區的數據量分布均勻;
6、將數據量分布均勻的所述多個分區進行數據打散,并存儲到磁盤中;
7、將所述磁盤中所述多個分區中的各所述用戶實時行程數據分別進行排序。
8、根據本發明提供的一種行程數據排序方法,所述基于所述彈性分布式數據集中每條所述用戶實時行程數據中的手機號計算哈希值,包括:
9、獲取所述彈性分布式數據集中每條所述用戶實時行程數據中的手機號的后四位,得到第一字符串;
10、對所述第一字符串進行哈希計算,得到所述哈希值。
11、根據本發明提供的一種行程數據排序方法,所述基于所述彈性分布式數據集中每條所述用戶實時行程數據中的手機號計算哈希值,包括:
12、對所述彈性分布式數據集中每條所述用戶實時行程數據中的手機號進行反轉操作,得到第二字符串;
13、對所述第二字符串進行哈希計算,得到所述哈希值。
14、根據本發明提供的一種行程數據排序方法,基于各所述余數對所述彈性分布式數據集進行初步數據分區,得到多個分區,包括:
15、將所述彈性分布式數據集中所述余數相同的所述用戶實時行程數據劃分為一個分區。
16、根據本發明提供的一種行程數據排序方法,所述調整所述多個分區的邊界,直至所述多個分區的數據量分布均勻,包括:
17、循環執行以下步驟,直至所述多個分區的數據量分布均勻:
18、對每個所述分區進行抽樣,得到多個樣本;
19、統計所述多個樣本的手機號的分布概率;
20、基于所述分布概率調整各所述分區的分區邊界,以使所述分布概率最低的手機號對應的各所述用戶實時行程數據從當前分區調整到數據量低于所述當前分區的另一分區。
21、根據本發明提供的一種行程數據排序方法,所述將所述磁盤中所述多個分區中的各所述用戶實時行程數據分別進行排序,包括:
22、循環執行以下步驟,直至每個數據段的長度大于或等于預設長度:
23、針對所述磁盤中每個所述分區,查找所述分區中的各所述用戶實時行程數據中的所述數據段;所述數據段包括開始時間單調上升的單調上升段和開始時間嚴格下降的嚴格下降段;
24、將所述分區中的所述嚴格下降段進行反轉操作;
25、在所述分區中的數據段的長度小于所述預設長度的情況下,將所述數據段與相鄰的數據段中的第一條所述用戶實時行程數據進行歸并。
26、根據本發明提供的一種行程數據排序方法,還包括:
27、按照行程時間范圍,從排序后的所述多個分區中提取所述行程時間范圍內各用戶在同一地市的所述用戶實時行程數據;
28、將提取的所述行程時間范圍內各用戶在同一地市的所述用戶實時行程數據推送至云數據庫中。
29、本發明還提供一種行程數據排序裝置,包括:
30、封裝模塊,用于將當前批次的用戶實時行程數據封裝成一個彈性分布式數據集;
31、計算模塊,用于基于所述彈性分布式數據集中每條所述用戶實時行程數據中的手機號計算哈希值,并將所述哈希值與預設分區總數進行取余計算,得到余數;
32、分區模塊,用于基于各所述余數對所述彈性分布式數據集進行初步數據分區,得到多個分區,并調整所述多個分區的邊界,直至所述多個分區的數據量分布均勻;
33、打散模塊,用于將數據量分布均勻的所述多個分區進行數據打散,并存儲到磁盤中;
34、排序模塊,用于將所述磁盤中所述多個分區中的各所述用戶實時行程數據分別進行排序。
35、本發明還提供一種電子設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執行所述程序時實現如上述任一種所述的行程數據排序方法。
36、本發明還提供一種非暫態計算機可讀存儲介質,其上存儲有計算機程序,該計算機程序被處理器執行時實現如上述任一種所述的行程數據排序方法。
37、本發明還提供一種計算機程序產品,包括計算機程序,所述計算機程序被處理器執行時實現如上述任一種所述的行程數據排序方法。
38、本發明提供的一種行程數據排序方法、裝置、電子設備及存儲介質,首先,將當前批次的用戶實時行程數據封裝成一個彈性分布式數據集;基于彈性分布式數據集中每條用戶實時行程數據中的手機號計算哈希值,并將哈希值與預設分區總數進行取余計算,得到余數;基于各余數對彈性分布式數據集進行初步數據分區,得到多個分區;由于同一用戶的手機號對應的余數相同,同一用戶的各用戶實時行程數據必然落入同一分區;而后,調整多個分區的邊界,直至多個分區的數據量分布均勻;將數據量分布均勻的多個分區進行數據打散,并存儲到磁盤中;將磁盤中多個分區中的各用戶實時行程數據分別進行排序。因此,本發明可以將同一用戶的各用戶實時行程數據落入同一分區,能夠提升用戶行程數據排序的準確性。
1.一種行程數據排序方法,其特征在于,包括:
2.根據權利要求1所述的行程數據排序方法,其特征在于,所述基于所述彈性分布式數據集中每條所述用戶實時行程數據中的手機號計算哈希值,包括:
3.根據權利要求1所述的行程數據排序方法,其特征在于,所述基于所述彈性分布式數據集中每條所述用戶實時行程數據中的手機號計算哈希值,包括:
4.根據權利要求1至3任一項所述的行程數據排序方法,其特征在于,基于各所述余數對所述彈性分布式數據集進行初步數據分區,得到多個分區,包括:
5.根據權利要求1至3任一項所述的行程數據排序方法,其特征在于,所述調整所述多個分區的邊界,直至所述多個分區的數據量分布均勻,包括:
6.根據權利要求1至3任一項所述的行程數據排序方法,其特征在于,所述將所述磁盤中所述多個分區中的各所述用戶實時行程數據分別進行排序,包括:
7.根據權利要求1至3任一項所述的行程數據排序方法,其特征在于,還包括:
8.一種行程數據排序裝置,其特征在于,包括:
9.一種電子設備,包括存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的計算機程序,其特征在于,所述處理器執行所述程序時實現如權利要求1至7任一項所述的行程數據排序方法。
10.一種非暫態計算機可讀存儲介質,其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執行時實現如權利要求1至7任一項所述的行程數據排序方法。