Función from_avro
Se aplica a: Databricks SQL Databricks Runtime 15.4 y versiones posteriores
Devuelve un valor de estructura con avroBin
y jsonSchemaStr
.
Sintaxis
from_avro(avroBin, jsonSchemaStr [, options] )
Argumentos
avroBin
BINARY
: expresión que especifica una fila de datos de Avro.avroSchemaSpec
: el esquema de destino en formato JSON. Debe coincidir con el esquema codificado enavroBin
tal y como se especifica en to_avro()..options
: un literalMAP<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}