参考
 
原始类型(Primitive Types)
类型名
描述
描述
二进制编码(Binary Encoding)
排序(Sort Order)
null
空
no value
0字节(zero bytes)
总是相等
boolean
布尔值(0或1)
a binary value
1字节,值是0(false)或者1(true)
false在前,true在后
int
32位有符号整数
32-bit signed integer
使用可变长度编码(variable-length)、zig-zag编码
按数值升序排列
long
64位有符号整数
64-bit signed integer
使用可变长度编码(variable-length)、zig-zag编码
按数值升序排列
float
单精度(32位)的IEEE 754浮点数
single precision (32-bit) IEEE 754
floating-point number
4字节,float浮点数会被转换成32位的整数,
按数值升序排列
double
双精度(64位)的IEEE 754浮点数
double precision (64-bit) IEEE 754
floating-point number
8字节,double浮点数会被转换成64位的整数,
按数值升序排列
bytes
8位无符号字节序列
sequence of 8-bit unsigned bytes
编码成long类型,后面跟着很多字节的数据。
按字典顺序通过无符号8位值进行比较。
string
字符串
unicode character sequence
编码成long类型,后面跟着很多字节的UTF-8编码的字符数据。
按字典顺序由Unicode代码点进行比较。由于UTF-8用作字符串的二进制编码,因此字节和字符串二进制数据的排序是相同的。
 
复杂类型(Complex Types)
类型名
描述
样例
二进制编码(Binary Encoding)
排序(Sort Order)
Records
记录
{
  "type": "record",
  "name": "LongList",
  "aliases": ["LinkedLongs"],
// old name for this
  "fields" : [
    {"name": "value", "type": "long"},
// each element has a long
    {"name": "next", "type": ["null", "LongList"]}
// optional next element
  ]
}
记录通过模式里面声明的字段顺序编码,换句话说,记录被编码成它的字段编码的连接。字段值按它的模式编码。
记录数据按字段的字典顺序排序。 如果字段指定其顺序为:
“升序”,然后其值的顺序不变。
“降序”,然后其值的顺序颠倒过来。
“忽略”,然后在排序时忽略其值。
Enums
枚举
{ "type": "enum",
  "name": "Suit",
  "symbols" : ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]
}
枚举由int编码,表示模式中符号从零开始的位置。
按符号在枚举模式中的位置排序
Arrays
数组
{"type": "array", "items": "string"}
数组被编码为一系列块(block)。 每个块包含一个长整数的计数,后跟许多数组项。计数为零的块表示数组的结束。每个元素都按照数组的模式进行编码。
按字典顺序进行元素比较。
Maps
映射(字典)
{"type": "map", "values": "long"}
映射被编码为一系列块(block)。每个块由一个长整数的计数,后跟许多键/值对。计数为零的块表示映射的结束。每个元素都按照映射的模式进行编码。
无法比较。
Unions
联合类型
即值可以是类型列表中的一种类型
["null", "string"]表示模式可以是null或者string
通过首先写入一个long值来编码union,该值指示其值的模式的并集内的从零开始的位置。 然后根据联合中指示的模式对该值进行编码。
union数据首先由union中的分支排序,并且在其中由分支的类型排序。 例如,[“int”,“string”] union将在所有字符串值之前对所有int值进行排序,其中int和字符串本身按上面的定义排序。
Fixed
固定大小
{"type": "fixed", "size": 16, "name": "md5"}
使用模式中声明的字节数对固定实例进行编码。
按字典顺序通过无符号8位值进行比较。
 
编码(Encodings):
Avro指定了两种序列化编码:二进制和JSON。 大多数应用程序将使用二进制编码,因为它更小更快。 但是,对于调试和基于Web的应用程序,JSON编码有时可能是合适的。

Apache Avro总结的更多相关文章

  1. java.lang.NoClassDefFoundError: org/apache/avro/ipc/Responder

    文章发自:http://www.cnblogs.com/hark0623/p/4170174.html  转发请注明     java.lang.NoClassDefFoundError: org/a ...

  2. Apache Avro 与 Thrift 比较

    http://www.tbdata.org/archives/1307 Avro和Thrift都是跨语言,基于二进制的高性能的通讯中间件. 它们都提供了数据序列化的功能和RPC服务. 总体功能上类似, ...

  3. Apache Avro# 1.8.2 Specification (Avro 1.8.2规范)二

    h5 { text-indent: 0.71cm; margin-top: 0.49cm; margin-bottom: 0.51cm; direction: ltr; color: #000000; ...

  4. Apache Avro# 1.8.2 Specification (Avro 1.8.2规范)一

    h4 { text-indent: 0.71cm; margin-top: 0.49cm; margin-bottom: 0.51cm; direction: ltr; color: #000000; ...

  5. 异常-CDH的service无法启动并抛出异常-org.apache.avro.AvroRemoteException: java.net.ConnectException: Connection refused (Connection refused)

    1 详细异常 org.apache.avro.AvroRemoteException: java.net.ConnectException: Connection refused (Connectio ...

  6. Hadoop基础-Apache Avro串行化的与反串行化

    Hadoop基础-Apache Avro串行化的与反串行化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Apache Avro简介 1>.Apache Avro的来源 ...

  7. Apache Avro:一个新的数据交换格式

    原文: http://blog.cloudera.com/blog/2009/11/avro-a-new-format-for-data-interchange/ 注:由于个人英语能力有限,翻译不准确 ...

  8. Hadoop-异常-Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/avro/io/DatumReader

    //maven org.apache.avr 下载不完全 ,去maven   If you are using maven to build your jar, you need to add the ...

  9. Apache Avro & Avro Schema简介

    为什么需要schema registry? 首先我们知道: Kafka将字节作为输入并发布 没有数据验证 但是: 如果Producer发送了bad data怎么办? 如果字段被重命名怎么办? 如果数据 ...

随机推荐

  1. freemark 基本使用

    实际上用程序语言编写的程序就是模板. FTL (代表FreeMarker模板语言). 这是为编写模板设计的非常简单的编程语言. 模板(FTL编程)是由如下部分混合而成的: 文本:文本会照着原样来输出. ...

  2. Jpofiler

    参考链接: https://blog.csdn.net/u010638673/article/details/81703942

  3. CUDA学习(二)之使用clock()函数

    clock()函数是C/C++中的计时函数,相关的数据类型是clock_t,使用clock函数可以计算运行某一段程序所需的时间,如下所示程序计算从10000000逐渐减一直到0所需的时间. #incl ...

  4. C语言I作业1

    1 你对软件工程专业或计算机科学与技术专业了解是怎样的? 软件工程顾名思义就是工程化的方法生产软件的一门学科.涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面. 2 你了解c语 ...

  5. js代码预解析

    1.var一般用于声明变量,预解析代码的时候,等号后面的赋值过程不会执行,所以预解析时的var变量都是未定义的 2.function声明的函数,预解析的时候,值就是函数里面的内容 例:console. ...

  6. linux入门系列10--firewalld防火墙管理

    上一篇文章学习了用户及文件相关权限,本篇继续学习防火墙技术. 防火墙作为公网与内网之间的保护屏障,对系统至关重要.防火墙又分为硬件防火墙和软件防火墙,主要功能都是依据设置的策略对穿越防火墙的流量进行过 ...

  7. HYSBZ_2002_分块

    http://www.lydsy.com/JudgeOnline/problem.php?id=2002 分块基础题,初次接触,很巧妙. OJ好像挂了,没法提交. #include<iostre ...

  8. HDU_1166_树状数组

    http://acm.hdu.edu.cn/showproblem.php?pid=1166 树状数组入门题. #include<iostream> #include<cstring ...

  9. 【WPF学习】第四十二章 透明

    WPF支持真正的透明效果.这意味着,如果在一个性质或元素上层叠另外几个形状或元素,并让所有这些形状和元素具有不同的透明度,就会看到所期望的效果.通过该特性能够创建透过上面的元素可以看到的的图像背景,这 ...

  10. Codeforces 1197E Count The Rectangles(树状数组+扫描线)

    题意: 给你n条平行于坐标轴的线,问你能组成多少个矩形,坐标绝对值均小于5000 保证线之间不会重合或者退化 思路: 从下到上扫描每一条纵坐标为y的水平的线,然后扫描所有竖直的线并标记与它相交的线,保 ...