Funktionen from_avro
gäller för: Databricks Runtime 16.0 och senare
Returnerar ett struct-värde med avroBin
och jsonSchemaStr
.
Syntax
from_avro(avroBin, jsonSchemaStr [, options] )
Argument
-
avroBin
: EttBINARY
uttryck som anger en rad med Avro-data. -
avroSchemaSpec
: Målschemat i JSON-format. Det måste matcha schemat som kodas iavroBin
enligt to_avro(). -
options
: En valfriMAP<STRING,STRING>
literal som anger direktiv.
Returer
A STRUCT
med fältnamn och typer baserat på resultatet av schema_of_json(jsonStr).
avroBin
måste vara välformulerad med avseende på avroSchemaSpec
och options
eller Databricks genererar ett undantag.
Kommentar
Följande alternativ stöds oftast:
Alternativ | Värde | beskrivning |
---|---|---|
'mode' |
'PERMISSIVE' , 'FAILFAST' |
I PERMISSIVE läget är alla skadade objekt eller fält i ett objekt inställda på i stället för att NULL skapa ett fel. |
compression |
'uncompressed' , 'snappy' , 'deflade ', 'bzip2' , , 'xz' 'zstandard' |
Anger den komprimeringskodc som används för att koda Avro-data. |
Fler alternativ finns i Läsa och skriva strömmande Avro-data.
Exempel
> 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}