AVRO – Esquemas

Avro, al ser una utilidad de serialización basada en esquemas, acepta esquemas como entrada. Si bien hay varios esquemas disponibles, Avro sigue sus propios estándares de definición de esquemas. Estos diagramas describen los siguientes detalles:

  • tipo de archivo (entrada predeterminada)
  • lugar de grabación
  • título del registro
  • campos en un registro con los tipos de datos correspondientes

Con estos esquemas, puede almacenar valores serializados en binario en menos espacio. Estos valores se almacenan sin metadatos.

Crear diagramas de Avro

Un esquema Avro se genera en formato de documento JavaScript Object Notation (JSON), que es un formato ligero de intercambio de datos basado en texto. Se crea de una de las siguientes formas:

  • Cadena JSON
  • Objeto JSON
  • Matriz JSON

Ejemplo – El siguiente ejemplo muestra un esquema que define un documento en el espacio de nombres AreaTutorial llamado Empleado, con el nombre del campo y la edad.

{
   "type" : "record",
   "namespace" : "AreaTutorial",
   "name" : "Employee",
   "fields" : [
      { "name" : "Name", "type" : "string" },
      { "name" : "Age", "type" : "int" }
   ]
}

En este ejemplo, puede observar que hay cuatro campos para cada registro:

  • un tipo – Este campo está debajo del documento y debajo del campo llamado campos.

    • En el caso de un documento, muestra el tipo de documento, generalmente una entrada porque hay varios campos.

    • Cuando se trata de un campo, el tipo describe el tipo de datos.

  • espacio de nombres – Este campo describe el nombre del espacio de nombres en el que reside el objeto.

  • nombre – Este campo está ubicado debajo del documento y debajo del campo llamado campos.

    • En el caso de un documento, describe el nombre del esquema. Este nombre de esquema, junto con el espacio de nombres, identifica de forma única el esquema en el repositorio (Namepace.schema name). En el ejemplo anterior, el nombre de esquema completo sería AreaTutorial.Employee.

    • En el caso de los campos, describe el nombre del campo.

Tipos de datos primitivos de avro

El esquema Avro tiene tipos de datos primitivos y tipos de datos complejos. La siguiente tabla describe tipos de datos primitivos Avro –

Tipo de datos Descripción
cero Null es un tipo que no importa.
En t Un entero de 32 bits con signo.
a lo largo de Entero de 64 bits con signo.
nadar Número de coma flotante de 32 bits de precisión simple IEEE 754.
doble Número de coma flotante IEEE 754 de doble precisión (64 bits).
bytes una secuencia de bytes de 8 bits sin firmar.
un hilo Una secuencia de caracteres Unicode.

Tipos de datos complejos de Avro

Junto con los tipos de datos primitivos, Avro proporciona seis tipos de datos complejos, a saber, registros, enumeraciones, matrices, mapas, uniones y fijos.

Anote

Un tipo de datos de registro en Avro es una colección de varios atributos. Admite los siguientes atributos:

  • nombre – El valor de este campo contiene el nombre de la entrada.

  • espacio de nombres – El valor de este campo contiene el nombre del espacio de nombres en el que se almacena el objeto.

  • un tipo – El valor de este atributo contiene el tipo de documento (registro) o el tipo de datos del campo en el esquema.

  • campos – Este campo contiene una matriz JSON que contiene una lista de todos los campos del esquema, cada uno con un nombre y atributos de tipo.

Ejemplo

A continuación se muestra un ejemplo de una grabación.

{
" type " : "record",
" namespace " : "AreaTutorial",
" name " : "Employee",
" fields " : [
 { "name" : " Name", "type" : "string" },
 { "name" : "age", "type" : "int" }
 ]
}

Enum

Una enumeración es una lista de elementos de una colección, la enumeración Avro admite los siguientes atributos:

  • nombre – El valor de este campo contiene el nombre de la enumeración.

  • espacio de nombres – El valor de este campo contiene una cadena que especifica el nombre de la enumeración.

  • simbolos – El valor de este campo contiene los caracteres de enumeración como una matriz de nombres.

Ejemplo

A continuación se muestra un ejemplo de enumeración.

{
   "type" : "enum",
   "name" : "Numbers", 
   "namespace": "data", 
   "symbols" : [ "ONE", "TWO", "THREE", "FOUR" ]
}

Matrices

Este tipo de datos define un campo de matriz que tiene un elemento de atributo. Este atributo de elementos especifica el tipo de elementos de la matriz.

Ejemplo

{ " type " : " array ", " items " : " int " }

Tarjetas

El tipo de datos del mapa es una matriz de pares clave-valor, organiza los datos como pares clave-valor. La clave de la tarjeta Avro debe ser una cuerda. Los valores del mapa contienen el tipo de datos del contenido del mapa.

Ejemplo

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

Alianzas

El tipo de datos de unión se utiliza siempre que un campo tiene uno o más tipos de datos. Se representan como matrices JSON. Por ejemplo, si el campo puede ser entero o nulo, la unión se representaría como [«int», «null»]…

Ejemplo

A continuación se muestra un documento de muestra que utiliza uniones:

{ 
   "type" : "record", 
   "namespace" : "AreaTutorial", 
   "name" : "empdetails ", 
   "fields" : 
   [ 
      { "name" : "experience", "type": ["int", "null"] }, { "name" : "age", "type": "int" } 
   ] 
}

Reparado

Este tipo de datos se utiliza para declarar un campo de tamaño fijo que se puede utilizar para almacenar datos binarios. Tiene nombre de campo y datos como atributos. El nombre contiene el nombre del campo y el tamaño contiene el tamaño del campo.

Ejemplo

{ "type" : "fixed", "name" : "bdata", "size" : 1048576}

🚫