溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

精彩解密大數(shù)據(jù)之精絕古城

發(fā)布時間:2020-06-13 03:09:12 來源:網(wǎng)絡(luò) 閱讀:464 作者:caosheng03 欄目:大數(shù)據(jù)

     Avro schema作為大數(shù)據(jù)一個項(xiàng)目,它可以算得上精品中的上等品,讓學(xué)習(xí)或者想要學(xué)習(xí)大數(shù)據(jù)的人為之傾倒,不斷挖掘?qū)W習(xí),那么它究竟有著怎樣的神秘面紗呢?我們一起來揭開!

為了理解Avro,首先要理解序列化。序列化是在內(nèi)存里表述數(shù)據(jù)的一種方式,它是一連串的字節(jié),可以保存數(shù)據(jù)到磁盤或通過網(wǎng)絡(luò)發(fā)送出去,反序列化允許你把數(shù)據(jù)讀回到內(nèi)存。

舉個實(shí)際的例子,我們?nèi)绾涡蛄谢瘮?shù)字108125150?可以指定一些具體類型:(1)當(dāng)存儲為Java int類型時是4 bytes;(2)當(dāng)存儲為Java string類型時是9 bytes.

很多編程語言和庫都支持序列化,比如Java里的Serializable或Python的pickle。但是向后兼容和交叉語言支持對我們來講可能是一項(xiàng)挑戰(zhàn),而Avro就是開發(fā)出來應(yīng)對這些挑戰(zhàn)。

  • 什么是Apache Avro

Avro數(shù)據(jù)文件格式只是Avro項(xiàng)目的一部分,它是高效的數(shù)據(jù)序列化框架,是由Doug Cutting創(chuàng)立的Apache頂級項(xiàng)目,在Hadoop和它的生態(tài)系統(tǒng)得到廣泛的支持。最大的特點(diǎn)就是在不犧牲性能的前提下提供兼容性,可在Java、C、C++、C#、Python、PHP和其他語言中讀寫數(shù)據(jù)。Avro也支持RemoteProcedure Calls(RPC),可以用于構(gòu)建定制網(wǎng)絡(luò)協(xié)議,而且Flume使用它進(jìn)行內(nèi)部通信。

  • AvroSchemas支持的類型

1)簡單類型:

精彩解密大數(shù)據(jù)之精絕古城

(2)復(fù)雜類型

精彩解密大數(shù)據(jù)之精絕古城

這里record類型最重要,其他類型主要用來定義record的字段。

  • 基本schema示例

這里我們先引用一段SQL CREATE TABLE語句

精彩解密大數(shù)據(jù)之精絕古城

然后我們使用Avro schema來表達(dá)同樣的語句

精彩解密大數(shù)據(jù)之精絕古城

  • 在Schema里指定默認(rèn)值

Avro支持在schema里設(shè)置默認(rèn)值,當(dāng)沒有明確指定字段值的時候使用,和SQL相似

精彩解密大數(shù)據(jù)之精絕古城

  • AvroSchemasNull

1)當(dāng)序列化數(shù)據(jù)時Avro檢查null

2)當(dāng)在schema里明確指定時才可以使用Null

精彩解密大數(shù)據(jù)之精絕古城

  • 復(fù)雜類型的schema示例

示例:帶enumstring array類型的record

精彩解密大數(shù)據(jù)之精絕古城

  • 注釋schema

schema加注釋是一種避免歧義的好的做法

1)所有的類型都支持加上可選的doc屬性

精彩解密大數(shù)據(jù)之精絕古城

  • Avro容器格式

Avro定義了一種容器文件格式來存儲Avro記錄,也稱為“Avro數(shù)據(jù)文件格式”。和Hadoop SequenceFile格式相似,支持交叉語言的數(shù)據(jù)讀寫。它也支持塊記錄的壓縮,壓縮后數(shù)據(jù)可分片。另外這種格式是自描述的,每個文件包含一份schema的拷貝,用于寫數(shù)據(jù),并且所有記錄在文件中必須使用相同的schema。

  • 使用Avro工具檢查Avro數(shù)據(jù)文件

Avro數(shù)據(jù)文件是一種高效存儲數(shù)據(jù)的方式,然而,二進(jìn)制格式使得debug很不方便。使用avro-tools命令來操作二進(jìn)制文件,可以讀取Avro文件里的schema或數(shù)據(jù)。

精彩解密大數(shù)據(jù)之精絕古城

挖掘了一番,你有沒有挖掘到寶貝呢?如果找到了,這絕對是你的私人財(cái)產(chǎn),如果沒有,也沒有關(guān)系,因?yàn)檫€有猛料等你來!盛大網(wǎng)絡(luò)大咖親自坐鎮(zhèn),分享大數(shù)據(jù)干貨,一起來吧!關(guān)注微信公眾號“大數(shù)據(jù)cn”,一起來交流。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI