Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Funzione
Si applica a:
Databricks Runtime 16.0 e versioni successive
Restituisce un valore struct con avroBin e jsonSchemaStr.
Sintassi
from_avro(avroBin, jsonSchemaStr, options )
Argomenti
-
avroBinBINARY: espressione che specifica una riga di dati Avro. -
avroSchemaSpec: schema di destinazione in formato JSON. Deve corrispondere allo schema codificato inavroBincome specificato in to_avro(). -
options: valore letteraleMAP<STRING,STRING>che specifica le direttive.
Valori restituiti
Oggetto STRUCT con nomi di campo e tipi basati sul risultato di schema_of_json(jsonStr).
avroBin deve essere ben formato rispetto a avroSchemaSpec e options o Databricks genera un'eccezione.
Opzioni
| Opzione | Valori | Descrizione |
|---|---|---|
mode |
FAILFAST, PERMISSIVE |
Modalità di gestione degli errori. Impostazione predefinita: FAILFAST. In PERMISSIVE modalità, i record danneggiati vengono impostati su NULL invece di generare un errore. |
compression |
uncompressed, snappy, deflate, bzip2, xzzstandard |
Codec di compressione per la codifica dei dati Avro. |
avroSchemaEvolutionMode |
none, restart |
Modalità di evoluzione dello schema. Impostazione predefinita: none. Se impostato su restart, la query genera un'eccezione UnknownFieldException quando lo schema viene modificato. Riavviare il processo per usare il nuovo schema. Vedere Usare la modalità di evoluzione dello schema con from_avro. |
recursiveFieldMaxDepth |
Intervallo: -1 da a 15 |
Profondità massima di ricorsione lungo un singolo percorso ricorsivo. Impostazione predefinita: -1, che non limita la profondità di ricorsione.Quando un tipo condiviso è raggiungibile da molti percorsi di schema distinti, l'espansione dello schema potrebbe causare la perdita di memoria del driver perché questa opzione limita la profondità su un solo percorso. Per risolvere il problema:
|
Esempi
> 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}