• Apache Avro总结


    参考
     
    原始类型(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编码有时可能是合适的。

  • 相关阅读:
    grep
    [NOI2009]植物大战僵尸
    sed
    YY的GCD
    awk
    CF1100E
    cat
    tac
    [学习笔记]基数排序
    more
  • 原文地址:https://www.cnblogs.com/sxpujs/p/11220152.html
Copyright © 2020-2023  润新知