基于dsl的大數(shù)據(jù)開發(fā)應(yīng)用方法及裝置的制造方法
【專利摘要】本發(fā)明提出一種基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法及裝置,包括步驟:從數(shù)據(jù)處理功能模塊庫中調(diào)用功能元模塊,采用DSL語法建立特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型;運(yùn)行所述數(shù)據(jù)應(yīng)用模型,通過DSL解析器對(duì)所述數(shù)據(jù)應(yīng)用模型解析轉(zhuǎn)換成目標(biāo)代碼腳本;在分布式大數(shù)據(jù)系統(tǒng)上運(yùn)行所述目標(biāo)代碼腳本,并返回運(yùn)行結(jié)果。本發(fā)明提供基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法及裝置,實(shí)現(xiàn)了大數(shù)據(jù)開發(fā)應(yīng)用工作中所有階段的數(shù)據(jù)處理功能;并且通過DSL領(lǐng)域特定語言,實(shí)現(xiàn)對(duì)特定領(lǐng)域數(shù)據(jù)簡單高效的開發(fā)應(yīng)用。
【專利說明】
基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法及裝置
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及大數(shù)據(jù)開發(fā)應(yīng)用領(lǐng)域,特別涉及一種基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法 及裝置。
【背景技術(shù)】
[0002] 隨著大數(shù)據(jù)時(shí)代的來臨,數(shù)據(jù)呈現(xiàn)爆炸性增長,已經(jīng)滲透到當(dāng)今每一個(gè)行業(yè)和業(yè) 務(wù)領(lǐng)域,成為重要的生產(chǎn)因素。在不同的行業(yè)和業(yè)務(wù)領(lǐng)域中,數(shù)據(jù)的來源、類型結(jié)構(gòu)、處理方 法以及應(yīng)用方式都有各自的特點(diǎn);這導(dǎo)致了大數(shù)據(jù)開發(fā)應(yīng)用的高度復(fù)雜性。如何實(shí)現(xiàn)對(duì)特 定領(lǐng)域數(shù)據(jù)進(jìn)行高效的開發(fā)應(yīng)用,降低大數(shù)據(jù)開發(fā)人員、數(shù)據(jù)科學(xué)家以及領(lǐng)域?qū)<覍?duì)大數(shù) 據(jù)開發(fā)應(yīng)用的門檻,已成為一個(gè)亟待解決的問題。
[0003] 目前,許多基于分布式大數(shù)據(jù)平臺(tái)Had〇〇p、Spark、以及NoSQL的大數(shù)據(jù)開發(fā)應(yīng)用解 決方案相繼出現(xiàn)。例如,大數(shù)據(jù)ETL工具Kettle通過提供一個(gè)圖形化的應(yīng)用界面來實(shí)現(xiàn)數(shù)據(jù) 抽取(extract)、轉(zhuǎn)換(transform)、以及加載(load);大數(shù)據(jù)處理分析工具Hive通過使用類 SQL的Hi veQL語言實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)、查詢和分析;大數(shù)據(jù)分析挖掘工具Knime通過提供一個(gè) 圖形化的應(yīng)用界面實(shí)現(xiàn)數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)、以及預(yù)測(cè)分析。上述的三種工具都是現(xiàn)在比較 流行的大數(shù)據(jù)開發(fā)應(yīng)用工具,它們可以有效地完成大數(shù)據(jù)開發(fā)應(yīng)用工作中一個(gè)階段或多個(gè) 階段的數(shù)據(jù)處理功能,但是不能實(shí)現(xiàn)大數(shù)據(jù)開發(fā)應(yīng)用工作中所有階段的數(shù)據(jù)處理功能。
[0004] 現(xiàn)有的大數(shù)據(jù)開發(fā)應(yīng)用方法雖然可以對(duì)數(shù)據(jù)在分布式大數(shù)據(jù)系統(tǒng)中進(jìn)行處理,但 功能比較單一,性能不是很好,使用門檻也比較高,很難實(shí)現(xiàn)對(duì)特定領(lǐng)域數(shù)據(jù)進(jìn)行簡單高效 的開發(fā)應(yīng)用。如果要有效地解決這個(gè)問題,必須找到一種方法根據(jù)該領(lǐng)域數(shù)據(jù)的類型結(jié)構(gòu)、 處理方法及應(yīng)用方式的特點(diǎn)開發(fā)其特有的數(shù)據(jù)開發(fā)應(yīng)用模型。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的主要目的為提供一種基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法及裝置,實(shí)現(xiàn)了大 數(shù)據(jù)開發(fā)應(yīng)用工作中所有階段的數(shù)據(jù)處理功能;并且通過DSL領(lǐng)域特定語言,實(shí)現(xiàn)對(duì)特定領(lǐng) 域數(shù)據(jù)簡單高效的開發(fā)應(yīng)用。
[0006] 本發(fā)明提出一種基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法,包括步驟:
[0007]從數(shù)據(jù)處理功能模塊庫中調(diào)用功能元模塊,采用DSL語法建立特定領(lǐng)域的數(shù)據(jù)應(yīng) 用模型;
[0008] 運(yùn)行所述數(shù)據(jù)應(yīng)用模型,通過DSL解析器對(duì)所述數(shù)據(jù)應(yīng)用模型解析轉(zhuǎn)換成目標(biāo)代 碼腳本;
[0009] 在分布式大數(shù)據(jù)系統(tǒng)上運(yùn)行所述目標(biāo)代碼腳本,并返回運(yùn)行結(jié)果。
[0010]進(jìn)一步地,所述采用DSL語法建立特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型的步驟包括:
[0011] 根據(jù)中文語法結(jié)構(gòu),采用短語以及標(biāo)點(diǎn)符號(hào)完成純中文的DSL腳本編輯,建立特定 領(lǐng)域的數(shù)據(jù)應(yīng)用模型。
[0012] 進(jìn)一步地,所述通過DSL解析器對(duì)所述數(shù)據(jù)應(yīng)用模型解析轉(zhuǎn)換成目標(biāo)代碼腳本的 步驟包括:
[0013] 采用分隔字符制導(dǎo)翻譯方法建立的DSL解析器對(duì)所述數(shù)據(jù)應(yīng)用模型解析轉(zhuǎn)換成目 標(biāo)代碼腳本。
[0014] 進(jìn)一步地,所述建立特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型的步驟之后還包括:
[0015] 建立特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型庫,并存儲(chǔ)所述特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型。
[0016] 進(jìn)一步地,所述返回運(yùn)行結(jié)果的步驟之后還包括:
[0017] 對(duì)運(yùn)行結(jié)果進(jìn)行可視化圖表展示。
[0018] 本發(fā)明還提供了一種基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用裝置,包括:
[0019]應(yīng)用模型建立單元,從數(shù)據(jù)處理功能模塊庫中調(diào)用功能元模塊,采用DSL語法建立 特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型;
[0020] 模型運(yùn)行解析單元,運(yùn)行所述數(shù)據(jù)應(yīng)用模型,通過DSL解析器對(duì)所述數(shù)據(jù)應(yīng)用模型 解析轉(zhuǎn)換成目標(biāo)代碼腳本;
[0021] 腳本運(yùn)行返回單元,在分布式大數(shù)據(jù)系統(tǒng)上運(yùn)行所述目標(biāo)代碼腳本,并返回運(yùn)行 結(jié)果。
[0022] 進(jìn)一步地,所述應(yīng)用模型建立單元包括:
[0023] 中文語法建立子單元,根據(jù)中文語法結(jié)構(gòu),采用短語以及標(biāo)點(diǎn)符號(hào)完成純中文的 DSL腳本編輯,建立特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型。
[0024] 進(jìn)一步地,所述模型運(yùn)行解析單元包括:
[0025]分隔字符解析子單元,采用分隔字符制導(dǎo)翻譯方法建立的DSL解析器對(duì)所述數(shù)據(jù) 應(yīng)用模型解析轉(zhuǎn)換成目標(biāo)代碼腳本。
[0026] 進(jìn)一步地,所述應(yīng)用模型建立單元還包括:
[0027] 模型庫建立子單元,建立特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型庫,并存儲(chǔ)所述特定領(lǐng)域的數(shù) 據(jù)應(yīng)用模型。
[0028] 進(jìn)一步地,還包括:
[0029] 圖表展示單元,對(duì)運(yùn)行結(jié)果進(jìn)行可視化圖表展示。
[0030] 本發(fā)明中提供的基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法及裝置,具有以下有益效果:
[0031]本發(fā)明中提供的基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法及裝置,能夠簡單高效地開發(fā)應(yīng) 用大數(shù)據(jù),開發(fā)出大數(shù)據(jù)在特定領(lǐng)域中蘊(yùn)含的巨大價(jià)值;根據(jù)特定領(lǐng)域數(shù)據(jù)結(jié)構(gòu)類型、處理 方法及應(yīng)用方式的特點(diǎn),從通用的數(shù)據(jù)處理功能元模塊庫中選定合適的功能元模塊,按照 類自然語言的DSL語法結(jié)構(gòu),構(gòu)建該特定領(lǐng)域特有的數(shù)據(jù)應(yīng)用模型并保存在對(duì)應(yīng)的特定領(lǐng) 域數(shù)據(jù)應(yīng)用模型庫中,供數(shù)據(jù)科學(xué)家和領(lǐng)域?qū)<以趹?yīng)用展示平臺(tái)上直接調(diào)用,對(duì)數(shù)據(jù)應(yīng)用 模型的運(yùn)行結(jié)果在應(yīng)用展示平臺(tái)上進(jìn)行多種可視化圖表的展示。
【附圖說明】
[0032]圖1是本發(fā)明一實(shí)施例中基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法步驟示意圖;
[0033]圖2是本發(fā)明一實(shí)施例中DSL解析器解析過程示意圖;
[0034] 圖3是本發(fā)明一實(shí)施例中基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用裝置結(jié)構(gòu)示意圖;
[0035] 圖4是本發(fā)明一實(shí)施例中應(yīng)用模型建立單元結(jié)構(gòu)示意圖;
[0036] 圖5是本發(fā)明一實(shí)施例中模型運(yùn)行解析單元結(jié)構(gòu)示意圖;
[0037] 圖6是本發(fā)明另一實(shí)施例中基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用裝置結(jié)構(gòu)示意圖。
[0038] 本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。
【具體實(shí)施方式】
[0039] 應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0040] 參照?qǐng)D1,為本發(fā)明一實(shí)施例中的基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法步驟示意圖。
[0041] 本發(fā)明一實(shí)施例提出一種基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法,包括:
[0042]步驟S1,從數(shù)據(jù)處理功能模塊庫中調(diào)用功能元模塊,采用DSL語法建立特定領(lǐng)域的 數(shù)據(jù)應(yīng)用模型;
[0043]步驟S2,運(yùn)行上述數(shù)據(jù)應(yīng)用模型,通過DSL解析器對(duì)上述數(shù)據(jù)應(yīng)用模型解析轉(zhuǎn)換成 目標(biāo)代碼腳本;
[0044]步驟S3,在分布式大數(shù)據(jù)系統(tǒng)上運(yùn)行上述目標(biāo)代碼腳本,并返回運(yùn)行結(jié)果。
[0045]目前,許多基于分布式大數(shù)據(jù)平臺(tái)Hadoop、Spark、以及NoSQL的大數(shù)據(jù)開發(fā)應(yīng)用解 決方案相繼出現(xiàn)。例如,大數(shù)據(jù)ETL工具Kettle通過提供一個(gè)圖形化的應(yīng)用界面來實(shí)現(xiàn)數(shù)據(jù) 抽取(extract)、轉(zhuǎn)換(transform)、以及加載(load);大數(shù)據(jù)處理分析工具Hive通過使用類 SQL的Hi veQL語言實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)、查詢和分析;大數(shù)據(jù)分析挖掘工具Knime通過提供一個(gè) 圖形化的應(yīng)用界面實(shí)現(xiàn)數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)、以及預(yù)測(cè)分析。上述的三種工具都是現(xiàn)在比較 流行的大數(shù)據(jù)開發(fā)應(yīng)用工具,它們可以有效地完成大數(shù)據(jù)開發(fā)應(yīng)用工作中一個(gè)階段或多個(gè) 階段的數(shù)據(jù)處理功能,但是不能實(shí)現(xiàn)大數(shù)據(jù)開發(fā)應(yīng)用工作中所有階段的數(shù)據(jù)處理功能。 [0046]在本實(shí)施例中,根據(jù)特定領(lǐng)域數(shù)據(jù)(DSL)結(jié)構(gòu)類型、處理方法及應(yīng)用方式的特點(diǎn), 從通用的數(shù)據(jù)處理功能元模塊庫中選定合適的功能元模塊,按照類自然語言的DSL語法結(jié) 構(gòu),構(gòu)建該特定領(lǐng)域特有的數(shù)據(jù)應(yīng)用模型并保存在對(duì)應(yīng)的特定領(lǐng)域數(shù)據(jù)應(yīng)用模型庫中,供 數(shù)據(jù)科學(xué)家和領(lǐng)域?qū)<以趹?yīng)用展示平臺(tái)上直接調(diào)用,實(shí)現(xiàn)了大數(shù)據(jù)開發(fā)應(yīng)用工作中所有階 段的數(shù)據(jù)處理功能。
[0047]上述步驟S1中的數(shù)據(jù)處理功能模塊庫的建立包括:
[0048]采用分布式大數(shù)據(jù)系統(tǒng)可執(zhí)行語言(例如SQL、Scala、Java以及R等)將數(shù)據(jù)處理各 流程中基本的功能以及算法封裝成每個(gè)功能元模塊,并給每個(gè)功能元模塊分配一個(gè)獨(dú)有的 中文名稱;將功能元模塊存儲(chǔ)至對(duì)應(yīng)的子功能模塊庫;建立一個(gè)數(shù)據(jù)處理功能元模塊庫,采 用對(duì)象存儲(chǔ)的方式對(duì)功能元模塊進(jìn)行存儲(chǔ)。根據(jù)數(shù)據(jù)的處理流程,將數(shù)據(jù)處理功能元模塊 庫劃分為數(shù)據(jù)采集、導(dǎo)入、轉(zhuǎn)換、清洗、融合、分析、挖掘以及機(jī)器學(xué)習(xí)等數(shù)個(gè)子功能模塊庫; 具體可參照下表1,其為數(shù)據(jù)處理功能模塊庫結(jié)構(gòu)表。
[0049]
[0051] 表 1
[0052] 上表1中,數(shù)據(jù)處理功能模塊庫包括多個(gè)子模塊庫(不限于表中八個(gè)),每個(gè)子模塊 庫包括多個(gè)元模塊(不限于表中四個(gè)),每個(gè)元模塊由數(shù)據(jù)處理各流程中基本的功能以及算 法封裝而成,并給每個(gè)功能元模塊分配一個(gè)獨(dú)有的中文名稱。
[0053]本實(shí)施例中的基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法實(shí)現(xiàn)了大數(shù)據(jù)開發(fā)應(yīng)用工作中所有 階段的數(shù)據(jù)處理功能;并且通過DSL領(lǐng)域特定語言,實(shí)現(xiàn)對(duì)特定領(lǐng)域數(shù)據(jù)簡單高效的開發(fā)應(yīng) 用。
[0054] 進(jìn)一步地,上述步驟S1中,采用DSL語法建立特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型包括:
[0055] 根據(jù)中文語法結(jié)構(gòu),采用短語以及標(biāo)點(diǎn)符號(hào)完成純中文的DSL腳本編輯,建立特定 領(lǐng)域的數(shù)據(jù)應(yīng)用模型。
[0056] 在本實(shí)施例中,類自然語言的DSL語法是根據(jù)中文語法結(jié)構(gòu)的特點(diǎn)設(shè)計(jì)而成,采用 短語形式(例如并列、動(dòng)賓、動(dòng)補(bǔ)、以及主謂等)以及標(biāo)點(diǎn)符號(hào)(逗號(hào)、頓號(hào)以及句號(hào)等)共同 完成純中文的DSL腳本編輯。這種利用類自然語言的DSL語法結(jié)構(gòu)建立數(shù)據(jù)應(yīng)用模型在一具 體實(shí)施例中如下:
[0057]執(zhí)行'元模塊201',比較'元模塊602'、'元模塊603',執(zhí)行'元模塊701'。
[0058]上述類自然語言的DSL語句構(gòu)成了一個(gè)簡單的數(shù)據(jù)處理工作流;結(jié)合表1可以看 出,它完成了一個(gè)數(shù)據(jù)導(dǎo)入功能,兩個(gè)數(shù)據(jù)分析功能以及一個(gè)數(shù)據(jù)挖掘功能。語句中的逗號(hào) 定義了數(shù)據(jù)處理工作的順序,頓號(hào)表示元模塊602和元模塊603并行運(yùn)行,單引號(hào)把調(diào)用的 功能元模塊名標(biāo)識(shí)出來,句號(hào)代表數(shù)據(jù)處理工作的完成。(參照?qǐng)D2)在建立數(shù)據(jù)處理功能模 塊庫時(shí),各個(gè)功能元模塊都有一個(gè)獨(dú)有的中文名稱,通過使用中文名稱便可以直接調(diào)用對(duì) 應(yīng)的功能元模塊。另外,需要定義特定領(lǐng)域的專業(yè)術(shù)語(動(dòng)作名稱、狀態(tài)名稱、以及參數(shù)名稱 等,例如導(dǎo)入、轉(zhuǎn)換等)以及一些關(guān)鍵字(和、執(zhí)行、比較、以及選擇等),它們和功能元模塊名 稱共同組成短語形式。標(biāo)點(diǎn)符號(hào)的定義、特定領(lǐng)域?qū)I(yè)術(shù)語的定義、以及一些關(guān)鍵字的定義 都是由Java編譯而成,這些定義和它們對(duì)應(yīng)的名稱采用對(duì)象存儲(chǔ)的方式進(jìn)行保存。
[0059] 進(jìn)一步地,參照?qǐng)D2,上述步驟S2中,通過DSL解析器對(duì)上述數(shù)據(jù)應(yīng)用模型解析轉(zhuǎn)換 成目標(biāo)代碼腳本包括:
[0060] 采用分隔字符制導(dǎo)翻譯方法建立的DSL解析器對(duì)上述數(shù)據(jù)應(yīng)用模型解析轉(zhuǎn)換成目 標(biāo)代碼腳本。
[0061] 為了解析上述的DSL腳本,還需要設(shè)計(jì)一個(gè)相應(yīng)的DSL解析器。從上面的具體實(shí)施 例中可以看出,使用結(jié)構(gòu)比較簡單語句,不需要嵌套的上下文環(huán)境;采用分隔字符制導(dǎo)翻譯 方法建立DSL解析器就可以滿足對(duì)上述DSL腳本進(jìn)行解析。如果對(duì)DSL語法結(jié)構(gòu)有更高更復(fù) 雜的需求,可以采用語法制導(dǎo)翻譯的方法建立DSL解析器。在本實(shí)施例中,中文標(biāo)點(diǎn)符號(hào)被 定義為分隔字符。DSL解析器在獲得輸入的DSL腳本后,基于分隔字符將其分解成小塊。例 如,上述示例語句可被分解為"執(zhí)行"、"元模塊201"、"比較"、"元模塊602"、"元模塊603"、 "執(zhí)行"、和"元模塊701"等語義模塊;根據(jù)各語義模塊之間的關(guān)系,DSL解析器建立語義模 型。最后,通過調(diào)取各個(gè)語義模塊的定義,將語義模型透明轉(zhuǎn)換為目標(biāo)代碼腳本。
[0062] 進(jìn)一步地,上述建立特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型的步驟之后還包括:
[0063] 建立特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型庫,并存儲(chǔ)上述特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型。
[0064]基于特定領(lǐng)域數(shù)據(jù)結(jié)構(gòu)類型、處理方法及應(yīng)用方式的特點(diǎn),從通用的數(shù)據(jù)處理功 能元模塊庫中選定合適的功能元模塊,根據(jù)上述定義的類自然語言的DSL語法編寫DSL腳本 (數(shù)據(jù)開發(fā)應(yīng)用方法),再對(duì)其進(jìn)行封裝,就構(gòu)建了一個(gè)特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型。特定領(lǐng)域 的數(shù)據(jù)應(yīng)用模型的存儲(chǔ)方式同數(shù)據(jù)處理功能元模塊類似,每一個(gè)特定領(lǐng)域數(shù)據(jù)應(yīng)用模型都 分配了一個(gè)獨(dú)有的中文名稱,中文名稱和其對(duì)應(yīng)的DSL腳本采用對(duì)象存儲(chǔ)的方式保存在特 定領(lǐng)域模型庫中。
[0065] 將特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型存儲(chǔ)至特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型庫中,則之后的數(shù)據(jù) 處理工作便可以直接從特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型庫中調(diào)取數(shù)據(jù)應(yīng)用模型。
[0066] 進(jìn)一步地,上述步驟S3中,返回運(yùn)行結(jié)果之后還包括:
[0067] 對(duì)運(yùn)行結(jié)果進(jìn)行可視化圖表展示。
[0068] 設(shè)計(jì)開發(fā)一個(gè)基于瀏覽器(B/S)的編輯界面作為特定領(lǐng)域模型的應(yīng)用展示平臺(tái)去 調(diào)用和運(yùn)行特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型。在該平臺(tái)上,設(shè)置一個(gè)語言輸入欄;在語言輸入欄 中,通過輸入特定領(lǐng)域數(shù)據(jù)應(yīng)用模型的中文名稱去調(diào)用并運(yùn)行該模型。通過特定領(lǐng)域數(shù)據(jù) 應(yīng)用模型獨(dú)有的中文名稱,調(diào)取特定領(lǐng)域模型庫中對(duì)應(yīng)的數(shù)據(jù)處理模型的DSL腳本;運(yùn)行該 DSL腳本,類自然語言的DSL解析器將其解析為包含數(shù)據(jù)處理功能元模塊名,特定領(lǐng)域?qū)I(yè) 術(shù)語,以及關(guān)鍵字的語義模型;再通過調(diào)取語義模型中這些模塊的定義生成目標(biāo)代碼腳本。 目標(biāo)代碼腳本可在分布式大數(shù)據(jù)系統(tǒng)中運(yùn)行,并返回運(yùn)行結(jié)果。特定領(lǐng)域模型應(yīng)用展示平 臺(tái)采用強(qiáng)大的可視化引擎,對(duì)運(yùn)行結(jié)果的輸出數(shù)據(jù)進(jìn)行可視化建模,提供多種可視化圖表 展示(例如2D、3D以及交互式)。
[0069]參照?qǐng)D3,本發(fā)明一實(shí)施例中還提供了一種基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用裝置,包括: [0070]應(yīng)用模型建立單元10,從數(shù)據(jù)處理功能模塊庫中調(diào)用功能元模塊,采用DSL語法建 立特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型;
[0071]模型運(yùn)行解析單元20,運(yùn)行上述數(shù)據(jù)應(yīng)用模型,通過DSL解析器對(duì)上述數(shù)據(jù)應(yīng)用模 型解析轉(zhuǎn)換成目標(biāo)代碼腳本;
[0072] 腳本運(yùn)行返回單元30,在分布式大數(shù)據(jù)系統(tǒng)上運(yùn)行上述目標(biāo)代碼腳本,并返回運(yùn) 行結(jié)果。
[0073]目前,許多基于分布式大數(shù)據(jù)平臺(tái)Hadoop、Spark、以及NoSQL的大數(shù)據(jù)開發(fā)應(yīng)用解 決方案相繼出現(xiàn)。例如,大數(shù)據(jù)ETL工具Kettle通過提供一個(gè)圖形化的應(yīng)用界面來實(shí)現(xiàn)數(shù)據(jù) 抽取(extract)、轉(zhuǎn)換(transform)、以及加載(load);大數(shù)據(jù)處理分析工具Hive通過使用類 SQL的Hi veQL語言實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)、查詢和分析;大數(shù)據(jù)分析挖掘工具Knime通過提供一個(gè) 圖形化的應(yīng)用界面實(shí)現(xiàn)數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)、以及預(yù)測(cè)分析。上述的三種工具都是現(xiàn)在比較 流行的大數(shù)據(jù)開發(fā)應(yīng)用工具,它們可以有效地完成大數(shù)據(jù)開發(fā)應(yīng)用工作中一個(gè)階段或多個(gè) 階段的數(shù)據(jù)處理功能,但是不能實(shí)現(xiàn)大數(shù)據(jù)開發(fā)應(yīng)用工作中所有階段的數(shù)據(jù)處理功能。 [0074]在本實(shí)施例中,根據(jù)特定領(lǐng)域數(shù)據(jù)結(jié)構(gòu)類型、處理方法及應(yīng)用方式的特點(diǎn),從通用 的數(shù)據(jù)處理功能元模塊庫中選定合適的功能元模塊,按照類自然語言的DSL語法結(jié)構(gòu),構(gòu)建 該特定領(lǐng)域特有的數(shù)據(jù)應(yīng)用模型并保存在對(duì)應(yīng)的特定領(lǐng)域數(shù)據(jù)應(yīng)用模型庫中,供數(shù)據(jù)科學(xué) 家和領(lǐng)域?qū)<以趹?yīng)用展示平臺(tái)上直接調(diào)用,實(shí)現(xiàn)了大數(shù)據(jù)開發(fā)應(yīng)用工作中所有階段的數(shù)據(jù) 處理功能。
[0075] 上述數(shù)據(jù)處理功能模塊庫的建立包括:采用分布式大數(shù)據(jù)系統(tǒng)可執(zhí)行語言(例如 SQL、Scala、Java以及R等)將數(shù)據(jù)處理各流程中基本的功能以及算法封裝成每個(gè)功能元模 塊,并給每個(gè)功能元模塊分配一個(gè)獨(dú)有的中文名稱;將功能元模塊存儲(chǔ)至對(duì)應(yīng)的子功能模 塊庫;建立一個(gè)數(shù)據(jù)處理功能元模塊庫,采用對(duì)象存儲(chǔ)的方式對(duì)功能元模塊進(jìn)行存儲(chǔ)。根據(jù) 數(shù)據(jù)的處理流程,將數(shù)據(jù)處理功能元模塊庫劃分為數(shù)據(jù)采集、導(dǎo)入、轉(zhuǎn)換、清洗、融合、分析、 挖掘以及機(jī)器學(xué)習(xí)等數(shù)個(gè)子功能模塊庫;具體可參照上表1的數(shù)據(jù)處理功能模塊庫結(jié)構(gòu)表。
[0076] 本實(shí)施例中的基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用裝置實(shí)現(xiàn)了大數(shù)據(jù)開發(fā)應(yīng)用工作中所有 階段的數(shù)據(jù)處理功能;并且通過DSL領(lǐng)域特定語言,實(shí)現(xiàn)對(duì)特定領(lǐng)域數(shù)據(jù)簡單高效的開發(fā)應(yīng) 用。
[0077] 進(jìn)一步地,參照?qǐng)D4,上述應(yīng)用模型建立單元10包括:
[0078] 中文語法建立子單元100,根據(jù)中文語法結(jié)構(gòu),采用短語以及標(biāo)點(diǎn)符號(hào)完成純中文 的DSL腳本編輯,建立特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型。
[0079] 在本實(shí)施例中,類自然語言的DSL語法是根據(jù)中文語法結(jié)構(gòu)的特點(diǎn)設(shè)計(jì)而成,采用 短語形式(例如并列、動(dòng)賓、動(dòng)補(bǔ)、以及主謂等)以及標(biāo)點(diǎn)符號(hào)(逗號(hào)、頓號(hào)以及句號(hào)等)共同 完成純中文的DSL腳本編輯。這種類自然語言的DSL語法結(jié)構(gòu)在一具體實(shí)施例中如下:
[0080] 執(zhí)行'元模塊201',比較'元模塊602'、'元模塊603',執(zhí)行'元模塊701'。
[0081]上述類自然語言的DSL語句構(gòu)成了一個(gè)簡單的數(shù)據(jù)處理工作流;結(jié)合表1可以看 出,它完成了一個(gè)數(shù)據(jù)導(dǎo)入功能,兩個(gè)數(shù)據(jù)分析功能以及一個(gè)數(shù)據(jù)挖掘功能。語句中的逗號(hào) 定義了數(shù)據(jù)處理工作的順序,頓號(hào)表示元模塊602和元模塊603并行運(yùn)行,單引號(hào)把調(diào)用的 功能元模塊名標(biāo)識(shí)出來,句號(hào)代表數(shù)據(jù)處理工作的完成。(參照?qǐng)D2)在建立數(shù)據(jù)處理功能模 塊庫時(shí),各個(gè)功能元模塊都有一個(gè)獨(dú)有的中文名稱,通過使用中文名稱便可以直接調(diào)用對(duì) 應(yīng)的功能元模塊。另外,需要定義特定領(lǐng)域的專業(yè)術(shù)語(動(dòng)作名稱、狀態(tài)名稱、以及參數(shù)名稱 等,例如導(dǎo)入、轉(zhuǎn)換等)以及一些關(guān)鍵字(和、執(zhí)行、比較、以及選擇等),它們和功能元模塊名 稱共同組成短語形式。標(biāo)點(diǎn)符號(hào)的定義、特定領(lǐng)域?qū)I(yè)術(shù)語的定義、以及一些關(guān)鍵字的定義 都是由Java編譯而成,這些定義和它們對(duì)應(yīng)的名稱采用對(duì)象存儲(chǔ)的方式進(jìn)行保存。
[0082] 進(jìn)一步地,上述應(yīng)用模型建立單元10還包括:
[0083]模型庫建立子單元101,建立特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型庫,并存儲(chǔ)上述特定領(lǐng)域的 數(shù)據(jù)應(yīng)用模型。
[0084]基于特定領(lǐng)域數(shù)據(jù)結(jié)構(gòu)類型、處理方法及應(yīng)用方式的特點(diǎn),從通用的數(shù)據(jù)處理功 能元模塊庫中選定合適的功能元模塊,根據(jù)上述定義的類自然語言的DSL語法編寫DSL腳本 (數(shù)據(jù)開發(fā)應(yīng)用方法),再對(duì)其進(jìn)行封裝,就構(gòu)建了一個(gè)特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型。特定領(lǐng)域 的數(shù)據(jù)應(yīng)用模型的存儲(chǔ)方式同數(shù)據(jù)處理功能元模塊類似,每一個(gè)特定領(lǐng)域數(shù)據(jù)應(yīng)用模型都 分配了一個(gè)獨(dú)有的中文名稱,中文名稱和其對(duì)應(yīng)的DSL腳本采用對(duì)象存儲(chǔ)的方式保存在特 定領(lǐng)域模型庫中。
[0085]將特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型存儲(chǔ)至特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型庫中,則之后的數(shù)據(jù) 處理工作便可以直接從特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型庫中調(diào)取數(shù)據(jù)應(yīng)用模型。
[0086] 進(jìn)一步地,參照?qǐng)D5,上述模型運(yùn)行解析單元20包括:
[0087]分隔字符解析子單元200,采用分隔字符制導(dǎo)翻譯方法建立的DSL解析器對(duì)上述數(shù) 據(jù)應(yīng)用模型解析轉(zhuǎn)換成目標(biāo)代碼腳本。
[0088]為了解析上述的DSL腳本,還需要設(shè)計(jì)一個(gè)相應(yīng)的DSL解析器。從上面的具體實(shí)施 例中可以看出,使用結(jié)構(gòu)比較簡單語句,不需要嵌套的上下文環(huán)境;采用分隔字符制導(dǎo)翻譯 方法建立DSL解析器就可以滿足對(duì)上述DSL腳本進(jìn)行解析。如果對(duì)DSL語法結(jié)構(gòu)有更高更復(fù) 雜的需求,可以采用語法制導(dǎo)翻譯的方法建立DSL解析器。在本實(shí)施例中,中文標(biāo)點(diǎn)符號(hào)被 定義為分隔字符。DSL解析器在獲得輸入的DSL腳本后,基于分隔字符將其分解成小塊。例 如,上述示例語句可被分解為"執(zhí)行"、"元模塊201"、"比較"、"元模塊602"、"元模塊603"、 "執(zhí)行"、和"元模塊701"等語義模塊;根據(jù)各語義模塊之間的關(guān)系,DSL解析器建立語義模 型。最后,通過調(diào)取各個(gè)語義模塊的定義,將語義模型透明轉(zhuǎn)換為目標(biāo)代碼腳本。(參照?qǐng)D2) [0089]進(jìn)一步地,參照?qǐng)D6,上述基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用裝置還包括:
[0090]圖表展示單元40,對(duì)運(yùn)行結(jié)果進(jìn)行可視化圖表展示,本實(shí)施例中基于DSL的大數(shù)據(jù) 開發(fā)應(yīng)用裝置也可以包括上述中文語法建立子單元100、模型庫建立子單元101以及分隔字 符解析子單元。
[0091]設(shè)計(jì)開發(fā)一個(gè)基于瀏覽器(B/S)的編輯界面作為特定領(lǐng)域模型的應(yīng)用展示平臺(tái)去 調(diào)用和運(yùn)行特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型。在該平臺(tái)上,設(shè)置一個(gè)語言輸入欄;在語言輸入欄 中,通過輸入特定領(lǐng)域數(shù)據(jù)應(yīng)用模型的中文名稱去調(diào)用并運(yùn)行該模型。通過特定領(lǐng)域數(shù)據(jù) 應(yīng)用模型獨(dú)有的中文名稱,調(diào)取特定領(lǐng)域模型庫中對(duì)應(yīng)的數(shù)據(jù)處理模型的DSL腳本;運(yùn)行該 DSL腳本,類自然語言的DSL解析器將其解析為包含數(shù)據(jù)處理功能元模塊名,特定領(lǐng)域?qū)I(yè) 術(shù)語,以及關(guān)鍵字的語義模型;再通過調(diào)取語義模型中這些模塊的定義生成目標(biāo)代碼腳本。 目標(biāo)代碼腳本可在分布式大數(shù)據(jù)系統(tǒng)中運(yùn)行,并返回運(yùn)行結(jié)果。特定領(lǐng)域模型應(yīng)用展示平 臺(tái)采用強(qiáng)大的可視化引擎,對(duì)運(yùn)行結(jié)果的輸出數(shù)據(jù)進(jìn)行可視化建模,提供多種可視化圖表 展示(例如2D、3D以及交互式)。
[0092]參照下表二,在一具體實(shí)例中,實(shí)驗(yàn)中比較目前三種大數(shù)據(jù)開發(fā)應(yīng)用工具與本發(fā) 明中提出的基于DSL大數(shù)據(jù)開發(fā)應(yīng)用對(duì)多個(gè)數(shù)據(jù)處理功能等功能的的實(shí)驗(yàn)效果:
[0094] 表 2
[0095] 從上表2中可以看出,本發(fā)明實(shí)施例中提供的基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法及裝 置,能夠簡單高效地開發(fā)應(yīng)用大數(shù)據(jù),實(shí)現(xiàn)了大數(shù)據(jù)開發(fā)應(yīng)用工作中所有階段的數(shù)據(jù)處理 功能,開發(fā)出大數(shù)據(jù)在特定領(lǐng)域中蘊(yùn)含的巨大價(jià)值;根據(jù)特定領(lǐng)域數(shù)據(jù)結(jié)構(gòu)類型、處理方法 及應(yīng)用方式的特點(diǎn),從通用的數(shù)據(jù)處理功能元模塊庫中選定合適的功能元模塊,按照類自 然語言的DSL語法結(jié)構(gòu),構(gòu)建該特定領(lǐng)域特有的數(shù)據(jù)應(yīng)用模型并保存在對(duì)應(yīng)的特定領(lǐng)域數(shù) 據(jù)應(yīng)用模型庫中,供數(shù)據(jù)科學(xué)家和領(lǐng)域?qū)<以趹?yīng)用展示平臺(tái)上直接調(diào)用,對(duì)數(shù)據(jù)應(yīng)用模型 的運(yùn)行結(jié)果在應(yīng)用展示平臺(tái)上進(jìn)行多種可視化圖表的展示。
[0096] 以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用 本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān) 的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
【主權(quán)項(xiàng)】
1. 一種基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法,其特征在于,包括步驟: 從數(shù)據(jù)處理功能模塊庫中調(diào)用功能元模塊,采用DSL語法建立特定領(lǐng)域的數(shù)據(jù)應(yīng)用模 型; 運(yùn)行所述數(shù)據(jù)應(yīng)用模型,通過DSL解析器對(duì)所述數(shù)據(jù)應(yīng)用模型解析轉(zhuǎn)換成目標(biāo)代碼腳 本; 在分布式大數(shù)據(jù)系統(tǒng)上運(yùn)行所述目標(biāo)代碼腳本,并返回運(yùn)行結(jié)果。2. 根據(jù)權(quán)利要求1所述的基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法,其特征在于,所述采用DSL語 法建立特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型的步驟包括: 根據(jù)中文語法結(jié)構(gòu),采用短語以及標(biāo)點(diǎn)符號(hào)完成純中文的DSL腳本編輯,建立特定領(lǐng)域 的數(shù)據(jù)應(yīng)用模型。3. 根據(jù)權(quán)利要求2所述的基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法,其特征在于,所述通過DSL解 析器對(duì)所述數(shù)據(jù)應(yīng)用模型解析轉(zhuǎn)換成目標(biāo)代碼腳本的步驟包括: 采用分隔字符制導(dǎo)翻譯方法建立的DSL解析器對(duì)所述數(shù)據(jù)應(yīng)用模型解析轉(zhuǎn)換成目標(biāo)代 碼腳本。4. 根據(jù)權(quán)利要求2所述的基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法,其特征在于,所述建立特定 領(lǐng)域的數(shù)據(jù)應(yīng)用模型的步驟之后還包括: 建立特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型庫,并存儲(chǔ)所述特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型。5. 根據(jù)權(quán)利要求1至4任一項(xiàng)所述的基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用方法,其特征在于,所述 返回運(yùn)行結(jié)果的步驟之后還包括: 對(duì)運(yùn)行結(jié)果進(jìn)行可視化圖表展示。6. -種基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用裝置,其特征在于,包括: 應(yīng)用模型建立單元,從數(shù)據(jù)處理功能模塊庫中調(diào)用功能元模塊,采用DSL語法建立特定 領(lǐng)域的數(shù)據(jù)應(yīng)用模型; 模型運(yùn)行解析單元,運(yùn)行所述數(shù)據(jù)應(yīng)用模型,通過DSL解析器對(duì)所述數(shù)據(jù)應(yīng)用模型解析 轉(zhuǎn)換成目標(biāo)代碼腳本; 腳本運(yùn)行返回單元,在分布式大數(shù)據(jù)系統(tǒng)上運(yùn)行所述目標(biāo)代碼腳本,并返回運(yùn)行結(jié)果。7. 根據(jù)權(quán)利要求6所述的基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用裝置,其特征在于,所述應(yīng)用模型 建立單元包括: 中文語法建立子單元,根據(jù)中文語法結(jié)構(gòu),采用短語以及標(biāo)點(diǎn)符號(hào)完成純中文的DSL腳 本編輯,建立特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型。8. 根據(jù)權(quán)利要求7所述的基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用裝置,其特征在于,所述模型運(yùn)行 解析單元包括: 分隔字符解析子單元,采用分隔字符制導(dǎo)翻譯方法建立的DSL解析器對(duì)所述數(shù)據(jù)應(yīng)用 模型解析轉(zhuǎn)換成目標(biāo)代碼腳本。9. 根據(jù)權(quán)利要求7所述的基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用裝置,其特征在于,所述應(yīng)用模型 建立單元還包括: 模型庫建立子單元,建立特定領(lǐng)域的數(shù)據(jù)應(yīng)用模型庫,并存儲(chǔ)所述特定領(lǐng)域的數(shù)據(jù)應(yīng) 用模型。10. 根據(jù)權(quán)利要求6至9任一項(xiàng)所述的基于DSL的大數(shù)據(jù)開發(fā)應(yīng)用裝置,其特征在于,還 包括: 圖表展示單元,對(duì)運(yùn)行結(jié)果進(jìn)行可視化圖表展示。
【文檔編號(hào)】G06F9/44GK106095398SQ201610309159
【公開日】2016年11月9日
【申請(qǐng)日】2016年5月10日
【發(fā)明人】郭宇翔, 王界兵, 張偉, 董迪馬, 梁猛, 宋泰然, 李 杰
【申請(qǐng)人】深圳前海信息技術(shù)有限公司