新四季網

一種數據處理流程代碼的生成方法

2023-04-27 18:57:46

專利名稱:一種數據處理流程代碼的生成方法
技術領域:
本發明涉及一種數據處理流程代碼的生成方法,尤其涉及一種面向MapReduce計 算模型的數據處理流程代碼生成方法,屬於雲計算的數據集成領域。
背景技術:
數據處理通常可以刻畫為對一個或多個數據集進行多步數據處理操作的流程化 處理過程,這些數據處理操作既包含一些通用的關係形式的操作,如過濾,合併,分組,連 接,計數等,也包含一些領域相關的操作,如語義標註,人臉檢測等,我們將這個流程化的 數據處理過程稱為數據處理流程。常見的數據處理流程應用包括數據倉庫應用中的ETL過 程,商業智能應用中的數據分析挖掘過程,科學計算領域的科學工作流,搜尋引擎領域的大 量分析處理過程等,這些典型的應用場景廣泛出現在大型企業和科學研究領域.
MapReduce編程模型首先由Google的工程師提出,從用戶的角度講,它將計算 過程分為兩個最基本的階段:Map和Reduce,每個階段的輸入都是一系列的鍵值對(key/ value),每個階段的輸出也是一系列的鍵值對,如下所示
Map (kl,vl) — list(k2, v2),接收鍵值對(kl,vl),經過用戶編寫的Map代碼處 理後輸出中間鍵值對(k2,v2),MapReduce系統將自動的根據鍵對所有中間值進行分組歸 並,輸出鍵值對(k2,list (v2)),並將其傳到Reduce方法中。
Reduce :(k2, list(v2)) — list(k3,v3),接收 Map 階段輸出的鍵值對(k2, list (W)),經過用戶編寫的Reduce代碼處理後,將這些值進行合併等操作形成一個更小 的值的集合(一般是每個Reduce調用產生0或者1個輸出值)。
在信息爆炸的今天,隨著數據量的不斷增大,數據處理流程越來越呈現出海量和 並行的特點,數據格式也以非結構化和結構化的形式出現,而且處理數據的底層系統一般 使用集群來搭建,這些對傳統的並行數據處理流程實現方法,如DBMS,網格計算等,提出了 新的挑戰。而使用MapReduce數據並行計算模型極大的簡化了在集群上的海量結構化或者 非結構化數據的並行處理過程,而且開源雲計算平臺Hadoop很好的實現了這一計算模型, 滿足了大多數用戶海量數據處理的需求,並在實際場景中得到了廣泛的應用,很多企業,政 府,科研機構等都開始使用Hadoop進行海量數據的分析處理。
儘管MapReduce計算模型的提出和Hadoop平臺的推出很好的解決了海量數據並 行處理的過程,但也正是由於MapReduce模型的簡單性導致了一下幾方面的問題
1)不直接支持複雜的η步η分支數據處理流程操作,而這在實際數據處理中是非常常見的。
2)缺少同時處理多個數據集的嚴格支持能力,必須通過用戶自己編程實現,這是 一項非常艱難的工作。
3) 一些常用的基本數據操作,如過濾,連接,分組等操作,在每次使用時必須重 復的手工編碼實現。
最終由於這幾個問題的出現,用戶在使用MapReduce的實現數據處理流程的過程中總是手工編寫各種複雜的數據處理流程,糾纏於多數據源的數據分析,重複的在一些黑 盒流程中實現基本的操作,嚴重限制了 MapReduce編程模型的使用,減慢數據分析進度,而 且使數據處理程序的可讀性大大降低,同時也不可能進行一些自動的流程優化。因此迫切 需要一些能夠簡化基於MapReduce數據處理流程開發的方法及工具
很多科研機構或企業都對簡化數據處理流程的MapReduce實現上做了大量的研 究,如Apache 的 Hadoop, FaceBook 的 Hive, Yahoo 的 Pig, Google 的 Sawzall 禾口 FlumeJava 等,Hadoop實現了可以在普通的商用機器集群上並行處理海量數據的MapReduce軟體框 架,Hive提供了基於SQL的簡單查詢語言Hive QL來簡化數據處理流程的操作,同時支持用 戶自定義的Map和Reduce操作。Pig也是基於Hadoop平臺提供了一種類SQL的聲明式編 程語言pigLatin,Sawzall則提供了一種類C語言的編程方式實現MapReduce,FlumeJava 則提供一種通用的接口,但是這些系統和方法普遍存在以下幾個問題
1)沒有統一的數據操作組件模型來支持用戶自定義數據處理操作。
2)對於普通用戶來說使用系統提供的簡化MapReduce的程式語言仍然有困難。
3)使用通用的MapReduce流程引擎,由於不同流程的差異性,會導致不必要的判 斷而帶來性能上的損失
4)系統在MapReduce運行參數設置上對用戶完全透明,這對於不同的流程執行效 率會帶來不穩定的影響。發明內容
針對現有技術中的問題,我們需要一種方法,可以讓普通用戶通過拖拽數據處理 操作組件,連線,以及填寫一些配置參數的形式來可視化的設計這個數據處理流程,然後將 這個用戶設計的這個數據處理流程自動的轉換為相應的MapReduce執行代碼,從而極大簡 化用戶使用MapReduce並行處理海量數據,提高流程的運行效率。
本發明的目的是提出一種數據處理流程代碼的生成方法,這種方法首先將用戶通 過可視化的方式設計的數據處理流程抽取為一個邏輯模型實例,這個邏輯模型實例保存了 流程的數據處理節點信息,節點間的連接信息和流程名,版本等基本信息,然後驗證邏輯模 型實例是否符合要求,如果不符合則提示用戶修改錯誤,如符合則根據模型轉換算法自動 的將該邏輯模型實例轉換為相應的數據處理流程物理模型,這個物理模型實例保存了流程 執行的MapReduce任務拓撲結構,每個任務包含的數據處理節點信息,節點間的連接信息, 流程名,版本等基本信息,最後將物理模型實例根據代碼生成算法轉換為流程的MapReduce 實現代碼。本發明的技術方案可以表示為圖1,具體步驟如下
1.首先用戶使用可視化方式設計數據處理流程,包括提供流程名,版本,數據處理 節點,節點連接等信息,然後檢查這個數據處理流程是不是一個符合要求的有向無環圖的 結構,用戶配置的信息是否符合相應的數據處理節點和連接的要求等,如果不符合提示用 戶修改,如果符合則將流程保存為我們定義的特定數據處理流程邏輯模型。
邏輯模型是從用戶的視角來定義一個有向無環圖,它表示了數據從源端到目的 端的一個處理過程,圖的節點與節點間傳遞的數據統一使用二維關係表模式來表示,這 種模式的邏輯結構就是一張二維關係表,由行和列構成,每一行是一條數據記錄,每條記 錄由多個數據列構成,每列都包含了列名、數據類型、長度、精度、數據模式等屬性,可表其中R為表名,S為列,可以表示為一個多元組S = (Name, Type, Pattern, Precision,...),邏輯模型中,V為節點集合,每個節點可以表示為四元組ν (ν e V), ν = (Id,I,0,L),其中Id用來標識節點唯一性;I表示的是該節點的一個或者多個輸入記錄模 式集;0表示的是一個或者多個有限輸出記錄模式集;L表示了該操作的邏輯語義,它包括 了該節點需要用戶提供的一些邏輯操作參數,如節點實現的組件ID、過濾條件等,按照輸 入輸出數可以把邏輯模型的節點分為三種數據源節點,數據裝載節點和數據轉換節點。數 據源節點(起始節點)用來提供關係型記錄集,只有輸出。數據處理結果裝載節點(結束 節點),用來存儲數據處理結果集,只有輸入,轉換節點表示數據轉換操作,包含輸入記錄集 模式與輸出記錄集模式的屬性映射關係及元組選擇條件。邏輯模型中的邊為有向邊,連接 各節點,表示了各個操作之間的依賴關係和數據的流向,可以用多元組(R(S*),VB,VE)來表 示,VB為起始節點,VE為結束節點,數據流連接將各個操作之間的依賴關係分為三種
a)線性關係表示按線性先後順序執行的操作序列。
b)多分支聚合關係某個操作接收多個操作的處理結果進行處理。
c)多分支並發關係某個操作的處理結果被分為多個分支並發處理。
給定一個用戶可視化設計的數據處理流程Ω,它對應的邏輯模型LG(Q)按照下 面的步驟構建
1)對Ω中每個數據源抽取操作創建一個數據源節點,賦予該數據源節點唯一 ID 號,數據抽取參數S,抽取參數看數據源的類型而定,如資料庫的話需要用戶名,密碼,連 接URL等,文件的話則需要文件路徑等,數據源的輸出記錄模式集為0,操作語義。
2)對Ω中每一個數據轉換操作創建一個轉換節點α,並賦予一個唯一的ID號, 輸入記錄模式集為U1,...,IJ,輸出記錄模式集為0,根據其操作語義,生成每個輸入記錄 模式集模式Ik與輸出記錄模式集模式O的屬性映射關係mapping( α,Ik, 0)和元組選擇條 件等。
3)對Ω中每個數據處理結果裝載操作創建一個數據裝載節點,賦予ID,數據裝載 參數S,不同的數據源需要配置不同的裝置參數,如資料庫需要用戶名,密碼,連接URL等, 以及輸入記錄模式集I等。
4)根據Ω中數據流向在數據處理節點之間添加有向邊,並填充邊對應的二維表 數據模式信息,得到該可視化數據流程的邏輯模型實例。
2.將第一步構造的邏輯模型實例根據模型轉換算法轉換為符合物理模型的數據 處理流程物理模型實例,物理模型實例也是一個有向無環圖的結構,也包含邏輯模型中的 三種節點,連接也和邏輯模型實例類似,但是與邏輯模型實例不同的是,物理模型實例中每 個節點還包括
a)MapReduce運行需要的一些配置參數,配置參數根據配置文件以鍵值對的形式 來指定,每個節點都不一樣,比如這個操作是只有Map操作的Map節點還是既有Map又有 Reduce 的 MapReduce 節點等
b)各個節點進行MapReduce運算需要的map操作代碼模板和reduce操作代碼模 板,以及鍵/值類型代碼模板,物理模型還包括流程公共模板數據連接模板,流程頭部模 板,流程尾部模板,MapReduce任務模板,MapReduce任務依賴關係生成模板,任務運行模 板,流程尾部代碼模板等6
在說明具體轉換步驟前,我們先引入一個概念「本地節點組」,他用來捕獲物理模 型實例中以線性方式執行而不存在分支或者聚合的一系列操作節點,在本地節點組的基礎 上,我們可以來劃分MapReduce任務,MapReduce計算模型允許我們通過合併Map操作節 點的方式來生成以mapper+/reducer/mapper*形式組織的MapReduce任務,從而減少流程 MapReduce任務數,降低磁碟和數據傳遞消耗,提高效率。具體的模型轉換算法執行步驟如 下所示
1)構造一個空的物理模型,它不包含任何節點信息和連接信息,然後填充實現這 個數據處理流程需要的一些流程公共模板所在的文件路徑信息,這些代碼模板包括數據連 接模板,流程頭部模板,流程尾部模板等,最後還要填充從邏輯模型繼承過來的流程名,流 程版本等模型公共信息。
2)對邏輯模型實例LG的所有節點進行有向無環圖的拓撲排序。
3)按拓撲排序順序的結果依次遍歷每個邏輯節點,讀取每個節點的組件ID信息, 操作參數信息S,輸入模式信息I,輸出模式信息0,記錄為Vl = {ID, I,0,S}。
4)根據3)中構造的VI,實例化一個物理節點V2 = {ID,I,0,S,C},其中ID,I,0, S和Vl相同,C則為實現該節點功能的一些代碼模板,包括Map操作代碼模板,Reduce操作 代碼模板等。
5)按照遍歷的先後順序連接物理節點,構造物理模型的邊信息,得到物理模型有 向無環圖結構。
6)按照以上構造的物理模型有向無環圖結構,提取這個物理模型中的本地節點組fn息ο
7)針對每個本地節點組提取包含Reduce操作的節點。以Reduce操作節點為劃分 點,按至少一個map操作連一個reduce操作再連0個或多個map操作的方式(map+/reduce/ map*)對本地節點組進行劃分,構造相應本地節點組的MapReduce任務集。
8)按照本地節點組之間的連接信息和本地節點組內的連接信息生成各個 MapReduce任務之間的依賴關係,最後得到該邏輯模型實例的物理模型實例。
3.將第二步中構造的物理模型實例按照我們設計的代碼生成算法生成數據處理 流程的MapReduce代碼,我們使用Java語言和Hadoop平臺提供的MapReduce接口做樣例 介紹代碼生成算法,首先我們介紹數據處理流程的代碼結構,每個流程都是一個Java類, 數據連接,每個物理節點的Map操作和Reduce操作都作為該類的內部類來實現,對於物理 模型中每個MapReduce任務根據其包含的物理節點,使用Hadoop平臺提供的ChainMapper 和ChainReducer接口組織節點的map操作和reduce操作,並配置好任務的運行參數信息 封裝出一個Hadoop的JobConf實例,每個流程的代碼還包含在一個Java方法run Job,他首 先給每個任務構造一個Hadoop Job實例,然後添加每個任務依賴的MapReduce任務,將所 有任務通過Hadoop提供的JobControl接口提交,最後在iava方法Main中,構造一個數據 處理流程實例對象,並執行這個對象的rimjob方法,如附圖2所示,
代碼生成算法的具體執行步驟如下所示
1)使用Jet代碼生成技術,生成物理模型實例中包含的每個代碼模板的模板解析 類,包括流程頭部模板解析類,數據連接模板解析類,每個節點的輸入輸出鍵類型解析類, 每個節點的map和reduce操作代碼模板解析類等。7
2)根據物理模型實例的流程名等信息和流程頭部模板解析類生成流程類的頭部 代碼。
3)根據本地節點組之間的連接信息和連接模板解析類生成流程連接內部類代碼。
4)按拓撲排序順序依次遍歷物理模型實例PG的每個節點V,根據節點信息生成每 個節點的輸入輸出鍵類型內部類,Map和Reduce操作內部類代碼。
5)聲明runjob方法,並在方法體中遍歷MapReduce任務集的每個任務,相應的生 成任務配置代碼,構造所有的任務配置實例(JobConf)實例。
6)在runjob方法中,對每個JobConf實例構造一個Hadoop Job實例,並添加每個 任務(Job)依賴的其他Job,從而構建數據處理流程的各個MapReduce任務之間的依賴關 系。
7)在runjob方法中將使用Hadoop構造平臺提供的JobControl接口提交所有的 Job,以便調度任務的運行順序。
8)在main方法中按照調度任務的運行順序生成流程執行的入口代碼和流程的尾 部代碼。
本發明的積極效果為
採用本發明的方法,用戶在用可視化的工具設計好一個數據處理流程後,系統將 自動將這個流程轉換為mapreduce執行代碼,並提交到實現了 mapreduce的雲平臺中運 行,大大降低了用戶開發基於分布式集群的海量數據處理流程的難度,加快了數據分析的 進度。此外由於系統使用統一的模型來定義數據處理流程操作,用戶可以將自己開發的 mapreduce操作方便的集成進來,而且又有使用模型驅動和代碼生成技術,可以對數據處理 流程進行參數調優配置,代碼優化和流程邏輯自動優化等,極大提高流程的執行效率。


圖1是數據處理流程技術方案圖2是物理模型和代碼映射圖3是數據處理流程實施實例圖。
具體實施方式
下面結合附圖和實施例對本發明做進一步說明。
假定資料庫中存有一張客戶表和一張訂單表,裡面存有客戶信息和訂單信息,大 概1億的用戶數據量和70億的訂單量,現在要對這張表做一個如下的統計操作,統計訂單 總額度最大的前100個客戶信息和訂單額度信息,同時客戶信息中某些欄位的格式必須按 照修訂後的格式顯示,如生日,收入表示等。客戶表的結構如下所示
customer(
c—custkeydecimal(9,0)not null,
c—namevarchar(25)not null,
c_addressvarchar(40)not null,
c—birthdaydatetime not null,
c—phonechar(15)not null,_incomedecimal(7,2)not null,
c_commentvarchar(117)not null
)
客戶表包括客戶主鍵,姓名,地址,生日,聯繫電話,收入,備註等欄位信息
orders (
o_orderkeydecimal(12,0)not null,
o_custkeydecimal(9,0)not null,
o_orderstatus char(1)not null,
o_totalprice decimal(8,2)not null,
o_orderdatedate not null,
o_orderpriority char(15)not null,
o_clerkchar(15)not null,
o_commentvarchar(79)not null
)
訂單表包括訂單主鍵,客戶ID,訂單狀態,訂單額度,訂單日期,優先級,處理人,備註等欄位信息。
以上這個功能可以使用可視化的數據處理流程設計工具設計如圖3所示的數據 處理流程,具體的操作細節如下
Al 從資料庫中提取訂單信息
A2 從資料庫中提取客戶信息
A3 過濾那些還沒有生效的訂單
A4 將客戶和訂單信息按照客戶ID做連接操作
A5 對連接後的數據按照客戶ID做分組操作
A6 對每個客戶ID的分組計算相應的有效訂單總額
A7 按照額度對客戶信息進行排序操作
A8 提取前100個客戶的信息和總額度信息
A9 將A8提取的數據保存在資料庫中對於以上這個數據處理流程,我們可以按照 如下的方式來生成這個流程的MapReduce實現代碼
1.構造圖3對應的數據處理流程的邏輯模型,邏輯模型定義了數據處理操作的執 行順序和操作語義(指這個數據處理操作實現的功能)。將圖3所示的數據處理流程轉換 為邏輯模型
流程信息流程名,創建時間,創建人,版本號等 節點信息 Al 數據源節點操作參數資料庫連接用戶名,密碼,url,表名等customer (c_custkey,......,c_comment);空資料庫抽取操作
輸出模式輸入模式 操作語義
A2 數據源節點90098]操作參數資料庫連接用戶名,密碼,url,表名等0099]輸出模式orders (o_orderkey,......, o_comment);0100]輸入模式空0101]操作語義資料庫抽取操作0102]A3 轉換節點0103]元組條件訂單狀態為已完成(ojrderstatus = 1)0104]輸入模式orders (o_orderkey,......, o_comment);0105]輸出模式orders (o_orderkey,......, o_comment);0106]操作語義過濾操作0107]映射關係按欄位名一一映射0108]A4:轉換節點
元組條件joinkey = 「c_custkey,o_custkey」
輸入模式orders (ο—orderkey,......,ο—comment);
customer (c—custkey,......,c—comment);
輸 出模式:orders_customer (o_orderkey,......,o_comment,ccustkey,......,c—comment).
操作語義數據連接操作
映射關係按欄位名一一映射
A5 轉換節點
元組條件group = c—custKey,按照客戶ID分組
輸 入模式;orders_customer (o_orderkey,......,o_comment,ccustkey,......,c—comment).
輸 出模式group—orders—customer (ο—orderkey,......,ο—comment,ccustkey,......,c—comment).
操作語義分組操作
映射關係按照欄位名一一映射
A6 轉換節點
元組條件累加ο—totalprice欄位的值
輸 入模式group—orders—customer (ο—orderkey,......,ο—comment,ccustkey,......,c—comment).
輸 出模式!customer—orderprice(ο—totalprice,c—custkey,......,ccomment).
操作語義統計操作
映射關係按照欄位名一一映射
A7:轉換節點
元組條件按照0_t0talpriCe欄位值排序
輸入模 式customer_orderprice (o_totalprice, c_custkey,......, ccomment).
輸出模 式customer_orderprice (o_totalprice, c_custkey,......, ccomment).
操作語義排序操作
映射關係按照欄位名一一映射
A8 轉換節點
元組條件取前100
輸 入模式customer—orderprice (ο—totalprice,c—custkey,......,c—comment).
輸 出模式customer—orderprice (ο—totalprice,c—custkey,......,c—comment).
操作語義取前η條記錄操作
映射關係按照欄位名一一映射
Α9:處理結果裝載節點
操作參數資料庫用戶名,密碼,連接url,裝載sql語句,裝載策略等
輸 入模式!customer—orderprice (ο—totalprice,c—custkey,......,c—comment).
輸出模式空
操作語義資料庫裝載操作
連接信息
每條連接信息包含了起始節點ID,終止節點ID,傳輸模式信息,在圖3所示的數據 處理流程邏輯模型中包含8條連接邊,起點和終點都對應相應的節點ID,傳輸模式信息對 應起始節點的輸出模式信息。
2.根據模型轉換步驟一步一步構造邏輯模型對應的物理模型
1)構造一個節點和連接信息都空的物理模型,這個物理模型包括一些模型公共信 息公共代碼模板
頭部模板文件Header.javajet
連接模板文件 Connection, javajet
尾部模板文件Footer.javajet
MapReduce 任務模板 Joblnfo. javajet
任務依賴關係生成代碼模板JobD^endency. javajet
任務運行代碼模板RunJob. javajet
2)填充從邏輯流程繼承過來的一些公共信息,包括流程名等。
3)對邏輯流程節點按照拓撲排序的順序進行遍歷,生成每個物理節點信息和物理 連接信息,對於圖3的邏輯模型生成的節點信息為
PAl 繼承了邏輯模型中Al節點的操作參數,輸入模式,輸出模式,元組條件等信 息,同時增加MapReduce參數和代碼模板信息,主要包括
節點MapReduce類型Map操作節點
MapReduce實現代碼模板map操作代碼模板mapper, javajet
PA2,PA3 與 PAl 類似
PA4 繼承了邏輯模型中A3節點的信息,同時增加MapReduce參數和代碼模板信11
MapReduce 類型map 禾口 reduce 操作
石馬:mappe. javajet 禾口 reduceer· javajet
PA5,PA6,PA7 與 PA4 類似
PA8,PA9 與 PAl 類似
生成的連接信息和邏輯模型的聯繫信息一樣,只不過把起始節點和末端節點設為 物理節點對應的ID。
4)按照生成了物理節點信息和連接信息提取本地組信息,圖3可以提取出3個本 地組,分別為
組1:PA1,PA3
組 2:PA2
組3 :PA4, PA5, PA6, PA7, PA8, PA9
5)針對每個本地組,以MapReduce類型的物理節點為劃分點按照map+/reduce/ map*模式生成MapReduce任務,針對圖3的三個本地組,可以分解為如下mapreduce任務
組1 一個mapreduce任務ml 由PAl和PA3合併而成
組 2 —個 mapreduce 任務 m2 由 PA2 構成
組 3 三個 MapReduce 任務
m3 :PA4
m4 :PA5, PA6
m5 :PA7, PA8, PA9
6)根據連接信息生成各個MapReduce任務之間的依賴關係
m3 依賴於 ml,m2
m4 依賴於 m3
m5 依賴於 m4
3.根據代碼生成步驟一步一步構造物理模型對應MapReduce代碼
1)根據Header, javajet和流程名生成流程頭部代碼,如下所示
Public class、流程名{
2)根據連接信息和connection, javajet生成連接內部類代碼,如下所示
Public static class 連接名 1 {
String c_custkey ;
//其他欄位的代碼
......
}
Public static class 3 ^ 2 {
String c_custkey ;
//其他欄位的代碼
......
}
3)按拓撲排序的順序再根據每個節點包含的代碼模板生成鍵類型代碼,map操作12代碼,




value){

reduce操作代碼等,如下所示 Public static class Keyl{Il欄位代碼 }Public static class PAlMapClass{Public void map(Keyl key, Connl value){ //map操作代碼 Return(key2,value2);Public static class MapOutKeyTypel{Il欄位代碼 }Public static class MapOutValueType1{ Il欄位代碼Public static class PA2ReduceClass{ Public void reduce(MapOutKeyType1//reduce操作代碼 Return(key3,value3);key, List ......其他節點與此類似生成代碼4)根據物理模型中生成的每個MapReduce任務信息,依次生成每個MapReduce任 務的配置代碼,並按照配置生成MapReduce任務,包括map和reduce的組合操作,輸入,輸 出信息等,代碼如下所示
Job getMl Job {
JobConf conf = new JobConfO ;
H配置job的輸入輸出鍵值類型,map和reduce操作類等信息
......
Return new Job(conf);
}
H其他MapReduce任務的代碼與此類似
......
5)使用JobControl接口添加MapReduce任務之間的依賴關係,根據 JobDependency. javajet代碼模板和任務依賴關係生成如下代碼
Void run Job {
JobControl jc = new JobControl (〃 test");
Job jl = getMl Job ;
H其他任務類似
......
J3. addDenpendcyJob(jl, j2);
J4. addDenpendcyJob(j3);
J5. addDenpendcyJob(j5);
jc. run ;
}
6)根據Runjob. javajet和流程信息生成main函數流程執行入口代碼
public static void main(String[]args){
流程名 testlnstance = new 流程名;
testlnstance. runjob ;
}
7)根據footer, javajet生成尾部代碼
「}」
權利要求
1.一種數據處理流程代碼的生成方法,其步驟為1)將可視化的數據處理流程Ω抽取為一邏輯模型實例;所述數據處理流程為一有向 無環圖結構流程,其包括流程名、版本、數據處理節點、節點連接信息;2)將邏輯模型實例轉換為數據處理流程物理模型實例,所述物理模型實例為一有向無 環圖結構;3)根據數據處理流程物理模型實例生成數據處理流程的MapReduce代碼。
2.如權利要求1所述的方法,其特徵在於所述有向無環圖中,節點與節點間傳遞的數 據統一使用二維關係表模式來表示。
3.如權利要求2所述的方法,其特徵在於所述二維關係表由行和列構成,每一行是一 條數據記錄,每條記錄由多個數據列構成,每列所包含的屬性包括列名、數據類型、長度、 精度、數據模式屬性信息;每個節點所包含的屬性包括節點標識、節點輸入記錄模式集、 節點輸出記錄模式集、節點操作的邏輯語義。
4.如權利要求3所述的方法,其特徵在於所述步驟1)包括如下步驟1)對Ω中每個數據源抽取操作創建一個數據源節點,並賦予該數據源節點一節點標 識ID、數據抽取參數、數據源的輸出記錄模式集和操作語義;2)對Ω中每一個數據轉換操作創建一個轉換節點α,並賦予該轉換節點一ID號、輸 入記錄模式集U1, ...,IJ、輸出記錄模式集0,根據數據轉換操作語義生成每個輸入記錄 模式集模式Ik與輸出記錄模式集0的屬性映射關係mapping( α,Ik, 0)和元組選擇條件;3)對Ω中每個數據處理結果裝載操作創建一個數據裝載節點,並賦予該數據裝載節 點一 ID號、數據裝載參數、輸入記錄模式集;4)根據Ω中數據流向在數據處理節點之間添加有向邊,並填充邊對應的二維表數據 模式信息,得到該可視化數據流程Ω的邏輯模型實例。
5.如權利要求4所述的方法,其特徵在於所述邏輯模型實例的節點包括數據源節點、 數據裝載節點、數據轉換節點,所述邏輯模型實例的邊為有向邊,連接各節點,表示各個操 作之間的依賴關係和數據流向;所述依賴關係包括線性關係、多分支聚合關係、多分支並 發關係。
6.如權利要求1或5所述的方法,其特徵在於所述物理模型實例的節點包括數據源 節點、數據裝載節點、數據轉換節點,各節點通過有向邊連接,且各節點的MapReduce運行 配置參數根據配置文件以鍵值對的形式來指定;所述物理模型實例包括流程公共模板。
7.如權利要求6所述的方法,其特徵在於所述物理模型實例中的各個節點還包括進行 MapReduce運算需要的map操作代碼模板、reduce操作代碼模板、鍵/值類型代碼模板;所 述流程公共模板包括數據連接模板、流程頭部模板、流程尾部模板、MapReduce任務模板、 MapReduce任務依賴關係生成模板、任務運行模板、流程尾部代碼模板。
8.如權利要求6所述的方法,其特徵在於將邏輯模型實例轉換為數據處理流程物理模 型實例的方法為1)構造一個空的物理模型,然後填充實現該數據處理流程所需流程公共模板所在的文 件路徑信息以及從邏輯模型實例繼承過來模型公共信息;2)對邏輯模型實例的所有節點進行有向無環圖的拓撲排序;3)按拓撲排序順序的結果依次遍歷每個邏輯節點,讀取每個節點的組件ID信息,操作參數信息S,輸入模式信息I,輸出模式信息0,記錄為該節點的四元組Vl = {ID, 1,0, S};4)根據構造的VI,實例化一個物理節點V2= {ID, I,0,S,C},C為實現該節點功能的 代碼模板,包括Map操作實現代碼模板,Reduce操作實現代碼模板;5)按照遍歷的先後順序連接物理節點,構造物理模型的邊信息,得到物理模型有向無 環圖結構;6)提取幻所得物理模型中的本地節點組信息;所述本地節點組為用來捕獲物理模型 實例中以線性方式執行而不存在分支或者聚合的一系列操作節點;7)針對每個本地節點組提取包含Reduce操作的節點,以Reduce操作節點為劃分點,按 至少一個map操作連一個reduce操作再連0個或多個map操作的方式對本地節點組進行 劃分,構造相應本地節點組的MapReduce任務集;8)按照本地節點組之間的連接信息和本地節點組內的連接信息生成各個MapReduce 任務之間的依賴關係,最後得到該邏輯模型實例的物理模型實例。
9.如權利要求8所述的方法,其特徵在於將數據處理流程物理模型實例生成數據處理 流程的MapReduce代碼的方法為1)使用Jet代碼生成方法,生成物理模型實例中包含的每個代碼模板的模板解析類, 包括流程頭部模板解析類、數據連接模板解析類、每個節點的輸入輸出鍵類型解析類、每個 節點的map和reduce操作代碼模板解析類;2)根據物理模型實例的模型公共信息和流程頭部模板解析類生成流程類的頭部代碼;3)根據本地節點組之間的連接信息和連接模板解析類生成流程連接內部類代碼;4)按所述拓撲排序順序依次遍歷物理模型實例的每個節點四元組信息V,根據節點信 息V生成每個節點的輸入輸出鍵類型內部類、Map和Reduce操作內部類代碼;5)遍歷MapReduce任務集的每個任務,並將每一任務生成一任務配置代碼,構造所有 任務的任務配置實例JobConf ;6)對每個JobConf構造成一個HadoopJob實例,並添加每個任務依賴的其他任務,構 建數據處理流程的各個MapReduce任務之間的依賴關係;7)利用Hadoop構造平臺提供的JobControl接口提交所有的任務,以便調度任務的運 行順序;8)按照調度任務的運行順序生成數據處理流程執行的入口代碼和流程的尾部代碼。
全文摘要
本發明涉及一種數據處理流程代碼的生成方法,屬於雲計算的數據集成領域。本方法為1)將可視化的數據處理流程Ω抽取為一邏輯模型實例;所述數據處理流程為一有向無環圖結構流程,其包括流程名、版本、數據處理節點、節點連接信息;2)將邏輯模型實例轉換為數據處理流程物理模型實例,所述物理模型實例為一有向無環圖結構;3)根據數據處理流程物理模型實例生成數據處理流程的MapReduce代碼。本發明降低了用戶開發難度、加快了數據分析的進度;此外通過本發明,用戶可以對數據處理流程進行參數調優配置,代碼優化和流程邏輯自動優化等,極大提高流程的執行效率。
文檔編號G06F9/44GK102033748SQ20101057893
公開日2011年4月27日 申請日期2010年12月3日 優先權日2010年12月3日
發明者劉傑, 葉丹, 徐罡, 易小華, 虞海江 申請人:中國科學院軟體研究所

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀