數(shù)據(jù)處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,更具體地說,涉及一種數(shù)據(jù)處理方法及裝置。
【背景技術(shù)】
[0002]Spark是一種高效的分布式計算系統(tǒng),Spark可以在太字節(jié)(TB)級別的數(shù)據(jù)規(guī)模下,進(jìn)行數(shù)據(jù)挖掘與分析。要使用Spark進(jìn)行數(shù)據(jù)處理,需要掌握J(rèn)ava、Scala、Python三種語言中的一種,通常分析人員需要將數(shù)據(jù)分析的場景用以上三種語言之一實現(xiàn)為固定的程序,然后將程序編譯為機(jī)器可識別的文件,通過Java虛擬機(jī)加載并解釋執(zhí)行該文件。
[0003]但在數(shù)據(jù)分析的場景中,分析人員往往在初期沒有明確的分析思路,需要在數(shù)據(jù)上使用各種統(tǒng)計算法進(jìn)行嘗試,最終結(jié)合經(jīng)驗將最有效或可解釋的數(shù)據(jù)分析過程固化下來。在這個過程中,分析人員需要對程序進(jìn)行大量的改動,而每次改動都需要對程序文件重新進(jìn)行編譯、執(zhí)行的流程,這帶來兩方面的不便:一是每次程序文件的修改、編譯、執(zhí)行都需要花費(fèi)分析人員一定的時間,二是程序的重新執(zhí)行將導(dǎo)致數(shù)據(jù)處理流程中所有節(jié)點(diǎn)需要全部重新執(zhí)行,在大數(shù)據(jù)處理背景下程序的執(zhí)行周期將非常耗時,分析人員需要浪費(fèi)大量的時間等待修改后程序的結(jié)果。數(shù)據(jù)處理效率整體較低。
[0004]因此如何提高數(shù)據(jù)處理效率成為亟待解決的問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的是提供一種數(shù)據(jù)處理方法及裝置,以提高數(shù)據(jù)處理效率。
[0006]為實現(xiàn)上述目的,本發(fā)明提供了如下技術(shù)方案:
[0007]—種數(shù)據(jù)處理方法,包括:
[0008]基于客戶端發(fā)送的數(shù)據(jù)處理模型描述文件獲取與所述數(shù)據(jù)處理模型描述文件對應(yīng)的數(shù)據(jù)處理模型對象實例;所述數(shù)據(jù)處理模型描述文件由數(shù)據(jù)處理模型轉(zhuǎn)換得到,所述數(shù)據(jù)處理模型為有向圖,所述有向圖中的節(jié)點(diǎn)包括,包含至少一個父節(jié)點(diǎn)的操作節(jié)點(diǎn)和不包含任何父節(jié)點(diǎn)的數(shù)據(jù)源節(jié)點(diǎn),所述有向圖中的每一個節(jié)點(diǎn)對應(yīng)一個數(shù)據(jù)集;
[0009]當(dāng)接收到客戶端發(fā)送的攜帶有由所述數(shù)據(jù)處理模型對象實例中的若干節(jié)點(diǎn)構(gòu)成的節(jié)點(diǎn)列表的執(zhí)行指令時,對于所述節(jié)點(diǎn)列表中的第一節(jié)點(diǎn),若所述第一節(jié)點(diǎn)的輸入數(shù)據(jù)來自于所述第一節(jié)點(diǎn)的父節(jié)點(diǎn),且所述第一節(jié)點(diǎn)的父節(jié)點(diǎn)所對應(yīng)的數(shù)據(jù)集未被成功處理,則將所述第一節(jié)點(diǎn)的父節(jié)點(diǎn)加入所述節(jié)點(diǎn)列表并優(yōu)先處理;若所述第一節(jié)點(diǎn)的輸入數(shù)據(jù)來自于所述第一節(jié)點(diǎn)的父節(jié)點(diǎn),且所述第一節(jié)點(diǎn)的父節(jié)點(diǎn)所對應(yīng)的數(shù)據(jù)集已被成功處理,則從執(zhí)行上下文獲取所述第一節(jié)點(diǎn)的父節(jié)點(diǎn)的輸出數(shù)據(jù)集作為所述第一節(jié)點(diǎn)的輸入數(shù)據(jù)集,基于所述第一節(jié)點(diǎn)對應(yīng)的數(shù)據(jù)集對所述第一節(jié)點(diǎn)的輸入數(shù)據(jù)集進(jìn)行處理,生成所述第一節(jié)點(diǎn)的輸出數(shù)據(jù)集,將所述第一節(jié)點(diǎn)的輸出數(shù)據(jù)集記入執(zhí)行上下文;所述第一節(jié)點(diǎn)為所述節(jié)點(diǎn)列表中的任意一節(jié)點(diǎn)。
[0010]上述方法,優(yōu)選的,所述基于客戶端發(fā)送的數(shù)據(jù)處理模型描述文件獲取與所述數(shù)據(jù)處理模型描述文件對應(yīng)的數(shù)據(jù)處理模型對象實例包括:[0011 ]將所述客戶端發(fā)送的數(shù)據(jù)處理模型描述文件轉(zhuǎn)化為第一數(shù)據(jù)處理模型對象實例;
[0012]依據(jù)數(shù)據(jù)處理模型的唯一識別碼判斷所述數(shù)據(jù)處理模型描述文件是否被創(chuàng)建過數(shù)據(jù)處理模型對象實例;
[0013]若所述數(shù)據(jù)處理模型描述文件未被創(chuàng)建過數(shù)據(jù)處理模型對象實例,則將所述第一數(shù)據(jù)處理模型對象實例確定為與所述數(shù)據(jù)處理模型描述文件對應(yīng)的數(shù)據(jù)處理模型對象實例;
[0014]若所述數(shù)據(jù)處理模型描述文件已經(jīng)被創(chuàng)建數(shù)據(jù)處理模型對象實例,則將所述第一數(shù)據(jù)處理模型對象實例與已創(chuàng)建的與所述數(shù)據(jù)處理模型描述文件對應(yīng)的第二數(shù)據(jù)處理模型對象實例合并,得到與所述數(shù)據(jù)處理模型描述文件對應(yīng)的數(shù)據(jù)處理模型對象實例。
[0015]上述方法,優(yōu)選的,所述將所述第一數(shù)據(jù)處理模型對象實例與已創(chuàng)建的與所述數(shù)據(jù)處理模型描述文件對應(yīng)的第二數(shù)據(jù)處理模型對象實例合并包括:
[0016]將所述第一數(shù)據(jù)處理模型對象實例與所述第二數(shù)據(jù)處理模型對象實例進(jìn)行比較;
[0017]對于所述第一數(shù)據(jù)處理模型對象實例中第二節(jié)點(diǎn),以及所述第二數(shù)據(jù)處理模型對象實例中與所述第二節(jié)點(diǎn)具有相同唯一識別碼的第三節(jié)點(diǎn),若所述第二節(jié)點(diǎn)對應(yīng)的數(shù)據(jù)集中的參數(shù)與所述第三節(jié)點(diǎn)對應(yīng)的數(shù)據(jù)集中的參數(shù)不同,將所述第二節(jié)點(diǎn)對應(yīng)的數(shù)據(jù)集更新至所述第三節(jié)點(diǎn),并將所述第三節(jié)點(diǎn)標(biāo)記為未被處理狀態(tài);
[0018]若所述第一數(shù)據(jù)處理模型對象實例中具有第四節(jié)點(diǎn),而所述第二數(shù)據(jù)處理模型對象實例中不包含所述第四節(jié)點(diǎn),將所述第四節(jié)點(diǎn)插入所述第二數(shù)據(jù)處理模型對象實例中,并將所述第二數(shù)據(jù)處理模型對象實例中所述第四節(jié)點(diǎn)標(biāo)記為未被處理狀態(tài);
[0019]若所述第二數(shù)據(jù)處理模型對象實例中具有第五節(jié)點(diǎn),而所述第一數(shù)據(jù)處理模型對象實例中不包含所述第五節(jié)點(diǎn),將所述第二數(shù)據(jù)處理模型對象實例中的第五節(jié)點(diǎn)刪除,并將所述第五節(jié)點(diǎn)的所有子節(jié)點(diǎn)標(biāo)記為未被處理狀態(tài);
[0020]將所述第二數(shù)據(jù)處理模型對象實例中,所有父節(jié)點(diǎn)的狀態(tài)為未被處理狀態(tài)的節(jié)點(diǎn)標(biāo)記為未被處理狀態(tài)。
[0021]上述方法,優(yōu)選的,所述基于所述第一節(jié)點(diǎn)對應(yīng)的數(shù)據(jù)集對所述第一節(jié)點(diǎn)的輸入數(shù)據(jù)集進(jìn)行處理,生成所述第一節(jié)點(diǎn)的輸出數(shù)據(jù)集包括:
[0022]基于所述第一節(jié)點(diǎn)對應(yīng)的數(shù)據(jù)集生成與所述第一節(jié)點(diǎn)對應(yīng)的操作函數(shù)文件;
[0023]動態(tài)編譯所述操作函數(shù)文件并加載相應(yīng)的函數(shù)對象;
[0024]對所述第一節(jié)點(diǎn)的輸入數(shù)據(jù)集執(zhí)行所述函數(shù)對象,生成所述第一節(jié)點(diǎn)的輸出數(shù)據(jù)集。
[0025]上述方法,優(yōu)選的,所述基于所述第一節(jié)點(diǎn)對應(yīng)的數(shù)據(jù)集生成與所述第一節(jié)點(diǎn)對應(yīng)的操作函數(shù)文件包括:
[0026]從所述第一節(jié)點(diǎn)對應(yīng)的數(shù)據(jù)集中讀取所述第一節(jié)點(diǎn)的類型和參數(shù);
[0027]基于所述第一節(jié)點(diǎn)的類型確定與所述第一節(jié)點(diǎn)對應(yīng)的程序文件模板;
[0028]將所述參數(shù)填入所述程序文件模板生成與所述第一節(jié)點(diǎn)對應(yīng)的程序源文件;
[0029]對所述程序源文件進(jìn)行編譯,得到與所述第一節(jié)點(diǎn)對應(yīng)的操作函數(shù)文件。
[0030]一種數(shù)據(jù)處理裝置,包括:
[0031]獲取模塊,用于基于客戶端發(fā)送的數(shù)據(jù)處理模型描述文件獲取與所述數(shù)據(jù)處理模型描述文件對應(yīng)的數(shù)據(jù)處理模型對象實例;所述數(shù)據(jù)處理模型描述文件由數(shù)據(jù)處理模型轉(zhuǎn)換得到,所述數(shù)據(jù)處理模型為有向圖,所述有向圖中的節(jié)點(diǎn)包括,包含至少一個父節(jié)點(diǎn)的操作節(jié)點(diǎn)和不包含任何父節(jié)點(diǎn)的數(shù)據(jù)源節(jié)點(diǎn),所述有向圖中的每一個節(jié)點(diǎn)對應(yīng)一個數(shù)據(jù)集;
[0032]處理模塊,用于當(dāng)接收到客戶端發(fā)送的攜帶有由所述數(shù)據(jù)處理模型對象實例中的若干節(jié)點(diǎn)構(gòu)成的節(jié)點(diǎn)列表的執(zhí)行指令時,對于所述節(jié)點(diǎn)列表中的第一節(jié)點(diǎn),若所述第一節(jié)點(diǎn)的輸入數(shù)據(jù)來自于所述第一節(jié)點(diǎn)的父節(jié)點(diǎn),且所述第一節(jié)點(diǎn)的父節(jié)點(diǎn)所對應(yīng)的數(shù)據(jù)集未被成功處理,則將所述第一節(jié)點(diǎn)的父節(jié)點(diǎn)加入所述節(jié)點(diǎn)列表并優(yōu)先處理;若所述第一節(jié)點(diǎn)的輸入數(shù)據(jù)來自于所述第一節(jié)點(diǎn)的父節(jié)點(diǎn),且所述第一節(jié)點(diǎn)的父節(jié)點(diǎn)所對應(yīng)的數(shù)據(jù)集已被成功處理,則從執(zhí)行上下文獲取所述第一節(jié)點(diǎn)的父節(jié)點(diǎn)的輸出數(shù)據(jù)集作為所述第一節(jié)點(diǎn)的輸入數(shù)據(jù)集,基于所述第一節(jié)點(diǎn)對應(yīng)的數(shù)據(jù)集對所述第一節(jié)點(diǎn)的輸入數(shù)據(jù)集進(jìn)行處理,生成所述第一節(jié)點(diǎn)的輸出數(shù)據(jù)集,將所述第一節(jié)點(diǎn)的輸出數(shù)據(jù)集記入執(zhí)行上下文;所述第一節(jié)點(diǎn)為所述節(jié)點(diǎn)列表中的任意一節(jié)點(diǎn)。
[0033]上述裝置,優(yōu)選的,所述獲取模塊包括:
[0034]轉(zhuǎn)化子模塊,用于將所述客戶端發(fā)送的數(shù)據(jù)處理模型描述文件轉(zhuǎn)化為第一數(shù)據(jù)處理模型對象實例;
[0035]判斷子模塊,用于依據(jù)數(shù)據(jù)處理模型的唯一識別碼判斷所述數(shù)據(jù)處理模型描述文件是否被創(chuàng)建過數(shù)據(jù)處理模型對象實例;
[0036]確定子模塊,用于若所述數(shù)據(jù)處理模型描述文件未被創(chuàng)建過數(shù)據(jù)處理模型對象實例,則將所述第一數(shù)據(jù)處理模型對象實例確定為與所述數(shù)據(jù)處理模型描述文件對應(yīng)的數(shù)據(jù)處理模型對象實例;
[0037]合并子模塊,用于若所述數(shù)據(jù)處理模型描述文件已經(jīng)被創(chuàng)建數(shù)據(jù)處理模型對象實例,則將所述第一數(shù)據(jù)處理模型對象實例與已創(chuàng)建的與所述數(shù)據(jù)處理模型描述文件對應(yīng)的第二數(shù)據(jù)處理模型對象實例合并,得到與所述數(shù)據(jù)處理模型描述文件對應(yīng)的數(shù)據(jù)處理模型對象實例。
[0038]上述裝置,優(yōu)選的,所述合并子模塊包括:
[0039]比較單元,用于將所述第一數(shù)據(jù)處理模型對象實例與所述第二數(shù)據(jù)處理模型對象實例進(jìn)行比較;
[0040]第一