Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Funktionen
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: EttBINARYuttryck som anger en rad med Avro-data. -
avroSchemaSpec: Målschemat i JSON-format. Det måste matcha schemat som kodas iavroBinenligt to_avro(). -
options: EnMAP<STRING,STRING>literal som specificerar 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.
Alternativ
| Alternativ | Värden | beskrivning |
|---|---|---|
mode |
FAILFAST, PERMISSIVE |
Felhanteringsläge. Förvald: FAILFAST. I PERMISSIVE läget är skadade poster inställda på i stället för att NULL skapa ett fel. |
compression |
uncompressed, snappy, deflate, bzip2, , , xzzstandard |
Komprimeringskodc för kodning av Avro-data. |
avroSchemaEvolutionMode |
none, restart |
Schemautvecklingsläge. Förvald: none. När den är inställd restartpå genererar frågan ett UnknownFieldException när schemat ändras. Starta om jobbet för att använda det nya schemat. Se Använda schemautvecklingsläge med from_avro. |
recursiveFieldMaxDepth |
Intervall: -1 till 15 |
Maximalt rekursionsdjup längs en enda rekursiv sökväg. Standard: -1, som inte begränsar rekursionsdjupet.När en delad typ kan nås från många distinkta schemasökvägar kan schemaexpansionen leda till att drivrutinen får slut på minne eftersom det här alternativet begränsar djupet endast på en sökväg. Så här löser du följande:
|
Exempel
> 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}