從物理流生成邏輯表示的制作方法
【專利說明】
【背景技術】
[0001]存在用于處理分析流的許多執(zhí)行引擎。這些引擎可僅接受以特定編程語言(例如,PigLatiη、結構化查詢語言(SQL))寫的、或使用特定流設計工具(例如,Pentaho數據整合(PDI)平臺)設計的輸入流。此外,即使支持相同編程語言或流設計工具的數據分析引擎也可能提供分析操作等的不同實現方式,且因此針對輸入流可能具有引擎專用需求。在今天的異構分析環(huán)境中,由于這些限制,可能很難對分析流進行管理,尤其是在分析流是包括針對不同引擎的多個子流的混合流時更難。
【附圖說明】
[0002]下面的詳細描述涉及附圖,其中:
[0003]圖1示出根據示例的生成邏輯表示的方法。
[0004]圖2示出根據示例的用于生成邏輯表示的處理系統的概覽。
[0005]圖3示出根據示例的用于生成邏輯表示的字典。
[0006]圖4示出根據示例的用于生成邏輯表示的字典的圖解。
[0007]圖5示出根據示例的邏輯運算符的字典條目。
[0008]圖6示出根據示例的更新字典的方法。
[0009]圖7示出根據示例的生成邏輯表示的計算系統。
[0010]圖8示出根據示例的用于生成邏輯表示的計算機可讀介質。
【具體實施方式】
[0011]如本文所描述的,可從一個或多個物理分析流生成邏輯分析流(本文稱為“邏輯表示”)。物理流包括諸如實現類型、資源、存儲路徑等的實現細節(jié),且專用于一種執(zhí)行引擎。物理流可以用特定的編程語言寫成,或者可以用特定的流設計工具設計。物理流還可以是混合流,其包括針對不同執(zhí)行引擎的多個子流。比較而言,生成的邏輯流可包括用邏輯語言寫的邏輯運算符,且可以是引擎不可知的,意味著其不是設計用于在任何專用執(zhí)行引擎上運行。
[0012]存在生成物理流的引擎不可知的邏輯表示的許多優(yōu)勢。例如,在混合流的情況下,如果將流以一個表示寫成單個流,則可更容易地理解流并對流進行管理。在采用邏輯表示時混合流可被優(yōu)化,且可分解成更適于在給定執(zhí)行環(huán)境(其可包括多個異構引擎)中執(zhí)行的不同子流。即使對于非混合流,生成物理流的邏輯表示也可提供流的有用的抽象,且可使流能夠轉換成另一種物理形式,以供在與最初專用的執(zhí)行引擎不同的執(zhí)行引擎上執(zhí)行。
[0013]根據示例,實現本文描述的原理的技術可包括將與至少一個執(zhí)行引擎關聯的第一物理流解析成多個元素。第一物理流可以是與多個異構執(zhí)行引擎關聯的混合流??赏ㄟ^將多個元素轉換成用邏輯語言表示的邏輯元素,使用字典生成物理流的邏輯表示。字典可包括邏輯語言和與至少一個執(zhí)行引擎關聯的編程語言之間的映射。隨后,可使用字典從邏輯表示生成第二物理流。下面結合附圖描述附加示例、優(yōu)勢、特征和修改等。
[0014]圖1示出根據示例的生成邏輯表示的方法。方法100可由計算設備、系統、或計算機實施,例如由處理系統200、計算系統700、或計算機800實施。實現方法100的計算機可讀指令可存儲在計算機可讀存儲介質上。存儲在介質上的這些指令本文可稱為“模塊”,且可由計算機執(zhí)行。
[0015]這里將結合圖2的示例處理系統200描述方法100。系統200可包括一個或多個計算機,和/或可由一個或多個計算機實現。例如,計算機可以是服務器計算機、工作站計算機、臺式計算機、便攜式電腦或移動設備,等等,且可以是分布式系統的一部分。計算機可包括一個或多個控制器以及一個或多個機器可讀存儲介質。
[0016]控制器可包括實現機器可讀指令的處理器和存儲器。處理器可包括至少一個中央處理單元(CPU)、至少一個基于半導體的微處理器、至少一個數字信號處理器(DSP)(例如,數字圖像處理單元)、適用于獲取并執(zhí)行存儲器中存儲的指令的其他硬件設備或處理元件、或其結合。處理器可包括一個芯片上的單個或多個核、多個芯片上的多個核、多個設備上的多個核、或其結合。處理器可從存儲器提取、解碼、并執(zhí)行指令,以實施各種功能。除獲取并執(zhí)行指令之外或者作為獲取并執(zhí)行指令的替代,處理器可包括:包括實施各種任務或功能的多個電子部件的至少一個集成電路(1C)、其他控制邏輯、其他電子電路、或其結合。
[0017]控制器可包括存儲器,例如,機器可讀存儲介質。機器可讀存儲介質可以是任意電的、磁的、光的、或包含或存儲可執(zhí)行指令的其他物理存儲設備。因此,機器可讀存儲介質可包括例如:各種隨機存取存儲器(RAM)、只讀存儲器(R0M)、閃存、及其結合。例如,機器可讀介質可包括非易失性隨機存取存儲器(NVRAM)、電可擦除可編程只讀存儲器(EEPR0M)、存儲驅動、NAND閃存,等等。此外,機器可讀存儲介質可以是計算機可讀的且非暫時性的。此外,系統200可包括獨立于一個或多個控制器的一個或多個機器可讀存儲介質。
[0018]方法100可始于110,在110,與至少一個執(zhí)行引擎關聯的第一物理流210可解析成多個元素。物理流可包括諸如實現類型、資源、存儲路徑等的實現細節(jié),且專用于一種執(zhí)行引擎。如本文所用的,物理流可以用特定編程語言(例如,SQL、PigLatin)寫成,或可以用特定流設計工具(例如,抽取-轉換-加載(ETL)流設計工具roi)設計。因此,物理流可以是一個或多個腳本、流設計工具生成的流圖和元數據、或二者的結合。
[0019]由于物理流可以是混合流,因此其可包括針對不同執(zhí)行引擎的多個部分(S卩,子流)。例如,物理流的第一部分可以是用SQL寫成,第二部分可以是用PigLatin寫成。此外,支持相同編程語言的各執(zhí)行引擎之間可能存在差異。例如,第一SQL執(zhí)行引擎(例如,HPVertica SQL引擎)的腳本可能不兼容第二SQL執(zhí)行引擎(例如,Oracle SQL引擎)(例如,可能不能在其上正確運行)。
[0020]第一物理流210可由流解析器222解析,流解析器222是負責“物理到邏輯”轉換的模塊220的一部分。流解析器222可采用各種形式。例如,在第一物理流210是用像PigLatin或SQL這樣的編程語言寫成的腳本的情況下,這種流可由與其關聯的引擎來解析。然后,弓丨擎生成此流的執(zhí)行計劃。腳本解析器可對執(zhí)行計劃進行分析,并獲得流的每個運算符或數據儲存的引擎專用信息。腳本解析器可輸出構成流圖的各節(jié)點(本文稱作“元素”)。由于腳本解析器是引擎專用的,因此可能存在針對所支持的每個引擎的分立的腳本解析器。這種腳本解析器可作為插件增加到系統。
[0021]在第一物理流210是由流設計工具創(chuàng)建的分析流或具有是由流設計工具創(chuàng)建的分析流的一部分時,與流關聯的執(zhí)行引擎的流解析器可用于生成流的各元素。這可通過訪問引擎代碼庫并重寫引擎的默認打印機以將解析的流信息傳遞到xLM生成器226(邏輯表示生成器)來完成。如果不允許訪問引擎代碼庫,則可能需要寫顯式變換(例如,如果工具專用流表示是可擴展標記語言(XML),則可使用可擴展樣式表語言轉換(XSLT))。
[0022]在120,可使用字典生成第一物理流的邏輯表示。此邏輯表示可被認為是邏輯流。邏輯表示可通過使用字典224由xLM生成器226將多個元素轉換成用邏輯語言表示的邏輯元素而生成。這里,示例的邏輯語言是xLM,xLM是惠普公司的HP實驗室為分析流開發(fā)的邏輯語言。但是,可使用其他邏輯語言。由于不專用于任何特定執(zhí)行引擎,因此本文將邏輯表示稱為“引擎不可知的”。
[0023]字典224包括邏輯語言和與第一物理流的至少一個執(zhí)行引擎關聯的編程語言之間的映射。因此,字典224使得能夠將引擎專用的多個元素轉換成構成邏輯表示的引擎不可知的邏輯元素?,F在將結合圖3-5更詳細地描述字典224。
[0024]圖3示出根據示例