本發明涉及大數據處理技術領域,特別是涉及一種實時任務處理方法及裝置。
背景技術:
隨著互聯網產業的繁榮,尤其是移動互聯網的持續興起,機器、用戶產生的數據越來越多,同時也催生了各類大數據處理系統,例如hadoop、spark、storm等。這些系統有些是針對批處理任務的批處理引擎,例如hadoopmapreduce,有些是針對流式數據處理的實時處理引擎,例如storm,也有些系統能同時實現批處理任務和流式數據處理的實時處理任務,例如spark。
批處理的大數據處理系統是在開始計算的時候,所有的數據就已經準備好了,等待輸入計算;而流式數據處理引擎,數據并非一開始就完全準備好了,而是隨著時間的推移,逐漸出現,像用戶的行為日志,其特點是像流水一樣,不是一次過來,而是一點一點“流”過來。而“流”過來的數據也是一點一點被實時處理系統處理。兩種類型任務的主要區別是:批處理任務具有全局數據,很方便進行數據的聚合操作;而流式數據的實時處理不具備全局數據,處于聚合的中間狀態。現有流式數據處理的實時處理引擎,在流式任務實時處理時,對于相同操作的不同時間或者不同狀態的處理過程以及函數邏輯關系,需要開發者實時重新編寫。比如一個日志流中的錯誤數,一段時間內錯誤數是一個不斷累加的數字,需要臨時存放在外部存儲數據庫中,像mysql、redis等。在第一次統計一段時間內錯誤數時,開發者編寫相關操作的邏輯函數以及與數據庫連接的程序,利用該程序統計外部存儲系統存儲的當前時間內錯誤數,在下一次統計一段時間內錯誤數時,開發者需要重新編寫相關操作的邏輯函數以及與數據庫連接的程序,利用該程序再次統計外部存儲系統存儲的當前時間內錯誤數。
現有的流式任務實時處理的方法,對于相同或相似邏輯關系操作的不同時間或者不同狀態的處理過程,增加了系統處理的時間以及增加了開發者的工作量,整體開發效率不高。
技術實現要素:
本發明實施例的目的在于提供一種實時任務處理方法及裝置,以實現提供對實時數據處理過程的狀態管理,并方便地進行更新操作,降低系統處理的時間以及開發者的工作量,提高實時任務的開發效率。具體技術方案如下:
為達到上述發明目的,本發明實施例公開了一種實時任務處理方法,包括:
在流式處理任務當前執行聚合函數時,加載已存儲的所述流式處理任務執行的所述聚合函數的封裝數據包,其中,所述封裝數據包包括:所述流式處理任務的所述聚合函數的操作對象、所述操作對象的函數關系;
根據所述聚合函數以及所述封裝數據包,對所述聚合函數的所述操作對象的當前數值,按照所述操作對象的函數關系、執行所述聚合函數操作。
可選地,在所述在流式處理任務當前執行聚合函數時,加載所述流式處理任務執行的所述聚合函數的封裝數據包之前,所述方法還包括:
在所述流式處理任務首次執行所述聚合函數時,對所述聚合函數的所述操作對象的數值,按照所述操作對象的函數關系、執行所述流式處理任務的所述聚合函數操作;
在所述流式處理任務首次執行所述聚合函數結束時,將所述流式處理任務執行的所述聚合函數的所述操作對象、所述操作對象的函數關系,封裝在所述封裝數據包中;
存儲所述封裝數據包。
可選地,在對所述聚合函數的所述操作對象的數值,按照所述操作對象的函數關系、執行所述流式處理任務的所述聚合函數操作之后,所述的方法還包括:
將對所述聚合函數的所述操作對象的數值,按照所述操作對象的函數關系執行所述流式處理任務的所述聚合函數操作,得到所述操作對象的數值的結果,存儲在數據庫中。
可選地,在所述根據所述聚合函數以及所述封裝數據包,對所述聚合函數的所述操作對象的當前數值,按照所述操作對象的函數關系、執行所述聚合函數操作之前,所述的方法還包括:
累計所述流式處理任務首次執行所述聚合函數到所述流式處理任務當前執行所述聚合函數時間段的、所述操作對象的更新數據,將所述更新數據累計到所述流式處理任務首次執行所述聚合函數的所述操作對象的所述數值上,得到所述流式處理任務當前執行所述聚合函數的所述操作對象的當前數值;
加載所述流式處理任務的所述聚合函數的所述封裝數據包,以及所述操作對象的所述當前數值;
相應的,所述根據所述封裝數據包內的所述聚合函數的操作對象、所述操作對象的函數關系,對所述聚合函數的所述操作對象的當前數值,按照所述操作對象的函數關系、執行相應的操作,包括:
通過所述封裝數據包,獲取所述封裝數據包內的所述聚合函數的操作對象、所述操作對象的函數關系;
對所述聚合函數的所述操作對象的所述當前數值,按照所述操作對象的函數關系、執行所述聚合函數操作。
可選地,所述根據所述聚合函數以及所述封裝數據包,對所述聚合函數的所述操作對象的當前數值,按照所述操作對象的函數關系、執行所述聚合函數操作,包括:
通過所述封裝數據包,獲取所述封裝數據包內的所述聚合函數的操作對象、所述操作對象的函數關系,以及在數據庫中獲取到所述聚合函數的操作對象的當前數值;
對所述聚合函數的所述操作對象的所述當前數值,按照所述操作對象的函數關系、執行所述聚合函數操作。
為達到上述發明目的,本發明實施例還公開了一種實時任務處理裝置,包括:
狀態加載模塊,用于在流式處理任務當前執行聚合函數時,加載已存儲的所述流式處理任務執行的所述聚合函數的封裝數據包,其中,所述封裝數據包包括:所述流式處理任務的所述聚合函數的操作對象、所述操作對象的函數關系;
執行模塊,用于根據所述聚合函數以及所述封裝數據包,對所述聚合函數的所述操作對象的當前數值,按照所述操作對象的函數關系、執行所述聚合函數操作。
可選地,所述裝置還包括:
第一執行模塊,用于在所述流式處理任務首次執行所述聚合函數時,對所述聚合函數的所述操作對象的數值,按照所述操作對象的函數關系、執行所述流式處理任務的所述聚合函數操作;
封裝模塊,用于在所述流式處理任務首次執行所述聚合函數結束時,將所述流式處理任務執行的所述聚合函數的所述操作對象、所述操作對象的函數關系,封裝在所述封裝數據包中;
第一存儲模塊,用于存儲所述封裝數據包。
可選地,所述裝置還包括:
第二存儲模塊,用于將對所述聚合函數的所述操作對象的數值,按照所述操作對象的函數關系執行所述流式處理任務的所述聚合函數操作,得到所述操作對象的數值的結果,存儲在數據庫中。
可選地,所述裝置還包括:
累計模塊,用于累計所述流式處理任務首次執行所述聚合函數到所述流式處理任務當前執行所述聚合函數時間段的、所述操作對象的更新數據,將所述更新數據累計到所述流式處理任務首次執行所述聚合函數的所述操作對象的所述數值上,得到所述流式處理任務當前執行所述聚合函數的所述操作對象的當前數值;
數據包加載模塊,用于加載所述流式處理任務的所述聚合函數的所述封裝數據包,以及所述操作對象的所述當前數值;
相應的,所述執行模塊,包括:
獲取子模塊,用于通過所述封裝數據包,獲取所述封裝數據包內的所述聚合函數的操作對象、所述操作對象的函數關系;
執行子模塊,用于對所述聚合函數的所述操作對象的所述當前數值,按照所述操作對象的函數關系、執行所述聚合函數操作。
可選地,所述執行模塊,還用于,通過所述封裝數據包,獲取所述封裝數據包內的所述聚合函數的操作對象、所述操作對象的函數關系,以及在數據庫中獲取到所述聚合函數的操作對象的當前數值;對所述聚合函數的所述操作對象的所述當前數值,按照所述操作對象的函數關系、執行所述聚合函數操作。
本發明實施例公開了一種實時任務處理方法及裝置,通過將流式處理任務的聚合函數的操作對象、以及該操作對象的函數關系打包封裝存儲,當實時執行同樣的流式處理任務的聚合函數時,直接獲取已存儲的該流式處理任務的該聚合函數的操作對象、以及該操作對象的函數關系,提供了為相同操作函數的操作對象、以及該操作對象的函數關系的邏輯關系封裝緩存的方法。不需要開發者每次就相同問題的函數接口重復編寫數據讀寫接口,降低了對于相同操作的實時數據處理業務的時間以及提高了整體開發效率。另外,將按照操作對象的函數關系執行流式處理任務的聚合函數操作,得到操作對象的數值的結果,存儲在數據庫中,實現了實時任務處理的各種數據狀態的存儲方法。本發明實施例最終實現了對實時數據處理過程的狀態管理,并方便地進行更新操作,提高實時任務的開發效率。當然,實施本發明的任一產品或方法必不一定需要同時達到以上所述的所有優點。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明實施例的一種實時任務處理方法流程圖;
圖2為本發明實施例的一種實時任務處理方法的封裝數據包實現流程圖;
圖3為本發明實施例的一種實時任務處理方法的執行聚合函數操作流程圖;
圖4為本發明實施例的一種實時任務處理裝置圖;
圖5為本發明實施例的另一種實時任務處理裝置圖;
圖6為本發明實施例的一種實時任務處理裝置實施圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
為達到上述發明目的,本發明實施例公開了一種實時任務處理方法,如圖1所示。圖1為本發明實施例的一種實時任務處理方法流程圖,包括:
s101,在流式處理任務當前執行聚合函數時,加載已存儲的流式處理任務執行的聚合函數的封裝數據包,其中,封裝數據包包括:流式處理任務的聚合函數的操作對象、操作對象的函數關系;
具體地,在大數據處理流式任務時,需要處理相同任務的不同時間以及不同狀態下的任務。本發明實施例公開了將大數據處理流式任務執行相同類型、相同功能的聚合函數操作存儲在數據庫中,在下次執行相同類型相同功能的聚合函數操作時,從數據庫中加載已經存儲的邏輯關系。
聚合函數是對一組值執行計算并返回單一的值的函數,它經常與選擇select語句的分組groupby子句一同使用。聚合函數包括:返回指定組中的平均值,空值被忽略;返回指定組中項目的數量;返回指定數據的最大值;返回指定數據的最小值;返回指定數據的和,只能用于數字列,空值被忽略;返回指定組中的項目數量;產生一個附加的列,當用分塊cube運算符或卷曲rollup運算符添加行時,輸出值為1,當所添加的行不是由分塊cube或卷曲rollup產生時,輸出值為0;返回對表中的行或表達式列表計算的二進制校驗值,用于檢測表中行的更改;返回指定數據的校驗值,空值被忽略;返回在表的行上或在表達式列表上計算的校驗值,用于生成哈希索引;返回給定表達式中所有值的統計標準偏差;返回給定表達式中的所有值的填充統計標準偏差;返回給定表達式中所有值的統計方差;返回給定表達式中所有值的填充的統計方差。
具體做法是,當流式處理任務當前執行聚合函數時,從數據庫中加載首次存儲的該聚合函數的封裝數據包,該封裝數據包中封裝有該聚合函數操作對象以及操作對象的函數關系。將該封裝數據包解封裝獲取到該聚合函數操作對象以及操作對象的函數關系。
s102,根據聚合函數以及封裝數據包,對聚合函數的操作對象的當前數值,按照操作對象的函數關系、執行聚合函數操作。
具體地,在數據庫中得到當前執行聚合函數的操作對象的當前數值,通過上述得到的該封裝數據包解封裝后,獲得的該聚合函數操作對象以及操作對象的函數關系,按照該聚合函數操作對象的函數關系,對聚合函數的操作對象的當前數值,執行具體的聚合函數操作。該聚合函數操作可為上述列舉的聚合函數中的一種或者幾種。
本發明實施例公開了一種實時任務處理方法,通過將流式處理任務的聚合函數的操作對象、以及該操作對象的函數關系打包封裝存儲,當實時執行同樣的流式處理任務的聚合函數時,直接獲取已存儲的該流式處理任務的該聚合函數的操作對象、以及該操作對象的函數關系,提供了為相同操作函數的操作對象、以及該操作對象的函數關系的邏輯關系封裝緩存的方法。不需要開發者每次就相同問題的函數接口重復編寫數據讀寫接口,降低了對于相同操作的實時數據處理業務的時間以及提高了整體開發效率。本發明實施例最終實現了對實時數據處理過程的狀態管理,并方便地進行更新操作,提高實時任務的開發效率。
可選地,在本發明實施例的實時任務處理方法的一種實施例中,在流式處理任務當前執行聚合函數時,加載流式處理任務執行的聚合函數的封裝數據包之前,方法還包括,實時任務處理方法的封裝數據包實現過程,如圖2所示。圖2為本發明實施例的一種實時任務處理方法的封裝數據包實現流程圖,包括:
s201,在流式處理任務首次執行聚合函數時,對聚合函數的操作對象的數值,按照操作對象的函數關系、執行流式處理任務的聚合函數操作;
具體地,在流式處理任務首次執行聚合函數時,按照編寫的聚合函數的邏輯關系,獲取到首次執行該聚合函數的操作對象以及該聚合函數操作對象的函數關系,在數據庫中獲得該操作對象的數值,將該操作對象的數值按照該聚合函數操作對象的函數關系執行該聚合函數操作。
例如,在流式處理任務首次執行一個網站業務指定組中的平均值時,利用第一次編寫的邏輯關系函數,在數據庫中獲取到該網站業務的數值,根據該邏輯關系函數,對該網站業務的數值執行求平均值的操作。
s202,在流式處理任務首次執行聚合函數結束時,將流式處理任務執行的聚合函數的操作對象、操作對象的函數關系,封裝在封裝數據包中;
具體地,在上述流式處理任務首次執行聚合函數結束時,將該流式處理任務執行的聚合函數的操作對象、操作對象的函數關系,形成一個有機的整體,將數據與操作數據的源代碼進行有機的結合,形成“類”,最終實現將該流式處理任務執行的聚合函數的操作對象、操作對象的函數關系封裝成封裝數據包。
例如,在流式處理任務首次執行一個網站業務指定組中的平均值結束時,將編寫的對該網站業務的數值執行求平均值的邏輯關系函數的操作對象、操作對象的函數關系封裝在封裝數據包中。
s203,存儲封裝數據包。
具體地,把上述形成的聚合函數的封裝數據包存儲在數據庫中,該數據庫可為用戶自定義的存儲該聚合函數邏輯關系的數據庫,也可為常用的mysql、redis等,具體可根據實施情況而定。
可見,本發明實施例的實時任務處理方法的一種實施例中,通過對一些常用聚合函數操作進行封裝,使得流式處理任務實時執行相同聚合函數時,不需要手工操控外部數據,當下次在使用相同的聚合函數操作時,直接獲取該封裝好的封裝數據包,執行相應的聚合函數操作。提供了為相同操作函數的操作對象、以及該操作對象的函數關系的邏輯關系封裝緩存的方法,使得每個流式處理任務實時執行相同聚合函數時都有相對應的狀態與之關聯,提供了封裝數據包以及流式處理任務實時執行相同聚合函數結果存儲,使得方便查找實時流式處理任務和維持流式處理任務的所有狀態。
可選地,在本發明實施例的實時任務處理方法的一種實施例中,在對聚合函數的操作對象的數值,按照操作對象的函數關系、執行流式處理任務的聚合函數操作之后,方法還包括:
將對聚合函數的操作對象的數值,按照操作對象的函數關系執行流式處理任務的聚合函數操作,得到操作對象的數值的結果,存儲在數據庫中。
具體地,在流式處理任務首次執行聚合函數時結束時,將在數據庫中獲得的操作對象數值,按照操作對象的函數關系執行流式處理任務的聚合函數操作,得到操作后的結果,存儲在數據庫中。
例如,在流式處理任務首次執行一個網站業務指定數據的最大值時,利用第一次編寫的邏輯關系函數,在數據庫中獲取到時間段或時間點該網站業務的最大值,將獲取的最大值輸入,并將獲取的該最大值重新保存在數據庫中。等到下次在執行時間段或時間點該網站業務指定數據的最大值時,只需要查找該流式處理任務首次執行該網站業務指定數據的最大值結束后到當前時間點這段時間的最大值,然后將保存的首次執行該網站業務指定數據的最大值作比較,便可得出總時間段或時間點該網站業務指定數據的最大值。
可見,在本發明實施例的實時任務處理方法的一種實施例中,通過將對聚合函數的操作對象的數值,按照操作對象的函數關系執行流式處理任務的聚合函數操作,得到操作對象的數值的結果存儲在數據庫中,在流式處理任務再次執行聚合函數時,可直接獲取流式處理任務首次執行聚合函數的操作對象的數值的結果,可以流式處理任務首次執行聚合函數時結束為時間點,計算該時間點后到該流式處理任務再次執行聚合函數時間段的數據,減少處理數據的時間以及提高了實時任務處理方法整體的效率。另外,將按照操作對象的函數關系執行流式處理任務的聚合函數操作,得到操作對象的數值的結果,存儲在數據庫中,實現了實時任務處理的各種數據狀態的存儲方法。
可選地,在本發明實施例的實時任務處理方法的一種實施例中,在根據聚合函數以及封裝數據包,對聚合函數的操作對象的當前數值,按照操作對象的函數關系、執行聚合函數操作之前,方法還包括:
累計流式處理任務首次執行聚合函數到流式處理任務當前執行聚合函數時間段的、操作對象的更新數據,將更新數據累計到流式處理任務首次執行聚合函數的操作對象的數值上,得到流式處理任務當前執行聚合函數的操作對象的當前數值;
具體地,以流式處理任務首次執行聚合函數為起始點,以流式處理任務當前執行該聚合函數為結束點,得到一個時間段。在數據庫中累計該時間段的該流失處理任務的操作對象的更新數據,得到該時間段的、操作對象的更新數據量。若該時間段的流式處理任務執行聚合函數的數據呈遞增的形式,將流式處理任務首次執行該聚合函數的操作對象的數值為基數,將得到當前執行聚合函數時間段的、操作對象的更新數據量累加到該流式處理任務首次執行該聚合函數的操作對象的數值上,得到該流式處理任務當前執行該聚合函數的操作對象的當前數值。若該時間段的流式處理任務執行聚合函數的數據呈遞減的形式,用流式處理任務首次執行該聚合函數的操作對象的數值,減去得到的當前執行聚合函數時間段的、操作對象的更新數據量,得到該流式處理任務當前執行該聚合函數的操作對象的當前數值。
例如,當流式處理任務中需要對某個指標進行聚合的時候,比如,掃描文本數據流中的錯誤關鍵字,并求和,以實時統計出系統中發生的錯誤關鍵字總和。以流式處理任務首次執行統計系統中發生的錯誤關鍵字總和為起始點,以流式處理任務當前執行統計系統中發生的錯誤關鍵字總和為結束點,得到一個時間段。累計該時間段的系統中發生的錯誤關鍵字的更新數據,得到該時間段的系統中發生的錯誤關鍵字的更新數據量。將流式處理任務首次執行統計系統中發生的錯誤關鍵字總和為基數,將該時間段的系統中發生的錯誤關鍵字的更新數據量累加到該流式處理任務首次執行統計系統中發生的錯誤關鍵字總和上,得到流式處理任務當前執行統計系統中發生的錯誤關鍵字的當前數值。
加載流式處理任務的聚合函數的封裝數據包,以及操作對象的當前數值;
具體地,將數據庫中存儲的聚合函數的封裝數據包,以及操作對象的當前數值加載到實時任務執行器中。
例如,在實時統計系統中發生的錯誤關鍵字總和時,在上述流式處理任務首次執行統計系統中發生的錯誤關鍵字總和的封裝數據包,以及上述得到的流式處理任務當前執行統計系統中發生的錯誤關鍵字的當前數值加載到實時任務執行器中。
相應的,根據封裝數據包內的聚合函數的操作對象、操作對象的函數關系,對聚合函數的操作對象的當前數值,按照操作對象的函數關系、執行相應的操作,包括:
通過封裝數據包,獲取封裝數據包內的聚合函數的操作對象、操作對象的函數關系;
具體地,將加載的該封裝數據包解封裝,獲取到該封裝數據包內的聚合函數的操作對象、操作對象的函數關系。
例如,在實時統計系統中發生的錯誤關鍵字總和時,將加載的流式處理任務首次執行統計系統中發生的錯誤關鍵字總和的封裝數據包解封裝,獲取到該執行統計系統中發生的錯誤關鍵字總和的封裝數據包內統計系統中發生的錯誤關鍵字的操作對象,以及對統計系統中發生的錯誤關鍵字的操作對象的統計函數。
對聚合函數的操作對象的當前數值,按照操作對象的函數關系、執行聚合函數操作。
具體地,在上述得到該流式處理任務聚合函數的操作對象、以及操作對象的函數關系,對該聚合函數的操作對象的當前數值,按照該流式處理任務聚合函數操作對象的函數關系,執行聚合函數操作。
例如,在實時統計系統中發生的錯誤關鍵字總和時,在得到統計系統中發生的錯誤關鍵字的操作對象、對統計系統中發生的錯誤關鍵字的操作對象的統計函數以及流式處理任務當前執行統計系統中發生的錯誤關鍵字的當前數值后,按照該統計系統中發生的錯誤關鍵字的操作對象的統計函數,對當前執行統計系統中發生的錯誤關鍵字的當前數值。執行統計操作,得到當前系統中發生的錯誤關鍵字總和。
可見,通過累計流式處理任務首次執行聚合函數到流式處理任務當前執行聚合函數時間段的、操作對象的更新數據,將更新數據累計到流式處理任務首次執行聚合函數的操作對象的數值上,得到流式處理任務當前執行聚合函數的操作對象的當前數值,便于獲得整個時間段的數據更新量,只需要計算出累計流式處理任務首次執行聚合函數到流式處理任務當前執行聚合函數時間段的、操作對象的更新數據,減少整個時間段的計算量,提高實時流式處理任務的計算效率。
可選地,在本發明實施例的實時任務處理方法的一種實施例中,根據聚合函數以及封裝數據包,對聚合函數的操作對象的當前數值,按照操作對象的函數關系、執行聚合函數操作,如圖3所示。圖3為本發明實施例的一種實時任務處理方法的執行聚合函數操流程圖,包括:
s301,通過封裝數據包,獲取封裝數據包內的聚合函數的操作對象、操作對象的函數關系,以及在數據庫中獲取到聚合函數的操作對象的當前數值;
具體地,通過將加載到執行器中的封裝數據包解封,得到封裝數據包中的聚合函數的操作對象、操作對象的函數關系。在數據庫中獲得流式處理任務當前執行聚合函數的操作對象的當前數值。
例如,在實時統計系統中發生的錯誤關鍵字總和時,將流式處理任務首次執行統計系統中發生的錯誤關鍵字總和的封裝數據包加載到實時任務執行器中,在實時任務執行器中對該流式處理任務首次執行統計系統中發生的錯誤關鍵字總和的封裝數據包解封裝,獲取到該封裝數據包中統計系統中發生的錯誤關鍵字的操作對象,以及對統計系統中發生的錯誤關鍵字的操作對象的統計函數。在數據庫中獲取到統計系統中發生的錯誤關鍵字的操作對象的當前數值。
s302,對聚合函數的操作對象的當前數值,按照操作對象的函數關系、執行聚合函數操作。
具體地,在上述得到封裝數據包中的聚合函數的操作對象、操作對象的函數關系以及該聚合函數的操作對象的當前數值后,按照該操作對象的函數關系,對聚合函數的操作對象的當前數值,執行聚合函數操作。
例如,在實時統計系統中發生的錯誤關鍵字總和時,將上述得到的統計系統中發生的錯誤關鍵字的操作對象,以及對統計系統中發生的錯誤關鍵字的操作對象的統計函數以及統計系統中發生的錯誤關鍵字的操作對象的當前數值后,按照該統計系統中發生的錯誤關鍵字的操作對象的統計函數關系,對統計系統中發生的錯誤關鍵字的操作對象的當前數值執行時間段內系統發生的錯誤關鍵字總和操作。
可見,通過獲取到封裝數據包的聚合函數邏輯關系,在數據庫中獲取到當前該聚合函數的操作對象的當前數值,對聚合函數的操作對象的當前數值,按照操作對象的函數關系、執行聚合函數操作,不需要用戶實時編寫處理該流式任務聚合函數的程序,只需要在數據庫中獲取到當前更新數據,調用該聚合函數邏輯關系執行該聚合函數即可,提高了實時計算作業的開發效率。
在本發明實施例的實時任務處理方法的一種實施例中,以掃描文本數據流中的錯誤關鍵字,并求和,實時統計出某個系統中發生的錯誤關鍵字總和為例,對本發明的實時任務處理方法做詳細介紹。具體實現步驟如下:
步驟一,在流式處理任務首次執行聚合函數時,對聚合函數的操作對象的數值,按照操作對象的函數關系、執行流式處理任務的聚合函數操作。
對應在流式處理任務首次執行實時統計出某個系統中發生的錯誤關鍵字總和時,具體為:
當該流式處理任務首次執行統計系統中發生的錯誤關鍵字總和時,連接外部存儲數據庫redis,根據執行該系統中發生的錯誤關鍵字總和的聚合函數的名稱,例如counter(“error_num”)是在操作“error_num”這個指標,在數據庫中獲取該指標的數值。根據統計系統中發生的錯誤關鍵字的操作對象的統計函數,對數據庫中的系統中發生的錯誤關鍵字的操作對象的數值進行操作,例如:++意味著對系統中發生的錯誤關鍵字的操作對象的數值進行加一操作,--意味著對系統中發生的錯誤關鍵字的操作對象的數值減一操作。得到該流式處理任務首次執行系統中發生的錯誤關鍵字總和的結果。
步驟二,在流式處理任務首次執行聚合函數結束時,將流式處理任務執行的聚合函數的操作對象、操作對象的函數關系,封裝在封裝數據包中。
對應在流式處理任務首次執行實時統計出某個系統中發生的錯誤關鍵字總和時,具體為:
當該流式處理任務首次執行統計系統中發生的錯誤關鍵字總和結束時,將該流式處理任務首次執行統計系統中發生的錯誤關鍵字總和的統計系統中發生的錯誤關鍵字的操作對象、以及統計系統中發生的錯誤關鍵字的操作對象的統計函數,封裝形成統計系統中發生的錯誤關鍵字總和封裝數據包。
步驟三,存儲封裝數據包。
對應在流式處理任務首次執行實時統計出某個系統中發生的錯誤關鍵字總和時,具體為:
將該流式處理任務首次執行統計系統中發生的錯誤關鍵字總和,形成的統計系統中發生的錯誤關鍵字總和封裝數據包存儲。
步驟四,將對聚合函數的操作對象的數值,按照操作對象的函數關系執行流式處理任務的聚合函數操作,得到操作對象的數值的結果,存儲在數據庫中。
對應在流式處理任務首次執行實時統計出某個系統中發生的錯誤關鍵字總和時,具體為:
將該流式處理任務首次執行系統中發生的錯誤關鍵字總和的結果存儲在數據庫中。
步驟五,在流式處理任務當前執行聚合函數時,加載已存儲的流式處理任務執行的聚合函數的封裝數據包,其中,封裝數據包包括:流式處理任務的聚合函數的操作對象、操作對象的函數關系。
對應在流式處理任務當前執行實時統計出某個系統中發生的錯誤關鍵字總和時,具體為:
當該流式處理任務當前執行系統中發生的錯誤關鍵字總和時,加載已存儲的統計系統中發生的錯誤關鍵字總和封裝數據包。
步驟六,根據聚合函數以及封裝數據包,對聚合函數的操作對象的當前數值,按照操作對象的函數關系、執行聚合函數操作。
對應在流式處理任務當前執行實時統計出某個系統中發生的錯誤關鍵字總和時,具體為:
根據該執行統計系統中發生的錯誤關鍵字總和的函數以及該統計系統中發生的錯誤關鍵字總和封裝數據包,對數據庫中的系統中發生的錯誤關鍵字的操作對象的當前數值,按照該數據包中統計系統中發生的錯誤關鍵字的操作對象的統計函數、執行統計系統中當前發生的錯誤關鍵字總和操作。
為達到上述發明目的,本發明實施例還公開了一種實時任務處理裝置,如圖4所示。圖4為本發明實施例的一種實時任務處理裝置圖,包括:
狀態加載模塊401,用于在流式處理任務當前執行聚合函數時,加載已存儲的流式處理任務執行的聚合函數的封裝數據包,其中,封裝數據包包括:流式處理任務的聚合函數的操作對象、操作對象的函數關系;
執行模塊402,用于根據聚合函數以及封裝數據包,對聚合函數的操作對象的當前數值,按照操作對象的函數關系、執行聚合函數操作。
本發明實施例公開了一種實時任務處理裝置,通過將流式處理任務的聚合函數的操作對象、以及該操作對象的函數關系打包封裝存儲,當實時執行同樣的流式處理任務的聚合函數時,直接獲取已存儲的該流式處理任務的該聚合函數的操作對象、以及該操作對象的函數關系,提供了為相同操作函數的操作對象、以及該操作對象的函數關系的邏輯關系封裝緩存的方法。不需要開發者每次就相同問題的函數接口重復編寫數據讀寫接口,降低了對于相同操作的實時數據處理業務的時間以及提高了整體開發效率。本發明實施例最終實現了對實時數據處理過程的狀態管理,并方便地進行更新操作,提高實時任務的開發效率。
需要說明的是,本發明實施例的裝置是應用上述實時任務處理方法的裝置,則上述實時任務處理方法的所有實施例均適用于該裝置,且均能達到相同或相似的有益效果。
可選地,在本發明實施例的實時任務處理裝置的一種實施例中,實時任務處理裝置還包括:
第一執行模塊,用于在流式處理任務首次執行聚合函數時,對聚合函數的操作對象的數值,按照操作對象的函數關系、執行流式處理任務的聚合函數操作;
封裝模塊,用于在流式處理任務首次執行聚合函數結束時,將流式處理任務執行的聚合函數的操作對象、操作對象的函數關系,封裝在封裝數據包中;
第一存儲模塊,用于存儲封裝數據包。
可選地,在本發明實施例的實時任務處理裝置的一種實施例中,實時任務處理裝置還包括:
第二存儲模塊,用于將對聚合函數的操作對象的數值,按照操作對象的函數關系執行流式處理任務的聚合函數操作,得到操作對象的數值的結果,存儲在數據庫中。
可選地,在本發明實施例的實時任務處理裝置的一種實施例中,實時任務處理裝置還包括:
累計模塊,用于累計流式處理任務首次執行聚合函數到流式處理任務當前執行聚合函數時間段的、操作對象的更新數據,將更新數據累計到流式處理任務首次執行聚合函數的操作對象的數值上,得到流式處理任務當前執行聚合函數的操作對象的當前數值;
數據包加載模塊,用于加載流式處理任務的聚合函數的封裝數據包,以及操作對象的當前數值;
相應的,執行模塊402,包括:
獲取子模塊,用于通過封裝數據包,獲取封裝數據包內的聚合函數的操作對象、操作對象的函數關系;
執行子模塊,用于對聚合函數的操作對象的當前數值,按照操作對象的函數關系、執行聚合函數操作。
可選地,在本發明實施例的實時任務處理裝置的一種實施例中,執行模塊402,還用于通過封裝數據包,獲取封裝數據包內的聚合函數的操作對象、操作對象的函數關系,以及在數據庫中獲取到聚合函數的操作對象的當前數值;對聚合函數的操作對象的當前數值,按照操作對象的函數關系、執行聚合函數操作。
在本發明實施例的實時任務處理裝置的一種實施例中,如圖5所示。圖5為本發明實施例的另一種實時任務處理裝置圖,包括:
第一執行模塊501,用于在流式處理任務首次執行聚合函數時,對聚合函數的操作對象的數值,按照操作對象的函數關系、執行流式處理任務的聚合函數操作。
封裝模塊502,用于在流式處理任務首次執行聚合函數結束時,將流式處理任務執行的聚合函數的操作對象、操作對象的函數關系,封裝在封裝數據包中。
第一存儲模塊503,用于存儲封裝數據包。
第二存儲模塊504,用于將對聚合函數的操作對象的數值,按照操作對象的函數關系執行流式處理任務的聚合函數操作,得到操作對象的數值的結果,存儲在數據庫中。
狀態加載模塊505,用于在流式處理任務當前執行聚合函數時,加載已存儲的流式處理任務執行的聚合函數的封裝數據包,其中,封裝數據包包括:流式處理任務的聚合函數的操作對象、操作對象的函數關系。
執行模塊506,用于根據聚合函數以及封裝數據包,對聚合函數的操作對象的當前數值,按照操作對象的函數關系、執行聚合函數操作。
在本發明實施例的實時任務處理裝置的一種實施例中,以掃描文本數據流中的錯誤關鍵字,并求和,實時統計出某個系統中發生的錯誤關鍵字總和為例,對本發明的實時任務處理裝置做詳細介紹,如圖6所示。圖6為本發明實施例的一種實時任務處理裝置實施圖。
在圖5中,第一執行模塊501,用于在流式處理任務首次執行聚合函數時,對聚合函數的操作對象的數值,按照操作對象的函數關系、執行流式處理任務的聚合函數操作。
對應在流式處理任務首次執行實時統計出某個系統中發生的錯誤關鍵字總和時,可設置實時任務執行器執行。具體為:
實時任務執行器,用于當該流式處理任務首次執行統計系統中發生的錯誤關鍵字總和時,連接外部存儲數據庫redis,根據執行該系統中發生的錯誤關鍵字總和的聚合函數的名稱,例如counter(“error_num”)是在操作“error_num”這個指標,在數據庫中獲取該指標的數值。根據統計系統中發生的錯誤關鍵字的操作對象的統計函數,對數據庫中的系統中發生的錯誤關鍵字的操作對象的數值進行操作,例如:++意味著對系統中發生的錯誤關鍵字的操作對象的數值進行加一操作,--意味著對系統中發生的錯誤關鍵字的操作對象的數值減一操作。得到該流式處理任務首次執行系統中發生的錯誤關鍵字總和的結果。
封裝模塊502,用于在流式處理任務首次執行聚合函數結束時,將流式處理任務執行的聚合函數的操作對象、操作對象的函數關系,封裝在封裝數據包中。
對應在流式處理任務首次執行實時統計出某個系統中發生的錯誤關鍵字總和時,具體為:
實時任務執行器,用于當該流式處理任務首次執行統計系統中發生的錯誤關鍵字總和結束時,將該流式處理任務首次執行統計系統中發生的錯誤關鍵字總和的統計系統中發生的錯誤關鍵字的操作對象、以及統計系統中發生的錯誤關鍵字的操作對象的統計函數,封裝形成統計系統中發生的錯誤關鍵字總和封裝數據包。
第一存儲模塊503,用于存儲封裝數據包。
對應在流式處理任務首次執行實時統計出某個系統中發生的錯誤關鍵字總和時,具體為:
狀態元數據信息存儲數據庫,用于將該流式處理任務首次執行統計系統中發生的錯誤關鍵字總和,形成的統計系統中發生的錯誤關鍵字總和封裝數據包存儲。
第二存儲模塊504,用于將對聚合函數的操作對象的數值,按照操作對象的函數關系執行流式處理任務的聚合函數操作,得到操作對象的數值的結果,存儲在數據庫中。
對應在流式處理任務首次執行實時統計出某個系統中發生的錯誤關鍵字總和時,具體為:
外部存儲數據庫,用于將該流式處理任務首次執行系統中發生的錯誤關鍵字總和的結果存儲在數據庫中。
狀態加載模塊505,用于在流式處理任務當前執行聚合函數時,加載已存儲的流式處理任務執行的聚合函數的封裝數據包,其中,封裝數據包包括:流式處理任務的聚合函數的操作對象、操作對象的函數關系。
對應在流式處理任務當前執行實時統計出某個系統中發生的錯誤關鍵字總和時,具體為:
狀態管理器,用于當該流式處理任務再次執行系統中發生的錯誤關鍵字總和時,加載已存儲的統計系統中發生的錯誤關鍵字總和封裝數據包。
執行模塊506,用于根據聚合函數以及封裝數據包,對聚合函數的操作對象的當前數值,按照操作對象的函數關系、執行聚合函數操作。
對應在流式處理任務當前執行實時統計出某個系統中發生的錯誤關鍵字總和時,具體為:
任務執行器,用于根據該執行統計系統中發生的錯誤關鍵字總和的函數以及該統計系統中發生的錯誤關鍵字總和封裝數據包,對數據庫中的系統中發生的錯誤關鍵字的操作對象的當前數值,按照該數據包中統計系統中發生的錯誤關鍵字的操作對象的統計函數、執行統計系統中當前發生的錯誤關鍵字總和操作。
需要說明的是,本發明實施例的一種實時任務處理裝置實施圖,僅為本發明實施例公開的實時任務處理裝置中的一種,任何具有第一執行模塊501、封裝模塊502、第一存儲模塊503、第二存儲模塊504、狀態加載模塊505、執行模塊506相同功能或者具有本發明實施例的實時任務處理方法思想的執行器或者執行模塊,都屬于本發明的保護范圍。
需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括要素的過程、方法、物品或者設備中還存在另外的相同要素。
本說明書中的各個實施例均采用相關的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
以上僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。凡在本發明的精神和原則之內所作的任何修改、等同替換、改進等,均包含在本發明的保護范圍內。