日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

avro java_Avro 简介 | 学步园

發布時間:2024/1/1 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 avro java_Avro 简介 | 学步园 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Avro 簡介

ApacheAvro(http:llavro.apache.org)是一個獨立于

Avro規范((http: //avro. apache. org/dots/current/spec. html)精確定義所有實現都必須支持的二進制格式。同時它還指定這些實現還需要支持其他Avro特性。但是,該規范并沒有給API制定規范:實現可以根據自己的需求操作Avro數據并給出相應的API,因為每個API都與語言相關。事實上,只有一種二進制格式比較重要,這表明綁定一種新的編程語言來實現是比較容易的,可以避免語言和格式組合爆炸問題,·否則將對互操作性造成一定的問題。Avro有豐富的數據模式解析(data

schema resolution)能力。在精心定義的約束條件下,讀數據所用的模式不必與寫數據所用的模式相同。由此,Avro是支持模式演化的。例如,通過在用于讀取以前數據的模式中聲明新的用于讀取記錄的選項字段。新的和以前客戶端均能以相似的方法讀取按舊模式存儲的數據,同時新的客戶端可以使用新的字段寫入的新內容。相反的,如果老客戶端讀取新客戶端寫入的數據,它將忽略新加入的字段并按照先前的數據模式進行處理。Avro為一系列對象指定一個對象容器格式—類似于Hadoop的順序文件。Avro數據文件包含元數據項,模式數據存儲在其中,這使文件可以自我聲明。Avro數據文件支持壓縮,并且是可切分的,這對MapReduc。的輸入格式至關重要。另外,Avro本身是為MapReduce設計的,所以在不久的將來有可能使用Avro作為一流的MapReduce

API(即,比Streaming更豐富的API,就像Java API或C++管道一樣)融入其他編程語言。

Avro數據類型和模式

Avro 定義了少數數據類型,它們可用于以寫模式的方式來構建應用特定的數據結考慮到互操作性,其實現必須支持所有的Avro類型。

每個基本類型還可以使用更冗長的形式和使用type屬性來指定,示例如下:{"type":"null"}

avro基本類型

類型名稱

描述

模式示例

null

空值

"null"

Boolean

二進制值

"boolean"

int

32位帶符號整數

“int"

long

64位帶符號整數

"long"

于load

單精度(32位)IEEE754浮點數

“于loat"

double

雙精度(64位)IEEE754浮點數

"double"

bytes

8位無符號字節序列

“bytes"

string

Unicode字符序列

“string"

Avro的復雜類型

類型名稱

描述

模式實例

array

一個排過序的對象集合。特定數組中的所有對象必須模式相同

{"array":"long"}

map

未排過序的鍵/值對。鍵必須是字符串,值可以是任何類型,但一個特定map中所有值必須模式相同

{"type":"map",

"values":"string"

}

record

任意類型的一個命名字段集合

{

"type":”record",

"name":"WeatherRecord"

"doc":"A weather reding.",

"fields":[

{"name":"yes","type":"int"}

{"name":"temperature","type":"int"}

{"name":"stationId","type":"string"}

]}

enum

一個命名的值集合

{

"type":"enum",

"name":"Cutlery",

"doc":"An eating utensil。”,

"symbols”:["KNIFE",FORK","SPOON"]

}

fixed

一組固定數量的8位無符號字節

{"type":"fixed",

"name":"MdSHash"

}

union

模式的并集。并集可以用json數組表示,其中每個元素為一個模式口并集表示的數據必須與其其中一個模式相匹配

[

"null",

"string",

{"type":"map","values":"string"}

]

Java擁有第三類映射,即自反映射(reflectmapping,將avro類型映射成事先已有的Java類)。它的速度比通用映射和特殊映射都慢,所以不推薦在新應用中使用。

Avro的java映射類型

avro類型

Java通用映射

Java特殊映射

Java自反映射

null

null類型

boolear

Boolean

int

Int

short或int

long

long

float

float

double

double

bytes

java.nio.bytebuffer

字節數組

string

org.apache.

avro.util/utf8

array

org.apache.

avro.util/ut于8

array或Java.util/Collection

map

java.util/map

java.lang.String

record

org.apache.avro.

generic.genericrecord

生成實現org.apache.avro.

specific/SpecificRecord的類

具有零參數構造函數的任意用戶類。

繼承了所有不傳遞的實例字段

enum

java.lang.string

生成java enum類型

任意java enum類型

fixed

org.apache.avro.

generic/genericfixed

生成實現org.apache.avro.

specific.SpecificFixed的類

org.apache.avro

.generic.genericFixed

union

Java.lang.object

總結

以上是生活随笔為你收集整理的avro java_Avro 简介 | 学步园的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。