Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
Función
Se aplica a:
Databricks Runtime 16.0 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 enavroBincomo se especifica en to_avro().. -
options: un literalMAP<STRING,STRING>que especifica directivas.
Devoluciones
Un STRUCT con 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.
Opciones
| Opción | Valores | Descripción |
|---|---|---|
mode |
FAILFAST, PERMISSIVE |
Modo de control de errores. Valor predeterminado: FAILFAST. En PERMISSIVE el modo , los registros dañados se establecen NULL en en lugar de generar un error. |
compression |
uncompressed, snappy, deflate, bzip2, , xz, zstandard |
Códec de compresión para codificar datos avro. |
avroSchemaEvolutionMode |
none, restart |
Modo de evolución del esquema. Valor predeterminado: none. Cuando se establece en restart, la consulta produce una UnknownFieldException excepción cuando cambia el esquema. Reinicie el trabajo para usar el nuevo esquema. Consulte Uso del modo de evolución del esquema con from_avro. |
recursiveFieldMaxDepth |
Intervalo: -1 a 15 |
Profundidad máxima de recursión a lo largo de una única ruta recursiva. Valor predeterminado: -1, que no limita la profundidad de recursividad.Cuando se puede acceder a un tipo compartido desde muchas rutas de acceso de esquema distintas, la expansión del esquema podría hacer que el controlador se queda sin memoria porque esta opción limita la profundidad solo en una ruta de acceso. Para solucionar el problema:
|
Ejemplos
> SELECT from_avro(to_avro(5), '{ "type" : "int" }', NULL:MAP<STRING, STRING>);
5
> SELECT from_avro(to_avro(5, '{ "type" : "int" }'), '{ "type" : "int" }', NULL:MAP<STRING, STRING>);
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"}]}', NULL:MAP<STRING, 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}