天天看點

Avro (資料序列化) 基礎概念 Avro

Avro

資料序列化的系統。   新的資料序列化格式與傳輸工具,将逐漸取代Hadoop原有的IPC機制。 它可以提供: 1 豐富的資料結構類型 2 快速可壓縮的二進制資料形式 3 存儲持久資料的檔案容器 4  遠端過程調用RPC 5 簡單的 動态語言結合功能,Avro和動态語言結合後,讀寫資料檔案和使用RPC協定都不需要生成代碼,而 代碼生成作為一種可選的優化隻值得在靜态類型語言中實作。 Avro依賴于模式(Schema)。Avro資料的讀寫操作是很頻繁的,而這些操作都需要使用模式,這樣就減少寫入每個資料資料的開銷,使得序列化快速而又輕巧。這種資料及其模式的自我描述友善于動态 腳本語言的使用。 當Avro資料存儲到檔案中時,它的模式也随之存儲,這樣任何程式都可以對檔案進行處理。如果需要以不同的模式讀取資料,這也很容易解決,因為兩個模式都是已知的。 當在RPC中使用Avro時,伺服器和用戶端可以在握手連接配接時交換模式。伺服器和用戶端有着彼此全部的模式,是以相同命名字段、缺失字段和多餘字段等資訊之間通信中需要解決的一緻性問題就可以容易解決 還有,Avro模式是用JSON(一種輕量級的資料交換模式)定義的,這樣對于已經擁有JSON庫的語言可以容易實作。 Avro提供着如Thrift和Protocol Buffers等系統相似的功能,但是在一些基礎方面還是有差別的,主要是: 1 動态類型:Avro并不需要生成代碼,模式和資料存放在一起,而模式使得整個資料的處理過程并不生成代碼、靜态資料類型等等。這友善了 資料處理系統和語言的構造。 2 未标記的資料:由于讀取資料的時候模式是已知的,那麼需要和資料一起編碼的類型資訊就很少了,這樣序列化的規模也就小了。 3 不需要使用者指定字段号:即使模式改變,處理資料時新舊模式都是已知的,是以通過使用字段名稱可以解決差異問題。 [1]  

繼續閱讀