欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種由轉(zhuǎn)換原語生成Spark代碼的方法與流程

文檔序號(hào):12664374閱讀:549來源:國(guó)知局
一種由轉(zhuǎn)換原語生成Spark代碼的方法與流程

本發(fā)明涉及一種由轉(zhuǎn)換原語生成Spark代碼的方法。



背景技術(shù):

數(shù)據(jù)轉(zhuǎn)換是對(duì)于異構(gòu)數(shù)據(jù)的常用處理方法。隨著企業(yè)、組織間的緊密合作以及兼并,異構(gòu)的數(shù)據(jù)信息資源廣泛存在著,嚴(yán)重影響了部門間的信息交流。而數(shù)據(jù)轉(zhuǎn)換的目標(biāo)就是將異構(gòu)的數(shù)據(jù)信息進(jìn)行轉(zhuǎn)換,并消除數(shù)據(jù)中存在的各種錯(cuò)誤,優(yōu)化數(shù)據(jù)模型,得到理想的數(shù)據(jù)模型。

Spark是現(xiàn)在常用的一種大數(shù)據(jù)平臺(tái),隨著信息社會(huì)的高速發(fā)展,人們每天無論是生活還是工作都會(huì)產(chǎn)生并且接觸到爆炸增長(zhǎng)的信息量,從而使得工業(yè)界要處理的信息越來越多,也越來越復(fù)雜。傳統(tǒng)的數(shù)據(jù)轉(zhuǎn)換方法已經(jīng)無法快捷高效的處理大數(shù)據(jù)的轉(zhuǎn)換,因此演化出了如Spark之類的大數(shù)據(jù)平臺(tái)。但是Spark平臺(tái)在高效處理大數(shù)據(jù)的同時(shí),具有一定的平臺(tái)復(fù)雜性,學(xué)習(xí)成本較高,對(duì)于剛剛接觸該平臺(tái)的用戶并不友好。

Xtext是基于eclipse的一個(gè)插件工具,利用該工具我們可以自己定義一種基于文本的領(lǐng)域特定語言,然后創(chuàng)建出自定義程序語言。這里我們通過該工具實(shí)現(xiàn)了轉(zhuǎn)換原語的設(shè)計(jì),并通過它產(chǎn)生Spark代碼,從而降低基于Spark平臺(tái)的大數(shù)據(jù)轉(zhuǎn)換實(shí)現(xiàn)成本,解決在大數(shù)據(jù)平臺(tái)進(jìn)行數(shù)據(jù)轉(zhuǎn)換復(fù)雜性較高這一問題。



技術(shù)實(shí)現(xiàn)要素:

發(fā)明目的:鑒于上述問題,本發(fā)明旨在提供一個(gè)自定義轉(zhuǎn)換原語生成Spark代碼的方法。

技術(shù)方案:

一種由轉(zhuǎn)換原語生成Spark代碼的方法,包括步驟:

步驟10:設(shè)計(jì)表示數(shù)據(jù)模型變換的轉(zhuǎn)換原語文法;

步驟11:輸入數(shù)據(jù)變換的原語文件;原語文件是根據(jù)步驟10設(shè)計(jì)的轉(zhuǎn)換原語文法設(shè)計(jì)的,包含輸入數(shù)據(jù)模型,輸出數(shù)據(jù)模型和轉(zhuǎn)換規(guī)則的信息;

步驟12:利用Xtext對(duì)步驟11設(shè)計(jì)的原語文件進(jìn)行語法分析,并得到語法分析樹;

步驟13:利用Xtend根據(jù)步驟12得到的語法分析樹對(duì)原語文件進(jìn)行語義轉(zhuǎn)換,生成對(duì)應(yīng)的Spark代碼。

所述步驟10的設(shè)計(jì)過程包括:

步驟20:規(guī)定轉(zhuǎn)換控制層原語ExecuteTransformation用來控制整個(gè)模型轉(zhuǎn)換的執(zhí)行,調(diào)度ExecuteRule原語;

步驟21:規(guī)定轉(zhuǎn)換控制層原語ExecuteRule用來控制一條規(guī)則的執(zhí)行,調(diào)度執(zhí)行層原語;

步驟22:規(guī)定執(zhí)行層原語MatchPattern根據(jù)輸入模式在模型中進(jìn)行匹配,得到需轉(zhuǎn)換的輸入模型片段;

步驟23:規(guī)定執(zhí)行層原語MatchObject根據(jù)某些指定條件,去查找滿足條件的匹配對(duì)象;

步驟24:規(guī)定執(zhí)行層原語CreateObject來創(chuàng)建模型對(duì)象元素;

步驟25:規(guī)定執(zhí)行層原語CreateReference來創(chuàng)建模型關(guān)系元素;

步驟26:規(guī)定表達(dá)式計(jì)算曾原語EvaluateExpression用于進(jìn)行復(fù)雜表達(dá)式計(jì)算。

所述步驟11中設(shè)計(jì)原語文件的過程包括:

步驟30:打開eclipse創(chuàng)建原語xml文件;

步驟31:右鍵點(diǎn)擊添加ExecuteTransformation節(jié)點(diǎn);

步驟32:右鍵點(diǎn)擊ExecuteTransformation節(jié)點(diǎn)添加Domain節(jié)點(diǎn),并設(shè)置屬性為input_type;

步驟33:右鍵點(diǎn)擊Domain節(jié)點(diǎn),添加兩個(gè)inputFile節(jié)點(diǎn),存放要進(jìn)行轉(zhuǎn)換的輸入文件信息;

步驟34:右鍵點(diǎn)擊ExecuteTransformation節(jié)點(diǎn)添加Domain節(jié)點(diǎn),并設(shè)置屬性為output_type;

步驟35:右鍵點(diǎn)擊Domain節(jié)點(diǎn),添加一個(gè)outputFile節(jié)點(diǎn),存放轉(zhuǎn)換后的輸出文件信息;

步驟36:右鍵點(diǎn)擊ExecuteTransformation節(jié)點(diǎn)添加ExcuteRule節(jié)點(diǎn);

步驟37:右鍵點(diǎn)擊ExecuteRule節(jié)點(diǎn),添加兩個(gè)MatchType和一個(gè)joinKey節(jié)點(diǎn),在該兩個(gè)節(jié)點(diǎn)里添加具體的數(shù)據(jù)轉(zhuǎn)換操作的規(guī)則設(shè)計(jì);結(jié)束本次原語文件的設(shè)計(jì)。

所述步驟12的過程包括:

步驟40:根據(jù)Xtext基本語法,匹配原語文件的書寫格式;

步驟41:利用正則表達(dá)式描述來匹配代碼的基本語句;

步驟42:設(shè)計(jì)ExecuteTransformation語句格式,在ExecuteTransformation的語句加入若干條Domain_input,Domain_output,ExecuteRule語句;

步驟43:設(shè)計(jì)Domain_input語句格式,在Domain_input的語句中插入多條InputFile語句,在InputFile語句中存放要轉(zhuǎn)換文件的配置信息;

步驟44:設(shè)計(jì)Domain_output語句格式,在Domain_output的語句中插入多條OutputData語句,在OutputData語句中存放轉(zhuǎn)換后文件的配置信息;

步驟45:設(shè)計(jì)ExecuteRule語句格式,在ExecuteRule的語句中插入多條轉(zhuǎn)換規(guī)則語句;

步驟46:設(shè)計(jì)具體轉(zhuǎn)換規(guī)則的語句格式。

所述步驟13的實(shí)現(xiàn)過程:

步驟50:將原語ExucuteTranformation轉(zhuǎn)化為Spark程序的執(zhí)行入口,且調(diào)用輸入模型和輸出模型的靜態(tài)方法實(shí)現(xiàn)輸入輸出;

步驟51:將原語Domain_input和Domain_output轉(zhuǎn)化為對(duì)應(yīng)輸入和輸出數(shù)據(jù)模型的類文件;

步驟52:原語ExucuteRule對(duì)應(yīng)spark平臺(tái)上對(duì)RDD的操作集合,組成ExucuteRule的原語分別對(duì)應(yīng)spark平臺(tái)上的具體操作;

步驟53:將原語MatchType中的name屬性對(duì)應(yīng)Spark中RDD的創(chuàng)建;

步驟54:將原語Filter對(duì)MatchType對(duì)應(yīng)的RDD進(jìn)行原語Filter定義的過濾操作,調(diào)用RDD的Filter函數(shù);

步驟55:將原語Statistics對(duì)MatchType對(duì)應(yīng)的RDD進(jìn)行原語Statistics定義的統(tǒng)計(jì)操作;

步驟56:將原語JoinKey對(duì)spark平臺(tái)上的兩個(gè)RDD的連接操作,提取關(guān)鍵值,分別生成一個(gè)PairRDDFunctions,再進(jìn)行連接。

所述步驟13中執(zhí)行Spark代碼轉(zhuǎn)換過程如下:

步驟60:在Xtext生成的原語編輯器中,src文件夾加入設(shè)計(jì)好的原語文件;

步驟61:運(yùn)行Xtend生成的轉(zhuǎn)換規(guī)則;

步驟62:在src-gen文件夾中會(huì)看到具有數(shù)據(jù)轉(zhuǎn)換功能的scala文件;完成Spark代碼的生成。

有益效果:本發(fā)明結(jié)合模型驅(qū)動(dòng)工程M2M技術(shù),實(shí)現(xiàn)轉(zhuǎn)換原語到Spark代碼的轉(zhuǎn)換,從而降低數(shù)據(jù)平臺(tái)開發(fā)人員使用Spark平臺(tái)的復(fù)雜性,簡(jiǎn)化數(shù)據(jù)轉(zhuǎn)換過程,降低基于Spark平臺(tái)的大數(shù)據(jù)轉(zhuǎn)換實(shí)現(xiàn)成本,解決在大數(shù)據(jù)平臺(tái)進(jìn)行數(shù)據(jù)轉(zhuǎn)換復(fù)雜性較高這一問題。

附圖說明

圖1為轉(zhuǎn)換原語轉(zhuǎn)化為Spark代碼示意圖。

圖2為轉(zhuǎn)換原語語法結(jié)構(gòu)示意圖。

圖3為原語文件示意圖。

圖4為原語文件解析過程流程圖。

圖5為正則表達(dá)式匹配詞法的設(shè)計(jì)方法示意圖。

圖6為ExecuteRule語句設(shè)計(jì)圖。

圖7為轉(zhuǎn)換過程執(zhí)行框架示意圖。

具體實(shí)施方式

下面結(jié)合附圖對(duì)本發(fā)明作更進(jìn)一步的說明。

圖1所示為本方法實(shí)施的整體結(jié)構(gòu)和工作原理。本方法的目的是將描述數(shù)據(jù)轉(zhuǎn)換的轉(zhuǎn)換原語轉(zhuǎn)化為具有相同數(shù)據(jù)轉(zhuǎn)換功能的Spark代碼,該方法可以結(jié)合模型驅(qū)動(dòng)工程M2M技術(shù)進(jìn)行實(shí)現(xiàn),從而降低數(shù)據(jù)平臺(tái)開發(fā)人員使用Spark平臺(tái)的復(fù)雜性,簡(jiǎn)化數(shù)據(jù)轉(zhuǎn)換過程。如圖1所示,本發(fā)明方法包括步驟:

步驟10:設(shè)計(jì)一種可以表示數(shù)據(jù)模型變換的轉(zhuǎn)換原語文法;

步驟11:根據(jù)步驟10設(shè)計(jì)的轉(zhuǎn)換原語文法設(shè)計(jì)數(shù)據(jù)變換的原語文件,作為代碼生成器的輸入文件;原語文件包含輸入數(shù)據(jù)模型,輸出數(shù)據(jù)模型和轉(zhuǎn)換規(guī)則的信息;

步驟12:利用Xtext對(duì)步驟11設(shè)計(jì)的原語文件的語法的進(jìn)行分析,檢查輸入的原語文件是否符合步驟10設(shè)計(jì)的轉(zhuǎn)換原語文法規(guī)則;同時(shí),Xtext工具抽象出一個(gè)語法分析樹用于Xtend進(jìn)行語義轉(zhuǎn)換;

步驟13:利用Xtend根據(jù)步驟12得到的語法分析樹對(duì)原語文件進(jìn)行語義轉(zhuǎn)換,生成對(duì)應(yīng)的Spark代碼,實(shí)現(xiàn)代碼生成器的轉(zhuǎn)換規(guī)則,建立轉(zhuǎn)換原語與Spark代碼之間的映射;

步驟14:將步驟11得到的原語文件輸入代碼生成器,執(zhí)行轉(zhuǎn)換Spark代碼過程;

步驟15:得到輸入、輸出數(shù)據(jù)類和轉(zhuǎn)換規(guī)則的Spark代碼。

其中步驟10中,設(shè)計(jì)一種可以表示數(shù)據(jù)模型變換的轉(zhuǎn)換原語語法,設(shè)計(jì)而成的總體關(guān)系如圖2所示。設(shè)計(jì)過程包括:

步驟20:規(guī)定轉(zhuǎn)換控制層原語ExecuteTransformation用來控制整個(gè)模型轉(zhuǎn)換的執(zhí)行,調(diào)度ExecuteRule原語;

步驟21:規(guī)定轉(zhuǎn)換控制層原語ExecuteRule用來控制一條規(guī)則的執(zhí)行,調(diào)度執(zhí)行層原語;

步驟22:規(guī)定執(zhí)行層原語MatchPattern根據(jù)輸入模式在模型中進(jìn)行匹配,得到需轉(zhuǎn)換的輸入模型片段;

步驟23:規(guī)定執(zhí)行層原語MatchObject根據(jù)某些指定條件,去查找滿足條件的匹配對(duì)象;

步驟24:規(guī)定執(zhí)行層原語CreateObject來創(chuàng)建模型對(duì)象元素;

步驟25:規(guī)定執(zhí)行層原語CreateReference來創(chuàng)建模型關(guān)系元素;

步驟26:規(guī)定表達(dá)式計(jì)算曾原語EvaluateExpression用于進(jìn)行復(fù)雜表達(dá)式計(jì)算。

其中步驟11所輸入的原語文件如圖3所示,設(shè)計(jì)一個(gè)原語文件的過程包括:

步驟30:打開eclipse創(chuàng)建原語xml文件;

步驟31:右鍵點(diǎn)擊添加ExecuteTransformation節(jié)點(diǎn);

步驟32:右鍵點(diǎn)擊ExecuteTransformation節(jié)點(diǎn)添加Domain節(jié)點(diǎn),并設(shè)置屬性為input_type;

步驟33:右鍵點(diǎn)擊Domain節(jié)點(diǎn),添加兩個(gè)inputFile節(jié)點(diǎn),存放要進(jìn)行轉(zhuǎn)換的輸入文件信息;

步驟34:右鍵點(diǎn)擊ExecuteTransformation節(jié)點(diǎn)添加Domain節(jié)點(diǎn),并設(shè)置屬性為output_type;

步驟35:右鍵點(diǎn)擊Domain節(jié)點(diǎn),添加一個(gè)outputFile節(jié)點(diǎn),存放轉(zhuǎn)換后的輸出文件信息;

步驟36:右鍵點(diǎn)擊ExecuteTransformation節(jié)點(diǎn)添加ExcuteRule節(jié)點(diǎn);

步驟37:右鍵點(diǎn)擊ExecuteRule節(jié)點(diǎn),添加兩個(gè)MatchType和一個(gè)joinKey節(jié)點(diǎn)可以在這幾個(gè)節(jié)點(diǎn)里添加具體的數(shù)據(jù)轉(zhuǎn)換操作的規(guī)則設(shè)計(jì);

步驟38:結(jié)束本次原語文件的設(shè)計(jì)。

圖4表示對(duì)原語文件的語法分析和語義轉(zhuǎn)換過程,包括:

步驟40:了解Xtext基本語法,匹配原語文件的書寫格式;

步驟41:利用正則表達(dá)式描述ID,INT,STRING,COMMENT等來匹配代碼的基本語句,設(shè)計(jì)方法如圖5;

步驟42:設(shè)計(jì)ExecuteTransformation語句格式,ExecuteTransformation的語句可以加入若干條Domain_input,Domain_output,ExecuteRule語句;設(shè)計(jì)如圖6;

步驟43:設(shè)計(jì)Domain_input語句格式,在Domain_input的語句中可以插入多條InputFile語句,在InputFile語句中可以存放一些要轉(zhuǎn)換文件的配置信息;

步驟44:設(shè)計(jì)Domain_output語句格式,在Domain_output的語句中可以插入多條OutputData語句,在OutputData語句中可以存放一些轉(zhuǎn)換后文件的配置信息;

步驟45:設(shè)計(jì)ExecuteRule語句格式,在ExecuteRule的語句中可以插入多條轉(zhuǎn)換規(guī)則語句;

步驟46:設(shè)計(jì)具體轉(zhuǎn)換規(guī)則的語句格式,例如filter操作,Join操作等;

步驟47:完成Xtext實(shí)現(xiàn)代碼生成器的文法構(gòu)造。

其中步驟13中,利用Xtend實(shí)現(xiàn)代碼生成器的轉(zhuǎn)換規(guī)則,實(shí)現(xiàn)過程包括:

步驟50:將原語ExucuteTranformation轉(zhuǎn)化為Spark程序的執(zhí)行入口,且調(diào)用輸入模型和輸出模型的靜態(tài)方法實(shí)現(xiàn)輸入輸出;

步驟51:將原語Domain_input和Domain_output轉(zhuǎn)化為對(duì)應(yīng)輸入和輸出數(shù)據(jù)模型的類文件;

步驟52:原語ExucuteRule對(duì)應(yīng)spark平臺(tái)上對(duì)RDD的操作集合,組成ExucuteRule的原語分別對(duì)應(yīng)spark平臺(tái)上的具體操作;

步驟53:將原語MatchType中的name屬性對(duì)應(yīng)Spark中RDD的創(chuàng)建;

步驟54:將原語Filter對(duì)MatchType對(duì)應(yīng)的RDD進(jìn)行原語Filter定義的過濾操作,調(diào)用RDD的Filter函數(shù);

步驟55:將原語Statistics對(duì)MatchType對(duì)應(yīng)的RDD進(jìn)行原語Statistics定義的統(tǒng)計(jì)操作;

步驟56:將原語JoinKey對(duì)spark平臺(tái)上的兩個(gè)RDD的連接操作,需要提取關(guān)鍵值,分別生成一個(gè)PairRDDFunctions,再進(jìn)行連接;

步驟57:完成Xtend實(shí)現(xiàn)代碼生成器的轉(zhuǎn)換規(guī)則。

其中步驟14和15中,其數(shù)據(jù)的轉(zhuǎn)換框架如圖7,具體操作包括:

步驟60:在Xtext生成的原語編輯器中,src文件夾加入設(shè)計(jì)好的原語文件;

步驟61:運(yùn)行Xtend生成的轉(zhuǎn)換規(guī)則;

步驟62:在src-gen文件夾中會(huì)看到具有數(shù)據(jù)轉(zhuǎn)換功能的scala文件;

步驟63:完成Spark代碼的生成。

以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出:對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
巫山县| 渭南市| 虎林市| 东明县| 社旗县| 德惠市| 三穗县| 松江区| 会东县| 汶川县| 江北区| 秦皇岛市| 博野县| 大竹县| 长阳| 济南市| 家居| 阿鲁科尔沁旗| 定日县| 富民县| 白山市| 铜鼓县| 辽宁省| 乐昌市| 松江区| 繁峙县| 安国市| 城口县| 左云县| 汝阳县| 昌邑市| 赞皇县| 繁昌县| 涪陵区| 攀枝花市| 格尔木市| 定结县| 温州市| 新竹市| 大足县| 贵州省|