Hadoop record I/O 包含class文件以及record描述語言解釋器用于簡(jiǎn)化records的序列化和反序列化。

介紹

任何顯著復(fù)雜性的軟件系統(tǒng)都需要與外界進(jìn)行數(shù)據(jù)交換的機(jī)制。數(shù)據(jù)交互通常涉及到輸入輸出數(shù)據(jù)邏輯單元的封包和解包(如文件、網(wǎng)絡(luò)連接、內(nèi)存緩沖區(qū)等等。)。應(yīng)用程序通常嵌套了操作代碼用于序列化和反序列化數(shù)據(jù)類型。序列化的工作有幾個(gè)特性,它可以使得代碼自動(dòng)化生成。給你一個(gè)特別的輸出編碼格式(比如二進(jìn)制、XML等等),基本數(shù)據(jù)類型以及由基本數(shù)據(jù)類型構(gòu)成的組合的序列化將是一個(gè)機(jī)械化的工作。人工編寫序列化代碼容易造成bugs特別是當(dāng)records有很多字段或者一個(gè)record在不同版本之間定義的不同。最后它在通過不同編程語言編寫的應(yīng)用程序之間進(jìn)行數(shù)據(jù)的交互是很有用的。通過以一種語言無關(guān)的方式來描述由應(yīng)用程序操作的數(shù)據(jù)records,并使用描述來派生出不同目標(biāo)語言的實(shí)現(xiàn),會(huì)變得更加容易。本文檔描述Hadoop Record I/O,一種機(jī)制目的在于:

1)提供簡(jiǎn)單的序列化數(shù)據(jù)類型的規(guī)范

2)提供上述類型的封裝和解包的不同目標(biāo)語言的代碼生成

3)提供特定于目標(biāo)預(yù)研的支持,使應(yīng)用程序編程人員能夠?qū)⑸傻拇a集成到應(yīng)用程序中。

Hadoop Record I/O的目標(biāo)有點(diǎn)類型XDR, ASN.1, PADS and ICE的機(jī)制。雖然這些系統(tǒng)都包含一個(gè)大多數(shù)record類型的規(guī)范DDL文件,他們?cè)谄渌矫孢€是有很多不同的。Hadoop Record I/O聚焦于數(shù)據(jù)的序列化和多語言的支持。我們可以基于翻譯器的方式進(jìn)行序列化。Hadoop的用戶必須使用一個(gè)簡(jiǎn)單的數(shù)據(jù)描述語言來描述他們的數(shù)據(jù)。Hadoop DDL 翻譯器rcc生成代碼,用戶可以通過調(diào)用簡(jiǎn)單的讀寫數(shù)據(jù)流抽象來進(jìn)行數(shù)據(jù)的讀寫。接下來我們我們會(huì)羅列Hadoop Record I/O的一些目標(biāo)和非目標(biāo)。

 

目標(biāo):

1)支持常用的基本類型。Hadoop應(yīng)該包含我們希望支持的常用內(nèi)置類型。

2)支持復(fù)合類型(包括遞歸復(fù)合)。Hadoop應(yīng)該支持復(fù)合類型如structs或者vectors。

3)不同目標(biāo)語言的代碼生成。Hadoop應(yīng)該能支持生成不同目標(biāo)語言的序列化代碼,同時(shí)能很好地進(jìn)行擴(kuò)展。初步目標(biāo)是C++和JAVA。

4)目標(biāo)語言的支持。Hadoop應(yīng)該內(nèi)置支持目標(biāo)的頭文件、庫或者包,以便能很好地內(nèi)置到應(yīng)用程序當(dāng)中。

5)支持多種不同輸出編碼格式??梢允欠庋b好的二進(jìn)制、逗號(hào)分隔的文本或者是XML等等。

6)支持向后或向前兼容的記錄類型。

 

非目標(biāo):

1)序列化任意的C++文件。

2)序列化復(fù)雜的數(shù)據(jù)結(jié)構(gòu)如trees、linked list等等。

3)內(nèi)建的索引、壓縮或校驗(yàn)和。

4)從XML生成的動(dòng)態(tài)構(gòu)造實(shí)體。

后續(xù)的文檔主要在細(xì)節(jié)上描述Hadoop record I/O 的特性。第2部分描述系統(tǒng)支持的數(shù)據(jù)類型,第3部分描述簡(jiǎn)單記錄例子的DDL語法,第4部分描述使用rcc代碼生成的過程,第5部分描述目標(biāo)語言的映射和對(duì)Hadoop類型的支持,我們已經(jīng)有一個(gè)C++映射的相對(duì)完整的描述,在即將到來的文檔更新中將會(huì)包含Java以及其他語言。最后一部分描述輸出編碼的支持。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式