Compartir a través de


Función from_avro

Se aplica a: casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime 15.4 y versiones posteriores

Devuelve un valor de estructura con avroBin y jsonSchemaStr.

Sintaxis

from_avro(avroBin, jsonSchemaStr [, options] )

Argumentos

  • avroBinBINARY: expresión que especifica una fila de datos de Avro.
  • avroSchemaSpec: el esquema de destino en formato JSON. Debe coincidir con el esquema codificado en avroBin tal y como se especifica en to_avro()..
  • options: un literal MAP<STRING,STRING> opcional que especifica directivas.

Devoluciones

con STRUCT nombres de campo y tipos basados en el resultado de schema_of_json(jsonStr).

avroBin debe tener un formato correcto con respecto a avroSchemaSpec y options o Databricks genera una excepción.

Notas

Se admiten las siguientes opciones:

Opción Value Descripción
'mode' 'PERMISSIVE', 'FAILFAST' En PERMISSIVE el modo , los objetos o campos dañados de un objeto se establecen NULL en en lugar de generar un error.
compression 'uncompressed', , 'snappy''deflade' , 'bzip2', , 'xz','zstandard' Especifica el códec de compresión usado para codificar los datos de Avro.

Para obtener más opciones, consulte Lectura y escritura de datos de Avro de streaming.

Ejemplos

> SELECT from_avro(to_avro(5), '{ "type" : "int" }');
  5

> SELECT from_avro(to_avro(5, '{ "type" : "int" }'), '{ "type" : "int" }');
  5

> SELECT from_avro(to_avro(named_struct('num', 5, 'txt', 'hello')), '{ "type" : "record", "name": "my_record", "fields": [{ "name": "num", "type": "int"}, { "name": "txt", "type": "string"}]}');
  {"num":5,"txt":"hello"}

> SELECT from_avro(to_avro(named_struct('num', 5, 'txt', 'hello')),
                   '{ "type" : "record", "name": "my_record", "fields": [{ "name": "num", "type": "int"}, { "name": "txt", "type": "double"}]}',
                   map('mode', 'failfast'));
  Error: Avro data is not valid for the specified schema.

> SELECT from_avro(to_avro(named_struct('num', 5, 'txt', 'hello')),
                   '{ "type" : "record", "name": "my_record", "fields": [{ "name": "num", "type": "int"}, { "name": "txt", "type": "double"}]}',
                   map('mode', 'permissive'));
  {"num":null,"txt":null}